diff options
Diffstat (limited to 'openstackclient/tests/functional')
7 files changed, 421 insertions, 64 deletions
diff --git a/openstackclient/tests/functional/common/test_quota.py b/openstackclient/tests/functional/common/test_quota.py index c1de9aa9..8092b3ce 100644 --- a/openstackclient/tests/functional/common/test_quota.py +++ b/openstackclient/tests/functional/common/test_quota.py @@ -25,6 +25,27 @@ class QuotaTests(base.TestCase): cls.PROJECT_NAME =\ cls.get_openstack_configuration_value('auth.project_name') + def test_quota_list_network_option(self): + self.openstack('quota set --networks 40 ' + + self.PROJECT_NAME) + raw_output = self.openstack('quota list --network') + self.assertIsNotNone(raw_output) + self.assertIn("40", raw_output) + + def test_quota_list_compute_option(self): + self.openstack('quota set --instances 40 ' + + self.PROJECT_NAME) + raw_output = self.openstack('quota list --compute') + self.assertIsNotNone(raw_output) + self.assertIn("40", raw_output) + + def test_quota_list_volume_option(self): + self.openstack('quota set --backups 40 ' + + self.PROJECT_NAME) + raw_output = self.openstack('quota list --volume') + self.assertIsNotNone(raw_output) + self.assertIn("40", raw_output) + def test_quota_set(self): self.openstack('quota set --instances 11 --volumes 11 --networks 11 ' + self.PROJECT_NAME) diff --git a/openstackclient/tests/functional/network/v2/test_network.py b/openstackclient/tests/functional/network/v2/test_network.py index 12636558..0e10bfce 100644 --- a/openstackclient/tests/functional/network/v2/test_network.py +++ b/openstackclient/tests/functional/network/v2/test_network.py @@ -238,6 +238,49 @@ class NetworkTests(base.TestCase): self.assertIn(name1, col_name) self.assertNotIn(name2, col_name) + def test_network_dhcp_agent(self): + name1 = uuid.uuid4().hex + cmd_output1 = json.loads(self.openstack( + 'network create -f json ' + + '--description aaaa ' + + name1 + )) + + self.addCleanup(self.openstack, 'network delete ' + name1) + + # Get network ID + network_id = cmd_output1['id'] + + # Get DHCP Agent ID + cmd_output2 = json.loads(self.openstack( + 'network agent list -f json --agent-type dhcp' + )) + agent_id = cmd_output2[0]['ID'] + + # Add Agent to Network + self.openstack( + 'network agent add network --dhcp ' + + agent_id + ' ' + network_id + ) + + # Test network list --agent + cmd_output3 = json.loads(self.openstack( + 'network list -f json --agent ' + agent_id + )) + + # Cleanup + # Remove Agent from Network + self.openstack( + 'network agent remove network --dhcp ' + + agent_id + ' ' + network_id + ) + + # Assert + col_name = [x["ID"] for x in cmd_output3] + self.assertIn( + network_id, col_name + ) + def test_network_set(self): """Tests create options, set, show, delete""" name = uuid.uuid4().hex diff --git a/openstackclient/tests/functional/network/v2/test_network_agent.py b/openstackclient/tests/functional/network/v2/test_network_agent.py index dd6112e7..6da721d1 100644 --- a/openstackclient/tests/functional/network/v2/test_network_agent.py +++ b/openstackclient/tests/functional/network/v2/test_network_agent.py @@ -10,6 +10,9 @@ # License for the specific language governing permissions and limitations # under the License. +import json +import uuid + from openstackclient.tests.functional import base @@ -39,3 +42,52 @@ class NetworkAgentTests(base.TestCase): self.openstack('network agent set --enable ' + self.IDs[0]) raw_output = self.openstack('network agent show ' + self.IDs[0] + opts) self.assertEqual("UP\n", raw_output) + + +class NetworkAgentListTests(base.TestCase): + """Functional test for network agent list --network. """ + + def test_network_dhcp_agent_list(self): + """Test network agent list""" + + name1 = uuid.uuid4().hex + cmd_output1 = json.loads(self.openstack( + 'network create -f json ' + + '--description aaaa ' + + name1 + )) + + self.addCleanup(self.openstack, 'network delete ' + name1) + + # Get network ID + network_id = cmd_output1['id'] + + # Get DHCP Agent ID + cmd_output2 = json.loads(self.openstack( + 'network agent list -f json --agent-type dhcp' + )) + agent_id = cmd_output2[0]['ID'] + + # Add Agent to Network + self.openstack( + 'network agent add network --dhcp ' + + agent_id + ' ' + network_id + ) + + # Test network agent list --network + cmd_output3 = json.loads(self.openstack( + 'network agent list -f json --network ' + network_id + )) + + # Cleanup + # Remove Agent from Network + self.openstack( + 'network agent remove network --dhcp ' + + agent_id + ' ' + network_id + ) + + # Assert + col_name = [x["ID"] for x in cmd_output3] + self.assertIn( + agent_id, col_name + ) diff --git a/openstackclient/tests/functional/network/v2/test_network_flavor_profile.py b/openstackclient/tests/functional/network/v2/test_network_flavor_profile.py new file mode 100644 index 00000000..1a82c82b --- /dev/null +++ b/openstackclient/tests/functional/network/v2/test_network_flavor_profile.py @@ -0,0 +1,151 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import json + +from openstackclient.tests.functional import base + + +class NetworkFlavorProfileTests(base.TestCase): + """Functional tests for network flavor-profile.""" + + DESCRIPTION = 'fakedescription' + METAINFO = 'Extrainfo' + + def test_network_flavor_profile_create(self): + json_output = json.loads(self.openstack( + ' network flavor profile create -f json --description ' + + self.DESCRIPTION + ' --enable --metainfo ' + self.METAINFO)) + ID = json_output.get('id') + self.assertIsNotNone(ID) + self.assertEqual( + True, + json_output.get('enabled')) + self.assertEqual( + 'fakedescription', + json_output.get('description')) + self.assertEqual( + 'Extrainfo', + json_output.get('meta_info') + ) + + # Clean up + raw_output = self.openstack('network flavor profile delete ' + ID) + self.assertOutput('', raw_output) + + def test_network_flavor_profile_list(self): + json_output = json.loads(self.openstack( + ' network flavor profile create -f json --description ' + + self.DESCRIPTION + ' --enable --metainfo ' + self.METAINFO)) + ID1 = json_output.get('id') + self.assertIsNotNone(ID1) + self.assertEqual( + True, + json_output.get('enabled')) + self.assertEqual( + 'fakedescription', + json_output.get('description')) + self.assertEqual( + 'Extrainfo', + json_output.get('meta_info') + ) + + json_output = json.loads(self.openstack( + ' network flavor profile create -f json --description ' + + self.DESCRIPTION + ' --disable --metainfo ' + self.METAINFO)) + ID2 = json_output.get('id') + self.assertIsNotNone(ID2) + self.assertEqual( + False, + json_output.get('enabled')) + self.assertEqual( + 'fakedescription', + json_output.get('description')) + self.assertEqual( + 'Extrainfo', + json_output.get('meta_info') + ) + + # Test list + json_output = json.loads(self.openstack( + 'network flavor profile list -f json')) + self.assertIsNotNone(json_output) + + id_list = [item.get('ID') for item in json_output] + self.assertIn(ID1, id_list) + self.assertIn(ID2, id_list) + + # Clean up + raw_output = self.openstack( + 'network flavor profile delete ' + ID1 + " " + ID2) + self.assertOutput('', raw_output) + + def test_network_flavor_profile_set(self): + json_output_1 = json.loads(self.openstack( + ' network flavor profile create -f json --description ' + + self.DESCRIPTION + ' --enable --metainfo ' + self.METAINFO)) + ID = json_output_1.get('id') + self.assertIsNotNone(ID) + self.assertEqual( + True, + json_output_1.get('enabled')) + self.assertEqual( + 'fakedescription', + json_output_1.get('description')) + self.assertEqual( + 'Extrainfo', + json_output_1.get('meta_info') + ) + + self.openstack('network flavor profile set --disable ' + ID) + + json_output = json.loads(self.openstack('network flavor profile show ' + '-f json ' + ID)) + self.assertEqual( + False, + json_output.get('enabled')) + self.assertEqual( + 'fakedescription', + json_output.get('description')) + self.assertEqual( + 'Extrainfo', + json_output.get('meta_info') + ) + + # Clean up + raw_output = self.openstack('network flavor profile delete ' + ID) + self.assertOutput('', raw_output) + + def test_network_flavor_profile_show(self): + json_output_1 = json.loads(self.openstack( + ' network flavor profile create -f json --description ' + + self.DESCRIPTION + ' --enable --metainfo ' + self.METAINFO)) + ID = json_output_1.get('id') + self.assertIsNotNone(ID) + json_output = json.loads(self.openstack('network flavor profile show ' + '-f json ' + ID)) + self.assertEqual( + ID, + json_output["id"]) + self.assertEqual( + True, + json_output["enabled"]) + self.assertEqual( + 'fakedescription', + json_output["description"]) + self.assertEqual( + 'Extrainfo', + json_output["meta_info"]) + + # Clean up + raw_output = self.openstack('network flavor profile delete ' + ID) + self.assertOutput('', raw_output) 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) diff --git a/openstackclient/tests/functional/network/v2/test_port.py b/openstackclient/tests/functional/network/v2/test_port.py index 78c57273..bd5eefa5 100644 --- a/openstackclient/tests/functional/network/v2/test_port.py +++ b/openstackclient/tests/functional/network/v2/test_port.py @@ -147,3 +147,22 @@ class PortTests(base.TestCase): 'port show -f json ' + self.NAME )) self.assertEqual('', json_output.get('security_group_ids')) + + def test_port_admin_set(self): + """Test create, set (as admin), show, delete""" + json_output = json.loads(self.openstack( + 'port create -f json ' + + '--network ' + self.NETWORK_NAME + ' ' + self.NAME + )) + id_ = json_output.get('id') + self.addCleanup(self.openstack, 'port delete ' + id_) + + raw_output = self.openstack( + '--os-username admin ' + + 'port set --mac-address 11:22:33:44:55:66 ' + + self.NAME) + self.assertOutput('', raw_output) + json_output = json.loads(self.openstack( + 'port show -f json ' + self.NAME + )) + self.assertEqual(json_output.get('mac_address'), '11:22:33:44:55:66') |
