diff options
| author | Nakul Dahiwade <nakul.dahiwade@intel.com> | 2017-03-01 21:15:10 +0000 |
|---|---|---|
| committer | Nakul Dahiwade <nakul.dahiwade@intel.com> | 2017-03-09 16:57:54 +0000 |
| commit | 289f15a81468e3e134218bf1c2833102b6365f47 (patch) | |
| tree | e0998de8bfe1ba9d6e3d51f3bd08351a139f5bd6 /openstackclient/tests/functional | |
| parent | a93440023b165881ac3a4cb2abb1cb509318449f (diff) | |
| download | python-openstackclient-289f15a81468e3e134218bf1c2833102b6365f47.tar.gz | |
Jsonify meter and meter rule functional tests
Some functional tests try to parse the CLI table output
format, that cause much work on parse string by using
regular expression. Using json format in functional tests
is better and easier way, this patch reworks for meter and
meter rule related tests.
Change-Id: I1f2a95c873a4ed23dd1afa4040900a1c7704d0bf
Diffstat (limited to 'openstackclient/tests/functional')
| -rw-r--r-- | openstackclient/tests/functional/network/v2/test_network_meter.py | 116 | ||||
| -rw-r--r-- | openstackclient/tests/functional/network/v2/test_network_meter_rule.py | 83 |
2 files changed, 135 insertions, 64 deletions
diff --git a/openstackclient/tests/functional/network/v2/test_network_meter.py b/openstackclient/tests/functional/network/v2/test_network_meter.py index 7dce34e7..f73f4812 100644 --- a/openstackclient/tests/functional/network/v2/test_network_meter.py +++ b/openstackclient/tests/functional/network/v2/test_network_meter.py @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. -import re +import json import uuid from openstackclient.tests.functional import base @@ -27,37 +27,45 @@ class TestMeter(base.TestCase): # has its own needs and there are collisions when running # tests in parallel. - @classmethod - def setUpClass(cls): - # Set up some regex for matching below - cls.re_name = re.compile("name\s+\|\s+([^|]+?)\s+\|") - cls.re_shared = re.compile("shared\s+\|\s+(\S+)") - cls.re_description = re.compile("description\s+\|\s+([^|]+?)\s+\|") - def test_meter_delete(self): """Test create, delete multiple""" name1 = uuid.uuid4().hex name2 = uuid.uuid4().hex - - raw_output = self.openstack( - 'network meter create ' + name1, + description = 'fakedescription' + json_output = json.loads(self.openstack( + 'network meter create -f json ' + name1 + ' --description ' + + description) ) self.assertEqual( name1, - re.search(self.re_name, raw_output).group(1), + json_output.get('name'), ) # Check if default shared values self.assertEqual( - 'False', - re.search(self.re_shared, raw_output).group(1) + False, + json_output.get('shared') + ) + self.assertEqual( + 'fakedescription', + json_output.get('description') ) - raw_output = self.openstack( - 'network meter create ' + name2, + json_output_2 = json.loads(self.openstack( + 'network meter create -f json ' + name2 + ' --description ' + + description) ) self.assertEqual( name2, - re.search(self.re_name, raw_output).group(1), + json_output_2.get('name'), + ) + # Check if default shared values + self.assertEqual( + False, + json_output_2.get('shared') + ) + self.assertEqual( + 'fakedescription', + json_output_2.get('description') ) raw_output = self.openstack( @@ -68,35 +76,83 @@ class TestMeter(base.TestCase): def test_meter_list(self): """Test create, list filters, delete""" name1 = uuid.uuid4().hex - raw_output = self.openstack( - 'network meter create --description Test1 --share ' + name1, + json_output = json.loads(self.openstack( + 'network meter create -f json --description Test1 --share ' + + name1) ) self.addCleanup(self.openstack, 'network meter delete ' + name1) self.assertEqual( 'Test1', - re.search(self.re_description, raw_output).group(1), + json_output.get('description'), ) self.assertEqual( - 'True', - re.search(self.re_shared, raw_output).group(1), + True, + json_output.get('shared'), ) name2 = uuid.uuid4().hex - raw_output = self.openstack( - 'network meter create --description Test2 --no-share ' + name2, + json_output_2 = json.loads(self.openstack( + 'network meter create -f json --description Test2 --no-share ' + + name2) ) self.addCleanup(self.openstack, 'network meter delete ' + name2) self.assertEqual( 'Test2', - re.search(self.re_description, raw_output).group(1), + json_output_2.get('description') + ) + self.assertEqual( + False, + json_output_2.get('shared') + ) + + raw_output = json.loads(self.openstack('network meter list -f json')) + name_list = [item.get('Name') for item in raw_output] + self.assertIn(name1, name_list) + self.assertIn(name2, name_list) + + def test_meter_show(self): + """Test create, show, delete""" + name1 = uuid.uuid4().hex + description = 'fakedescription' + json_output = json.loads(self.openstack( + 'network meter create -f json ' + name1 + ' --description ' + + description) + ) + meter_id = json_output.get('id') + self.addCleanup(self.openstack, 'network meter delete ' + name1) + + # Test show with ID + json_output = json.loads(self.openstack( + 'network meter show -f json ' + meter_id) ) self.assertEqual( - 'False', - re.search(self.re_shared, raw_output).group(1), + False, + json_output.get('shared') + ) + self.assertEqual( + 'fakedescription', + json_output.get('description') + ) + self.assertEqual( + name1, + json_output.get('name') ) - raw_output = self.openstack('network meter list') - self.assertIsNotNone(re.search(name1 + "\s+\|\s+Test1", raw_output)) - self.assertIsNotNone(re.search(name2 + "\s+\|\s+Test2", raw_output)) + # Test show with name + json_output = json.loads(self.openstack( + 'network meter show -f json ' + name1) + ) + self.assertEqual( + meter_id, + json_output.get('id') + ) + self.assertEqual( + False, + json_output.get('shared') + ) + self.assertEqual( + 'fakedescription', + json_output.get('description') + ) diff --git a/openstackclient/tests/functional/network/v2/test_network_meter_rule.py b/openstackclient/tests/functional/network/v2/test_network_meter_rule.py index 4f079e3c..d15cdf77 100644 --- a/openstackclient/tests/functional/network/v2/test_network_meter_rule.py +++ b/openstackclient/tests/functional/network/v2/test_network_meter_rule.py @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. -import re +import json import uuid from openstackclient.tests.functional import base @@ -27,19 +27,11 @@ class TestMeterRule(base.TestCase): @classmethod def setUpClass(cls): - # Set up some regex for matching below - cls.re_id = re.compile("id\s+\|\s+(\S+)") - cls.re_direction = re.compile("direction\s+\|\s+(\S+)") - cls.re_ip_prefix = re.compile( - "remote_ip_prefix\s+\|\s+([^|]+?)\s+\|" - ) - cls.re_meter_id = re.compile("metering_label_id\s+\|\s+(\S+)") - - raw_output = cls.openstack( - 'network meter create ' + cls.METER_NAME - ) + json_output = json.loads(cls.openstack( + 'network meter create -f json ' + cls.METER_NAME + )) - cls.METER_ID = re.search(cls.re_id, raw_output).group(1) + cls.METER_ID = json_output.get('id') @classmethod def tearDownClass(cls): @@ -49,58 +41,81 @@ class TestMeterRule(base.TestCase): def test_meter_rule_delete(self): """test create, delete""" - raw_output = self.openstack( - 'network meter rule create ' + + json_output = json.loads(self.openstack( + 'network meter rule create -f json ' + '--remote-ip-prefix 10.0.0.0/8 ' + self.METER_ID - ) - rule_id = re.search(self.re_id, raw_output).group(1) - re_ip = re.search(self.re_ip_prefix, raw_output) + )) + rule_id = json_output.get('id') + re_ip = json_output.get('remote_ip_prefix') self.addCleanup(self.openstack, 'network meter rule delete ' + rule_id) self.assertIsNotNone(re_ip) self.assertIsNotNone(rule_id) + self.assertEqual( + '10.0.0.0/8', re_ip + ) def test_meter_rule_list(self): """Test create, list, delete""" - raw_output = self.openstack( - 'network meter rule create ' + + json_output = json.loads(self.openstack( + 'network meter rule create -f json ' + '--remote-ip-prefix 10.0.0.0/8 ' + self.METER_ID - ) - rule_id = re.search(self.re_id, raw_output).group(1) + )) + rule_id_1 = json_output.get('id') self.addCleanup(self.openstack, - 'network meter rule delete ' + rule_id) + 'network meter rule delete ' + rule_id_1) self.assertEqual( '10.0.0.0/8', - re.search(self.re_ip_prefix, raw_output).group(1) + json_output.get('remote_ip_prefix') ) - raw_output = self.openstack('network meter rule list') - self.assertIsNotNone(re.search(rule_id + "|\s+\|\s+\|\s+10.0.0.0/8", - raw_output)) + json_output_1 = json.loads(self.openstack( + 'network meter rule create -f json ' + + '--remote-ip-prefix 11.0.0.0/8 ' + + self.METER_ID + )) + rule_id_2 = json_output_1.get('id') + self.addCleanup(self.openstack, + 'network meter rule delete ' + rule_id_2) + self.assertEqual( + '11.0.0.0/8', + json_output_1.get('remote_ip_prefix') + ) + + json_output = json.loads(self.openstack('network meter rule list -f ' + 'json')) + rule_id_list = [item.get('ID') for item in json_output] + ip_prefix_list = [item.get('Remote IP Prefix') for item in json_output] + self.assertIn(rule_id_1, rule_id_list) + self.assertIn(rule_id_2, rule_id_list) + self.assertIn('10.0.0.0/8', ip_prefix_list) + self.assertIn('11.0.0.0/8', ip_prefix_list) def test_meter_rule_show(self): + """Test create, show, delete""" - raw_output = self.openstack( - 'network meter rule create ' + + json_output = json.loads(self.openstack( + 'network meter rule create -f json ' + '--remote-ip-prefix 10.0.0.0/8 ' + '--egress ' + self.METER_ID - ) - rule_id = re.search(self.re_id, raw_output).group(1) + )) + rule_id = json_output.get('id') self.assertEqual( 'egress', - re.search(self.re_direction, raw_output).group(1) + json_output.get('direction') ) - raw_output = self.openstack('network meter rule show ' + rule_id) + json_output = json.loads(self.openstack('network meter rule show' + ' -f json ' + rule_id)) self.assertEqual( '10.0.0.0/8', - re.search(self.re_ip_prefix, raw_output).group(1) + json_output.get('remote_ip_prefix') ) self.assertIsNotNone(rule_id) |
