From 321fbbcd52cd68418079ef8d04dc9d9941c94adc Mon Sep 17 00:00:00 2001 From: Ken'ichi Ohmichi Date: Mon, 1 May 2017 17:02:42 -0700 Subject: [PATCH] Move network admin test classes under admin path The moved test classes inherit from an admin test class, and it would be nice to exist under admin path like the other test classes. NOTE: These test classes are not used from the other projects which include Defcore. It is not necessary to take care of this move. Change-Id: Ie1ba523dbe1ea88ce27a16d9975192d5ce752075 --- .../{ => admin}/test_metering_extensions.py | 0 tempest/api/network/admin/test_ports.py | 99 +++++++++++++++++++ tempest/api/network/test_ports.py | 80 --------------- 3 files changed, 99 insertions(+), 80 deletions(-) rename tempest/api/network/{ => admin}/test_metering_extensions.py (100%) create mode 100644 tempest/api/network/admin/test_ports.py diff --git a/tempest/api/network/test_metering_extensions.py b/tempest/api/network/admin/test_metering_extensions.py similarity index 100% rename from tempest/api/network/test_metering_extensions.py rename to tempest/api/network/admin/test_metering_extensions.py diff --git a/tempest/api/network/admin/test_ports.py b/tempest/api/network/admin/test_ports.py new file mode 100644 index 0000000000..807994b9f4 --- /dev/null +++ b/tempest/api/network/admin/test_ports.py @@ -0,0 +1,99 @@ +# Copyright 2014 OpenStack Foundation +# All Rights Reserved. +# +# 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 socket + +from tempest.api.network import base +from tempest import config +from tempest.lib import decorators + +CONF = config.CONF + + +class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest): + + @classmethod + def resource_setup(cls): + super(PortsAdminExtendedAttrsTestJSON, cls).resource_setup() + cls.network = cls.create_network() + cls.host_id = socket.gethostname() + + @decorators.idempotent_id('8e8569c1-9ac7-44db-8bc1-f5fb2814f29b') + def test_create_port_binding_ext_attr(self): + post_body = {"network_id": self.network['id'], + "binding:host_id": self.host_id} + body = self.admin_ports_client.create_port(**post_body) + port = body['port'] + self.addCleanup(self.admin_ports_client.delete_port, port['id']) + host_id = port['binding:host_id'] + self.assertIsNotNone(host_id) + self.assertEqual(self.host_id, host_id) + + @decorators.idempotent_id('6f6c412c-711f-444d-8502-0ac30fbf5dd5') + def test_update_port_binding_ext_attr(self): + post_body = {"network_id": self.network['id']} + body = self.admin_ports_client.create_port(**post_body) + port = body['port'] + self.addCleanup(self.admin_ports_client.delete_port, port['id']) + update_body = {"binding:host_id": self.host_id} + body = self.admin_ports_client.update_port(port['id'], **update_body) + updated_port = body['port'] + host_id = updated_port['binding:host_id'] + self.assertIsNotNone(host_id) + self.assertEqual(self.host_id, host_id) + + @decorators.idempotent_id('1c82a44a-6c6e-48ff-89e1-abe7eaf8f9f8') + def test_list_ports_binding_ext_attr(self): + # Create a new port + post_body = {"network_id": self.network['id']} + body = self.admin_ports_client.create_port(**post_body) + port = body['port'] + self.addCleanup(self.admin_ports_client.delete_port, port['id']) + + # Update the port's binding attributes so that is now 'bound' + # to a host + update_body = {"binding:host_id": self.host_id} + self.admin_ports_client.update_port(port['id'], **update_body) + + # List all ports, ensure new port is part of list and its binding + # attributes are set and accurate + body = self.admin_ports_client.list_ports() + ports_list = body['ports'] + pids_list = [p['id'] for p in ports_list] + self.assertIn(port['id'], pids_list) + listed_port = [p for p in ports_list if p['id'] == port['id']] + self.assertEqual(1, len(listed_port), + 'Multiple ports listed with id %s in ports listing: ' + '%s' % (port['id'], ports_list)) + self.assertEqual(self.host_id, listed_port[0]['binding:host_id']) + + @decorators.idempotent_id('b54ac0ff-35fc-4c79-9ca3-c7dbd4ea4f13') + def test_show_port_binding_ext_attr(self): + body = self.admin_ports_client.create_port( + network_id=self.network['id']) + port = body['port'] + self.addCleanup(self.admin_ports_client.delete_port, port['id']) + body = self.admin_ports_client.show_port(port['id']) + show_port = body['port'] + self.assertEqual(port['binding:host_id'], + show_port['binding:host_id']) + self.assertEqual(port['binding:vif_type'], + show_port['binding:vif_type']) + self.assertEqual(port['binding:vif_details'], + show_port['binding:vif_details']) + + +class PortsAdminExtendedAttrsIpV6TestJSON(PortsAdminExtendedAttrsTestJSON): + _ip_version = 6 diff --git a/tempest/api/network/test_ports.py b/tempest/api/network/test_ports.py index 69a1441b46..f81927d7ad 100644 --- a/tempest/api/network/test_ports.py +++ b/tempest/api/network/test_ports.py @@ -13,12 +13,9 @@ # License for the specific language governing permissions and limitations # under the License. -import socket - import netaddr import testtools -from tempest.api.network import base from tempest.api.network import base_security_groups as sec_base from tempest.common import custom_matchers from tempest import config @@ -358,82 +355,5 @@ class PortsTestJSON(sec_base.BaseSecGroupTest): self.assertEmpty(port['security_groups']) -class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest): - - @classmethod - def resource_setup(cls): - super(PortsAdminExtendedAttrsTestJSON, cls).resource_setup() - cls.network = cls.create_network() - cls.host_id = socket.gethostname() - - @decorators.idempotent_id('8e8569c1-9ac7-44db-8bc1-f5fb2814f29b') - def test_create_port_binding_ext_attr(self): - post_body = {"network_id": self.network['id'], - "binding:host_id": self.host_id} - body = self.admin_ports_client.create_port(**post_body) - port = body['port'] - self.addCleanup(self.admin_ports_client.delete_port, port['id']) - host_id = port['binding:host_id'] - self.assertIsNotNone(host_id) - self.assertEqual(self.host_id, host_id) - - @decorators.idempotent_id('6f6c412c-711f-444d-8502-0ac30fbf5dd5') - def test_update_port_binding_ext_attr(self): - post_body = {"network_id": self.network['id']} - body = self.admin_ports_client.create_port(**post_body) - port = body['port'] - self.addCleanup(self.admin_ports_client.delete_port, port['id']) - update_body = {"binding:host_id": self.host_id} - body = self.admin_ports_client.update_port(port['id'], **update_body) - updated_port = body['port'] - host_id = updated_port['binding:host_id'] - self.assertIsNotNone(host_id) - self.assertEqual(self.host_id, host_id) - - @decorators.idempotent_id('1c82a44a-6c6e-48ff-89e1-abe7eaf8f9f8') - def test_list_ports_binding_ext_attr(self): - # Create a new port - post_body = {"network_id": self.network['id']} - body = self.admin_ports_client.create_port(**post_body) - port = body['port'] - self.addCleanup(self.admin_ports_client.delete_port, port['id']) - - # Update the port's binding attributes so that is now 'bound' - # to a host - update_body = {"binding:host_id": self.host_id} - self.admin_ports_client.update_port(port['id'], **update_body) - - # List all ports, ensure new port is part of list and its binding - # attributes are set and accurate - body = self.admin_ports_client.list_ports() - ports_list = body['ports'] - pids_list = [p['id'] for p in ports_list] - self.assertIn(port['id'], pids_list) - listed_port = [p for p in ports_list if p['id'] == port['id']] - self.assertEqual(1, len(listed_port), - 'Multiple ports listed with id %s in ports listing: ' - '%s' % (port['id'], ports_list)) - self.assertEqual(self.host_id, listed_port[0]['binding:host_id']) - - @decorators.idempotent_id('b54ac0ff-35fc-4c79-9ca3-c7dbd4ea4f13') - def test_show_port_binding_ext_attr(self): - body = self.admin_ports_client.create_port( - network_id=self.network['id']) - port = body['port'] - self.addCleanup(self.admin_ports_client.delete_port, port['id']) - body = self.admin_ports_client.show_port(port['id']) - show_port = body['port'] - self.assertEqual(port['binding:host_id'], - show_port['binding:host_id']) - self.assertEqual(port['binding:vif_type'], - show_port['binding:vif_type']) - self.assertEqual(port['binding:vif_details'], - show_port['binding:vif_details']) - - class PortsIpV6TestJSON(PortsTestJSON): _ip_version = 6 - - -class PortsAdminExtendedAttrsIpV6TestJSON(PortsAdminExtendedAttrsTestJSON): - _ip_version = 6