neutron-tempest-plugin/neutron_tempest_plugin/api/test_timestamp.py
Federico Ressi e570de6389 Update test cases after security group menthods improvements.
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
2018-12-04 09:16:30 +00:00

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'])