diff --git a/common/contrail_test_init.py b/common/contrail_test_init.py index a0796d4ab..05b695af0 100755 --- a/common/contrail_test_init.py +++ b/common/contrail_test_init.py @@ -106,6 +106,8 @@ def __init__( 'Basic', 'auth_port', None) self.multi_tenancy = read_config_option(self.config, 'Basic', 'multiTenancy', False) + self.enable_ceilometer = read_config_option(self.config, + 'Basic', 'enable_ceilometer', False) # Possible af values 'v4', 'v6' or 'dual' # address_family = read_config_option(self.config, # 'Basic', 'AddressFamily', 'dual') diff --git a/scripts/ceilometer_tests/base.py b/scripts/ceilometer_tests/base.py index f35e92b72..ec58c730c 100644 --- a/scripts/ceilometer_tests/base.py +++ b/scripts/ceilometer_tests/base.py @@ -11,6 +11,10 @@ class CeilometerBaseTest(test.BaseTestCase): @classmethod def setUpClass(cls): super(CeilometerBaseTest, cls).setUpClass() + if not cls.inputs.enable_ceilometer: + inst = cls() + raise inst.skipTest( + "Skipping Test.Ceilometer not enabled in the setup") cls.isolated_creds = isolated_creds.IsolatedCreds(cls.__name__, cls.inputs, ini_file = cls.ini_file, logger = cls.logger) cls.isolated_creds.setUp() cls.project = cls.isolated_creds.create_tenant() @@ -116,7 +120,7 @@ def setup_common_objects(self, inputs , connections): self.vm1_fixture.wait_till_vm_up() assert self.vm1_fixture.ping_with_certainty('8.8.8.8') - assert self.vm1_fixture.ping_to_ip('8.8.8.8',count = '100') + assert self.vm1_fixture.ping_to_ip('8.8.8.8',count = '10') # Removing further projects from floating IP pool. For cleanup self.logger.info('Removing project %s to FIP pool %s' % (self.inputs.project_name, fip_pool_name)) diff --git a/scripts/ceilometer_tests/test_ceilometer.py b/scripts/ceilometer_tests/test_ceilometer.py index 6135348bf..4f05a045d 100644 --- a/scripts/ceilometer_tests/test_ceilometer.py +++ b/scripts/ceilometer_tests/test_ceilometer.py @@ -39,8 +39,8 @@ def runTest(self): # end runTest @preposttest_wrapper - def test_meters(self): - """Verifying ceilometer meters""" + def test_resources_by_admin_tenant(self): + """Verifying ceilometer resources - admin tenant""" tenant_id = self.auth.get_project_id('default_domain', 'admin') tenant_id = "".join(tenant_id.split('-')) @@ -55,3 +55,73 @@ def test_meters(self): assert True return True + @preposttest_wrapper + def test_resources_by_user_tenant(self): + """Verifying ceilometer resources - user tenant""" + tenant_id = self.auth.get_project_id('default_domain', + self.inputs.project_name) + tenant_id = "".join(tenant_id.split('-')) + q = ceilometer_client.make_query(tenant_id = tenant_id) + result = None + result = ceilometer_client.resource_list(self.cclient,query=q) + if not result: + self.logger.error("Ceilometer resource list did not work...") + assert False + if result: + self.logger.info("Ceilometer resource list did work...") + assert True + r1 = None + for resource in result: + if (resource.resource_id == self.res.vm1_fixture.vm_id): + self.logger.info("VM shown as resource list ") + r1 = True + else: + continue + if not r1: + self.logger.error("VM NOT shown as resource list ") + assert False + return True + + @test.attr(type=['sanity']) + @preposttest_wrapper + def test_sample_floating_ip_transmit_packets(self): + """ + Verifying ceilometer sample - ip.floating.transmit.packets + Verifying ceilometer sample - ip.floating.receive.packets + Verifying ceilometer sample - ip.floating.transmit.bytes + Verifying ceilometer sample - ip.floating.receive.bytes""" + + self.logger.info('Sleeping for 1 mins for sample to be collected...') + time.sleep(60) + self.logger.info('Starting verification...') + tenant_id = self.auth.get_project_id('default_domain', + self.inputs.project_name) + tenant_id = "".join(tenant_id.split('-')) + q = ceilometer_client.make_query(resource_id = self.res.vm1_fixture.vm_id) + result = None + #result = ceilometer_client.sample_list(self.cclient,'ip.floating.transmit.packets',\ + # query = q) + meters = ['ip.floating.transmit.packets','ip.floating.receive.packets',\ + 'ip.floating.transmit.bytes','ip.floating.receive.bytes'] + for m in meters: + result = ceilometer_client.sample_list(self.cclient,m) + if not result: + self.logger.error("Ceilometer sample list did not work...") + assert False + if result: + self.logger.info("Ceilometer sample list did work for meter %s..."%(m)) + assert True + r1 = None + for sample in result: + metadata = sample.resource_metadata + if (metadata['device_id'] == self.res.vm1_fixture.vm_id): + r1 = sample + else: + continue + if not r1: + self.logger.error("%s meter did not show up in sample list "%(m)) + assert False + else: + self.logger.info("%s meter volumn %s"%(m,r1.counter_volume)) + return True +