e570de6389
Change I50858d5198d8a70a2bb9fb278786c433d7cb12ca improved test case methods for helping reducint test case complexity when handling with security groups. This change use those API improvements to reduce the complexity of existing test cases and to make them easier to read. Change-Id: I8589b31db996702c3da2235fa72182badfd84c02
354 lines
16 KiB
Python
354 lines
16 KiB
Python
# 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 copy
|
|
import time
|
|
|
|
from neutron_lib import constants
|
|
from tempest.common import utils
|
|
from tempest.lib.common.utils import data_utils
|
|
from tempest.lib import decorators
|
|
|
|
from neutron_tempest_plugin.api import base
|
|
from neutron_tempest_plugin.api import base_routers
|
|
from neutron_tempest_plugin import config
|
|
|
|
CONF = config.CONF
|
|
|
|
|
|
class TestTimeStamp(base.BaseAdminNetworkTest):
|
|
|
|
required_extensions = ["standard-attr-timestamp"]
|
|
|
|
# attributes for subnetpool
|
|
min_prefixlen = '28'
|
|
max_prefixlen = '31'
|
|
_ip_version = 4
|
|
subnet_cidr = '10.11.12.0/31'
|
|
new_prefix = '10.11.15.0/24'
|
|
larger_prefix = '10.11.0.0/16'
|
|
|
|
@classmethod
|
|
def resource_setup(cls):
|
|
super(TestTimeStamp, cls).resource_setup()
|
|
prefixes = ['10.11.12.0/24']
|
|
cls._subnetpool_data = {'min_prefixlen': '29', 'prefixes': prefixes}
|
|
|
|
def _create_subnetpool(self, is_admin=False, **kwargs):
|
|
name = data_utils.rand_name('subnetpool')
|
|
subnetpool_data = copy.deepcopy(self._subnetpool_data)
|
|
for key in subnetpool_data.keys():
|
|
kwargs[key] = subnetpool_data[key]
|
|
return self.create_subnetpool(name=name, is_admin=is_admin, **kwargs)
|
|
|
|
@decorators.idempotent_id('462be770-b310-4df9-9c42-773217e4c8b1')
|
|
def test_create_network_with_timestamp(self):
|
|
network = self.create_network()
|
|
# Verifies body contains timestamp fields
|
|
self.assertIsNotNone(network['created_at'])
|
|
self.assertIsNotNone(network['updated_at'])
|
|
|
|
@decorators.idempotent_id('4db5417a-e11c-474d-a361-af00ebef57c5')
|
|
def test_update_network_with_timestamp(self):
|
|
network = self.create_network()
|
|
origin_updated_at = network['updated_at']
|
|
update_body = {'name': network['name'] + 'new'}
|
|
body = self.admin_client.update_network(network['id'],
|
|
**update_body)
|
|
updated_network = body['network']
|
|
new_updated_at = updated_network['updated_at']
|
|
self.assertEqual(network['created_at'], updated_network['created_at'])
|
|
# Verify that origin_updated_at is not same with new_updated_at
|
|
self.assertIsNot(origin_updated_at, new_updated_at)
|
|
|
|
@decorators.idempotent_id('2ac50ab2-7ebd-4e27-b3ce-a9e399faaea2')
|
|
def test_show_networks_attribute_with_timestamp(self):
|
|
network = self.create_network()
|
|
body = self.client.show_network(network['id'])
|
|
show_net = body['network']
|
|
# verify the timestamp from creation and showed is same
|
|
self.assertEqual(network['created_at'],
|
|
show_net['created_at'])
|
|
self.assertEqual(network['updated_at'],
|
|
show_net['updated_at'])
|
|
|
|
@decorators.idempotent_id('8ee55186-454f-4b97-9f9f-eb2772ee891c')
|
|
def test_create_subnet_with_timestamp(self):
|
|
network = self.create_network()
|
|
subnet = self.create_subnet(network)
|
|
# Verifies body contains timestamp fields
|
|
self.assertIsNotNone(subnet['created_at'])
|
|
self.assertIsNotNone(subnet['updated_at'])
|
|
|
|
@decorators.idempotent_id('a490215a-6f4c-4af9-9a4c-57c41f1c4fa1')
|
|
def test_update_subnet_with_timestamp(self):
|
|
network = self.create_network()
|
|
subnet = self.create_subnet(network)
|
|
origin_updated_at = subnet['updated_at']
|
|
update_body = {'name': subnet['name'] + 'new'}
|
|
body = self.admin_client.update_subnet(subnet['id'],
|
|
**update_body)
|
|
updated_subnet = body['subnet']
|
|
new_updated_at = updated_subnet['updated_at']
|
|
self.assertEqual(subnet['created_at'], updated_subnet['created_at'])
|
|
# Verify that origin_updated_at is not same with new_updated_at
|
|
self.assertIsNot(origin_updated_at, new_updated_at)
|
|
|
|
@decorators.idempotent_id('1836a086-e7cf-4141-bf57-0cfe79e8051e')
|
|
def test_show_subnet_attribute_with_timestamp(self):
|
|
network = self.create_network()
|
|
subnet = self.create_subnet(network)
|
|
body = self.client.show_subnet(subnet['id'])
|
|
show_subnet = body['subnet']
|
|
# verify the timestamp from creation and showed is same
|
|
self.assertEqual(subnet['created_at'],
|
|
show_subnet['created_at'])
|
|
self.assertEqual(subnet['updated_at'],
|
|
show_subnet['updated_at'])
|
|
|
|
@decorators.idempotent_id('e2450a7b-d84f-4600-a093-45e78597bbac')
|
|
def test_create_port_with_timestamp(self):
|
|
network = self.create_network()
|
|
port = self.create_port(network)
|
|
# Verifies body contains timestamp fields
|
|
self.assertIsNotNone(port['created_at'])
|
|
self.assertIsNotNone(port['updated_at'])
|
|
|
|
@decorators.idempotent_id('4241e0d3-54b4-46ce-a9a7-093fc764161b')
|
|
def test_update_port_with_timestamp(self):
|
|
network = self.create_network()
|
|
port = self.create_port(network)
|
|
origin_updated_at = port['updated_at']
|
|
update_body = {'name': port['name'] + 'new'}
|
|
body = self.admin_client.update_port(port['id'],
|
|
**update_body)
|
|
updated_port = body['port']
|
|
new_updated_at = updated_port['updated_at']
|
|
self.assertEqual(port['created_at'], updated_port['created_at'])
|
|
# Verify that origin_updated_at is not same with new_updated_at
|
|
self.assertIsNot(origin_updated_at, new_updated_at)
|
|
|
|
@decorators.idempotent_id('584c6723-40b6-4f26-81dd-f508f9d9fb51')
|
|
def test_show_port_attribute_with_timestamp(self):
|
|
network = self.create_network()
|
|
port = self.create_port(network)
|
|
body = self.client.show_port(port['id'])
|
|
show_port = body['port']
|
|
# verify the timestamp from creation and showed is same
|
|
self.assertEqual(port['created_at'],
|
|
show_port['created_at'])
|
|
self.assertEqual(port['updated_at'],
|
|
show_port['updated_at'])
|
|
|
|
@decorators.idempotent_id('87a8b196-4b90-44f0-b7f3-d2057d7d658e')
|
|
def test_create_subnetpool_with_timestamp(self):
|
|
sp = self._create_subnetpool()
|
|
# Verifies body contains timestamp fields
|
|
self.assertIsNotNone(sp['created_at'])
|
|
self.assertIsNotNone(sp['updated_at'])
|
|
|
|
@decorators.idempotent_id('d48c7578-c3d2-4f9b-a7a1-be2008c770a0')
|
|
def test_update_subnetpool_with_timestamp(self):
|
|
sp = self._create_subnetpool()
|
|
origin_updated_at = sp['updated_at']
|
|
update_body = {'name': sp['name'] + 'new',
|
|
'min_prefixlen': self.min_prefixlen,
|
|
'max_prefixlen': self.max_prefixlen}
|
|
body = self.client.update_subnetpool(sp['id'], **update_body)
|
|
updated_sp = body['subnetpool']
|
|
new_updated_at = updated_sp['updated_at']
|
|
self.assertEqual(sp['created_at'], updated_sp['created_at'])
|
|
# Verify that origin_updated_at is not same with new_updated_at
|
|
self.assertIsNot(origin_updated_at, new_updated_at)
|
|
|
|
@decorators.idempotent_id('1d3970e6-bcf7-46cd-b7d7-0807759c73b4')
|
|
def test_show_subnetpool_attribute_with_timestamp(self):
|
|
sp = self._create_subnetpool()
|
|
body = self.client.show_subnetpool(sp['id'])
|
|
show_sp = body['subnetpool']
|
|
# verify the timestamp from creation and showed is same
|
|
self.assertEqual(sp['created_at'], show_sp['created_at'])
|
|
self.assertEqual(sp['updated_at'], show_sp['updated_at'])
|
|
|
|
@decorators.idempotent_id('396a97dc-b66c-4c46-9171-c39eefe6936c')
|
|
@utils.requires_ext(extension="standard-attr-segment", service="network")
|
|
def test_segment_with_timestamp(self):
|
|
network = self.create_network()
|
|
segment = self.admin_client.list_segments(
|
|
network_id=network['id'])['segments'][0]
|
|
# Verifies body contains timestamp fields
|
|
self.assertIsNotNone(segment['created_at'])
|
|
self.assertIsNotNone(segment['updated_at'])
|
|
|
|
body = self.admin_client.show_segment(segment['id'])
|
|
show_segment = body['segment']
|
|
# verify the timestamp from creation and showed is same
|
|
self.assertEqual(segment['created_at'], show_segment['created_at'])
|
|
self.assertEqual(segment['updated_at'], show_segment['updated_at'])
|
|
|
|
origin_updated_at = segment['updated_at']
|
|
update_body = {'name': str(segment['name']) + 'new'}
|
|
body = self.admin_client.update_segment(segment['id'], **update_body)
|
|
updated_segment = body['segment']
|
|
new_updated_at = updated_segment['updated_at']
|
|
self.assertEqual(segment['created_at'], updated_segment['created_at'])
|
|
# Verify that origin_updated_at is not same with new_updated_at
|
|
self.assertIsNot(origin_updated_at, new_updated_at)
|
|
|
|
|
|
class TestTimeStampWithL3(base_routers.BaseRouterTest):
|
|
|
|
required_extensions = ['standard-attr-timestamp']
|
|
|
|
@classmethod
|
|
def resource_setup(cls):
|
|
super(TestTimeStampWithL3, cls).resource_setup()
|
|
cls.ext_net_id = CONF.network.public_network_id
|
|
|
|
@decorators.idempotent_id('433ba770-b310-4da9-5d42-733217a1c7b1')
|
|
def test_create_router_with_timestamp(self):
|
|
router = self.create_router(router_name='test')
|
|
# Verifies body contains timestamp fields
|
|
self.assertIsNotNone(router['created_at'])
|
|
self.assertIsNotNone(router['updated_at'])
|
|
|
|
@decorators.idempotent_id('4a65417a-c11c-4b4d-a351-af01abcf57c6')
|
|
def test_update_router_with_timestamp(self):
|
|
router = self.create_router(router_name='test')
|
|
origin_updated_at = router['updated_at']
|
|
update_body = {'name': router['name'] + 'new'}
|
|
body = self.client.update_router(router['id'], **update_body)
|
|
updated_router = body['router']
|
|
new_updated_at = updated_router['updated_at']
|
|
self.assertEqual(router['created_at'], updated_router['created_at'])
|
|
# Verify that origin_updated_at is not same with new_updated_at
|
|
self.assertIsNot(origin_updated_at, new_updated_at)
|
|
|
|
@decorators.idempotent_id('1ab50ac2-7cbd-4a17-b23e-a9e36cfa4ec2')
|
|
def test_show_router_attribute_with_timestamp(self):
|
|
router = self.create_router(router_name='test')
|
|
body = self.client.show_router(router['id'])
|
|
show_router = body['router']
|
|
# verify the timestamp from creation and showed is same
|
|
self.assertEqual(router['created_at'],
|
|
show_router['created_at'])
|
|
# 'updated_at' timestamp can change immediately after creation
|
|
# if environment is HA or DVR, so just make sure it's >=
|
|
self.assertGreaterEqual(show_router['updated_at'],
|
|
router['updated_at'])
|
|
|
|
@decorators.idempotent_id('8ae55186-464f-4b87-1c9f-eb2765ee81ac')
|
|
def test_create_floatingip_with_timestamp(self):
|
|
fip = self.create_floatingip()
|
|
# Verifies body contains timestamp fields
|
|
self.assertIsNotNone(fip['created_at'])
|
|
self.assertIsNotNone(fip['updated_at'])
|
|
|
|
@decorators.idempotent_id('a3ac215a-61ac-13f9-9d3c-57c51f11afa1')
|
|
def test_update_floatingip_with_timestamp(self):
|
|
fip = self.create_floatingip()
|
|
origin_updated_at = fip['updated_at']
|
|
update_body = {'description': 'new'}
|
|
body = self.client.update_floatingip(fip['id'], **update_body)
|
|
updated_fip = body['floatingip']
|
|
new_updated_at = updated_fip['updated_at']
|
|
self.assertEqual(fip['created_at'], updated_fip['created_at'])
|
|
# Verify that origin_updated_at is not same with new_updated_at
|
|
self.assertIsNot(origin_updated_at, new_updated_at)
|
|
|
|
@decorators.idempotent_id('32a6a086-e1ef-413b-b13a-0cfe13ef051e')
|
|
def test_show_floatingip_attribute_with_timestamp(self):
|
|
fip = self.create_floatingip()
|
|
body = self.client.show_floatingip(fip['id'])
|
|
show_fip = body['floatingip']
|
|
# verify the timestamp from creation and showed is same
|
|
self.assertEqual(fip['created_at'],
|
|
show_fip['created_at'])
|
|
self.assertEqual(fip['updated_at'],
|
|
show_fip['updated_at'])
|
|
|
|
|
|
class TestTimeStampWithSecurityGroup(base.BaseNetworkTest):
|
|
|
|
required_extensions = ['standard-attr-timestamp']
|
|
|
|
@classmethod
|
|
def resource_setup(cls):
|
|
super(TestTimeStampWithSecurityGroup, cls).resource_setup()
|
|
cls.ext_net_id = CONF.network.public_network_id
|
|
|
|
@decorators.idempotent_id('a3150a7b-d31a-423a-abf3-45e71c97cbac')
|
|
def test_create_sg_with_timestamp(self):
|
|
security_group = self.create_security_group()
|
|
# Verifies body contains timestamp fields
|
|
self.assertIsNotNone(security_group['created_at'])
|
|
self.assertIsNotNone(security_group['updated_at'])
|
|
|
|
@decorators.idempotent_id('432ae0d3-32b4-413e-a9b3-091ac76da31b')
|
|
def test_update_sg_with_timestamp(self):
|
|
security_group = self.create_security_group()
|
|
|
|
# Make sure update time will be different
|
|
time.sleep(2.)
|
|
updated_security_group = self.client.update_security_group(
|
|
security_group['id'], name=security_group['name'] + 'new')[
|
|
'security_group']
|
|
|
|
# Verify that created_at hasn't changed
|
|
self.assertEqual(security_group['created_at'],
|
|
updated_security_group['created_at'])
|
|
# Verify that updated_at has changed
|
|
self.assertNotEqual(security_group['updated_at'],
|
|
updated_security_group['updated_at'])
|
|
|
|
@decorators.idempotent_id('521e6723-43d6-12a6-8c3d-f5042ad9fc32')
|
|
def test_show_sg_attribute_with_timestamp(self):
|
|
security_group = self.create_security_group()
|
|
observed_security_group = self.client.show_security_group(
|
|
security_group['id'])['security_group']
|
|
|
|
# Verify that created_at hasn't changed
|
|
self.assertEqual(security_group['created_at'],
|
|
observed_security_group['created_at'])
|
|
# Verify that updated_at hasn't changed
|
|
self.assertEqual(security_group['updated_at'],
|
|
observed_security_group['updated_at'])
|
|
|
|
def _create_security_group_rule(self):
|
|
security_group = self.create_security_group()
|
|
return self.create_security_group_rule(
|
|
security_group=security_group,
|
|
direction=constants.INGRESS_DIRECTION,
|
|
protocol=constants.PROTO_NAME_TCP,
|
|
port_range_min=77,
|
|
port_range_max=77)
|
|
|
|
@decorators.idempotent_id('83e8bd32-43e0-a3f0-1af3-12a5733c653e')
|
|
def test_create_sgrule_with_timestamp(self):
|
|
security_group_rule = self._create_security_group_rule()
|
|
# Verifies body contains timestamp fields
|
|
self.assertIn('created_at', security_group_rule)
|
|
self.assertIn('updated_at', security_group_rule)
|
|
|
|
@decorators.idempotent_id('143da0e6-ba17-43ad-b3d7-03aa759c3cb4')
|
|
def test_show_sgrule_attribute_with_timestamp(self):
|
|
security_group_rule = self._create_security_group_rule()
|
|
|
|
observed_security_group_rule = self.client.show_security_group_rule(
|
|
security_group_rule['id'])['security_group_rule']
|
|
|
|
# Verify the time stamp from creation and showed are equal
|
|
self.assertEqual(security_group_rule['created_at'],
|
|
observed_security_group_rule['created_at'])
|
|
self.assertEqual(security_group_rule['updated_at'],
|
|
observed_security_group_rule['updated_at'])
|