Add error test coverage and adjust test setup
The `setup_config_file` was modified to have a `write_config` method that abstracts the file writing so that we can modify multiple types of config settings. Also, the empty IP Queue test is mostly self-contained, but it does clean up a global variable that's modified, just in case. Because of the size of the test code change itself, this patch doesn't include any changes to the dynamic inventory script itself. Change-Id: If6adb9c55fd03f2e5b7b21469667971767663075
This commit is contained in:
parent
99a190be9b
commit
5a931c7df7
@ -4,6 +4,7 @@ import collections
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
from os import path
|
from os import path
|
||||||
|
import Queue
|
||||||
import sys
|
import sys
|
||||||
import unittest
|
import unittest
|
||||||
import yaml
|
import yaml
|
||||||
@ -288,7 +289,7 @@ class TestEnvironments(unittest.TestCase):
|
|||||||
self.assertIn(key, self.loaded_environment)
|
self.assertIn(key, self.loaded_environment)
|
||||||
|
|
||||||
|
|
||||||
class TestDuplicateIps(unittest.TestCase):
|
class TestIps(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
# Allow custom assertion errors.
|
# Allow custom assertion errors.
|
||||||
self.longMessage = True
|
self.longMessage = True
|
||||||
@ -312,6 +313,20 @@ class TestDuplicateIps(unittest.TestCase):
|
|||||||
self.assertEqual(1, ips[addr],
|
self.assertEqual(1, ips[addr],
|
||||||
msg="IP %s duplicated." % addr)
|
msg="IP %s duplicated." % addr)
|
||||||
|
|
||||||
|
def test_empty_ip_queue(self):
|
||||||
|
q = Queue.Queue()
|
||||||
|
with self.assertRaises(SystemExit) as context:
|
||||||
|
di.get_ip_address('test', q)
|
||||||
|
expectedLog = ("Cannot retrieve requested amount of IP addresses. "
|
||||||
|
"Increase the test range in your "
|
||||||
|
"openstack_user_config.yml.")
|
||||||
|
self.assertEqual(context.exception.message, expectedLog)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
# Since the get_ip_address function touches USED_IPS,
|
||||||
|
# and USED_IPS is currently a global var, make sure we clean it out
|
||||||
|
di.USED_IPS = []
|
||||||
|
|
||||||
|
|
||||||
class TestConfigChecks(unittest.TestCase):
|
class TestConfigChecks(unittest.TestCase):
|
||||||
|
|
||||||
@ -320,7 +335,7 @@ class TestConfigChecks(unittest.TestCase):
|
|||||||
with open(USER_CONFIG_FILE, 'rb') as f:
|
with open(USER_CONFIG_FILE, 'rb') as f:
|
||||||
self.user_defined_config.update(yaml.safe_load(f.read()) or {})
|
self.user_defined_config.update(yaml.safe_load(f.read()) or {})
|
||||||
|
|
||||||
def setup_config_file(self, user_defined_config, key):
|
def delete_config_key(self, user_defined_config, key):
|
||||||
try:
|
try:
|
||||||
if key in user_defined_config:
|
if key in user_defined_config:
|
||||||
del user_defined_config[key]
|
del user_defined_config[key]
|
||||||
@ -329,15 +344,45 @@ class TestConfigChecks(unittest.TestCase):
|
|||||||
else:
|
else:
|
||||||
raise KeyError("can't find specified key in user config")
|
raise KeyError("can't find specified key in user config")
|
||||||
finally:
|
finally:
|
||||||
# rename temporarily our user_config_file so we can use the new one
|
self.write_config()
|
||||||
os.rename(USER_CONFIG_FILE, USER_CONFIG_FILE + ".tmp")
|
|
||||||
# Save new user_config_file
|
def delete_provider_network(self, net_name):
|
||||||
with open(USER_CONFIG_FILE, 'wb') as f:
|
del self.user_defined_config['cidr_networks'][net_name]
|
||||||
f.write(yaml.dump(user_defined_config))
|
self.write_config()
|
||||||
|
|
||||||
|
def write_config(self):
|
||||||
|
# rename temporarily our user_config_file so we can use the new one
|
||||||
|
os.rename(USER_CONFIG_FILE, USER_CONFIG_FILE + ".tmp")
|
||||||
|
# Save new user_config_file
|
||||||
|
with open(USER_CONFIG_FILE, 'wb') as f:
|
||||||
|
f.write(yaml.dump(self.user_defined_config))
|
||||||
|
|
||||||
|
def test_missing_container_cidr_network(self):
|
||||||
|
self.delete_provider_network('container')
|
||||||
|
with self.assertRaises(SystemExit) as context:
|
||||||
|
get_inventory()
|
||||||
|
expectedLog = ("No container or management network specified in "
|
||||||
|
"user config.")
|
||||||
|
self.assertEqual(context.exception.message, expectedLog)
|
||||||
|
|
||||||
|
def test_missing_cidr_network_present_in_provider(self):
|
||||||
|
self.delete_provider_network('storage')
|
||||||
|
with self.assertRaises(SystemExit) as context:
|
||||||
|
get_inventory()
|
||||||
|
expectedLog = "can't find storage in cidr_networks"
|
||||||
|
self.assertEqual(context.exception.message, expectedLog)
|
||||||
|
|
||||||
|
def test_missing_cidr_networks_key(self):
|
||||||
|
del self.user_defined_config['cidr_networks']
|
||||||
|
self.write_config()
|
||||||
|
with self.assertRaises(SystemExit) as context:
|
||||||
|
get_inventory()
|
||||||
|
expectedLog = "No container CIDR specified in user config"
|
||||||
|
self.assertEqual(context.exception.message, expectedLog)
|
||||||
|
|
||||||
def test_provider_networks_check(self):
|
def test_provider_networks_check(self):
|
||||||
# create config file without provider networks
|
# create config file without provider networks
|
||||||
self.setup_config_file(self.user_defined_config, 'provider_networks')
|
self.delete_config_key(self.user_defined_config, 'provider_networks')
|
||||||
# check if provider networks absence is Caught
|
# check if provider networks absence is Caught
|
||||||
with self.assertRaises(SystemExit) as context:
|
with self.assertRaises(SystemExit) as context:
|
||||||
get_inventory()
|
get_inventory()
|
||||||
@ -346,7 +391,7 @@ class TestConfigChecks(unittest.TestCase):
|
|||||||
|
|
||||||
def test_global_overrides_check(self):
|
def test_global_overrides_check(self):
|
||||||
# create config file without global_overrides
|
# create config file without global_overrides
|
||||||
self.setup_config_file(self.user_defined_config, 'global_overrides')
|
self.delete_config_key(self.user_defined_config, 'global_overrides')
|
||||||
# check if global_overrides absence is Caught
|
# check if global_overrides absence is Caught
|
||||||
with self.assertRaises(SystemExit) as context:
|
with self.assertRaises(SystemExit) as context:
|
||||||
get_inventory()
|
get_inventory()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user