From 2a6dcdbd0ce1966e74ee845a7135141181be15a2 Mon Sep 17 00:00:00 2001 From: zhufl Date: Wed, 4 Mar 2020 15:47:25 +0800 Subject: [PATCH] Adding description for testcases - compute part1 When Tempest is used in customer site, often we are required to provide a testcase list including testcase names and descriptions. Now no this kind of doc is available, however, we can extract info from tempest code to create one, but, some testcases don't have descriptions about what the testcases are testing, so, we can add descrption for each testcase. There are hundreds of testcases missing descriptions, so we can add them gradually, and limit the modified files in one patch for the convenience of reviewing. Change-Id: Id90d6fedccc84aa9548fba62b5926a75050ab443 partially-implements: blueprint testcase-description --- .../compute/admin/test_aggregates_negative.py | 2 ++ tempest/api/compute/admin/test_hosts.py | 5 +++++ .../api/compute/admin/test_hosts_negative.py | 20 ++++++++++++++++--- tempest/api/compute/admin/test_hypervisor.py | 1 + .../compute/admin/test_hypervisor_negative.py | 12 +++++++++-- tempest/api/compute/admin/test_services.py | 3 +++ .../compute/servers/test_multiple_create.py | 3 +++ .../servers/test_multiple_create_negative.py | 5 +++++ 8 files changed, 46 insertions(+), 5 deletions(-) diff --git a/tempest/api/compute/admin/test_aggregates_negative.py b/tempest/api/compute/admin/test_aggregates_negative.py index a6e0efa5bd..d5adfed31a 100644 --- a/tempest/api/compute/admin/test_aggregates_negative.py +++ b/tempest/api/compute/admin/test_aggregates_negative.py @@ -144,6 +144,7 @@ class AggregatesAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('19dd44e1-c435-4ee1-a402-88c4f90b5950') def test_aggregate_add_existent_host(self): + # Adding already existing host to aggregate should fail. self.useFixture(fixtures.LockFixture('availability_zone')) aggregate = self._create_test_aggregate() @@ -172,6 +173,7 @@ class AggregatesAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('95d6a6fa-8da9-4426-84d0-eec0329f2e4d') def test_aggregate_remove_nonexistent_host(self): + # Removing not existing host from aggregate should fail. aggregate = self._create_test_aggregate() self.assertRaises(lib_exc.NotFound, self.client.remove_host, diff --git a/tempest/api/compute/admin/test_hosts.py b/tempest/api/compute/admin/test_hosts.py index c246685a0d..31fe2b531a 100644 --- a/tempest/api/compute/admin/test_hosts.py +++ b/tempest/api/compute/admin/test_hosts.py @@ -29,11 +29,13 @@ class HostsAdminTestJSON(base.BaseV2ComputeAdminTest): @decorators.idempotent_id('9bfaf98d-e2cb-44b0-a07e-2558b2821e4f') def test_list_hosts(self): + # Listing hosts. hosts = self.client.list_hosts()['hosts'] self.assertGreaterEqual(len(hosts), 2, str(hosts)) @decorators.idempotent_id('5dc06f5b-d887-47a2-bb2a-67762ef3c6de') def test_list_hosts_with_zone(self): + # Listing hosts with specified availability zone self.useFixture(fixtures.LockFixture('availability_zone')) hosts = self.client.list_hosts()['hosts'] host = hosts[0] @@ -43,6 +45,7 @@ class HostsAdminTestJSON(base.BaseV2ComputeAdminTest): @decorators.idempotent_id('9af3c171-fbf4-4150-a624-22109733c2a6') def test_list_hosts_with_a_blank_zone(self): + # Listing hosts with blank availability zone. # If send the request with a blank zone, the request will be successful # and it will return all the hosts list hosts = self.client.list_hosts(zone='')['hosts'] @@ -50,6 +53,7 @@ class HostsAdminTestJSON(base.BaseV2ComputeAdminTest): @decorators.idempotent_id('c6ddbadb-c94e-4500-b12f-8ffc43843ff8') def test_list_hosts_with_nonexistent_zone(self): + # Listing hosts with not existing availability zone. # If send the request with a nonexistent zone, the request will be # successful and no hosts will be returned hosts = self.client.list_hosts(zone='xxx')['hosts'] @@ -57,6 +61,7 @@ class HostsAdminTestJSON(base.BaseV2ComputeAdminTest): @decorators.idempotent_id('38adbb12-aee2-4498-8aec-329c72423aa4') def test_show_host_detail(self): + # Showing host details. hosts = self.client.list_hosts()['hosts'] hosts = [host for host in hosts if host['service'] == 'compute'] diff --git a/tempest/api/compute/admin/test_hosts_negative.py b/tempest/api/compute/admin/test_hosts_negative.py index 8a91ae2754..e8733c8633 100644 --- a/tempest/api/compute/admin/test_hosts_negative.py +++ b/tempest/api/compute/admin/test_hosts_negative.py @@ -39,18 +39,21 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('dd032027-0210-4d9c-860e-69b1b8deed5f') def test_list_hosts_with_non_admin_user(self): + # Non admin user is not allowed to list hosts. self.assertRaises(lib_exc.Forbidden, self.non_admin_client.list_hosts) @decorators.attr(type=['negative']) @decorators.idempotent_id('e75b0a1a-041f-47a1-8b4a-b72a6ff36d3f') def test_show_host_detail_with_nonexistent_hostname(self): + # Showing host detail with not existing hostname should fail. self.assertRaises(lib_exc.NotFound, self.client.show_host, 'nonexistent_hostname') @decorators.attr(type=['negative']) @decorators.idempotent_id('19ebe09c-bfd4-4b7c-81a2-e2e0710f59cc') def test_show_host_detail_with_non_admin_user(self): + # Non admin user is not allowed to show host details. self.assertRaises(lib_exc.Forbidden, self.non_admin_client.show_host, self.hostname) @@ -58,6 +61,7 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('e40c72b1-0239-4ed6-ba21-81a184df1f7c') def test_update_host_with_non_admin_user(self): + # Non admin user is not allowed to update host. self.assertRaises(lib_exc.Forbidden, self.non_admin_client.update_host, self.hostname, @@ -67,7 +71,8 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('fbe2bf3e-3246-4a95-a59f-94e4e298ec77') def test_update_host_with_invalid_status(self): - # 'status' can only be 'enable' or 'disable' + # Updating host to invalid status should fail, + # 'status' can only be 'enable' or 'disable'. self.assertRaises(lib_exc.BadRequest, self.client.update_host, self.hostname, @@ -77,7 +82,8 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('ab1e230e-5e22-41a9-8699-82b9947915d4') def test_update_host_with_invalid_maintenance_mode(self): - # 'maintenance_mode' can only be 'enable' or 'disable' + # Updating host to invalid maintenance mode should fail, + # 'maintenance_mode' can only be 'enable' or 'disable'. self.assertRaises(lib_exc.BadRequest, self.client.update_host, self.hostname, @@ -87,7 +93,8 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('0cd85f75-6992-4a4a-b1bd-d11e37fd0eee') def test_update_host_without_param(self): - # 'status' or 'maintenance_mode' needed for host update + # Updating host without param should fail, + # 'status' or 'maintenance_mode' is needed for host update. self.assertRaises(lib_exc.BadRequest, self.client.update_host, self.hostname) @@ -95,6 +102,7 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('23c92146-2100-4d68-b2d6-c7ade970c9c1') def test_update_nonexistent_host(self): + # Updating not existing host should fail. self.assertRaises(lib_exc.NotFound, self.client.update_host, 'nonexistent_hostname', @@ -104,6 +112,7 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('0d981ac3-4320-4898-b674-82b61fbb60e4') def test_startup_nonexistent_host(self): + # Starting up not existing host should fail. self.assertRaises(lib_exc.NotFound, self.client.startup_host, 'nonexistent_hostname') @@ -111,6 +120,7 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('9f4ebb7e-b2ae-4e5b-a38f-0fd1bb0ddfca') def test_startup_host_with_non_admin_user(self): + # Non admin user is not allowed to startup host. self.assertRaises(lib_exc.Forbidden, self.non_admin_client.startup_host, self.hostname) @@ -118,6 +128,7 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('9e637444-29cf-4244-88c8-831ae82c31b6') def test_shutdown_nonexistent_host(self): + # Shutting down not existing host should fail. self.assertRaises(lib_exc.NotFound, self.client.shutdown_host, 'nonexistent_hostname') @@ -125,6 +136,7 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('a803529c-7e3f-4d3c-a7d6-8e1c203d27f6') def test_shutdown_host_with_non_admin_user(self): + # Non admin user is not allowed to shutdown host. self.assertRaises(lib_exc.Forbidden, self.non_admin_client.shutdown_host, self.hostname) @@ -132,6 +144,7 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('f86bfd7b-0b13-4849-ae29-0322e83ee58b') def test_reboot_nonexistent_host(self): + # Rebooting not existing host should fail. self.assertRaises(lib_exc.NotFound, self.client.reboot_host, 'nonexistent_hostname') @@ -139,6 +152,7 @@ class HostsAdminNegativeTestJSON(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('02d79bb9-eb57-4612-abf6-2cb38897d2f8') def test_reboot_host_with_non_admin_user(self): + # Non admin user is not allowed to reboot host. self.assertRaises(lib_exc.Forbidden, self.non_admin_client.reboot_host, self.hostname) diff --git a/tempest/api/compute/admin/test_hypervisor.py b/tempest/api/compute/admin/test_hypervisor.py index 9822c2619c..e45aac5ed5 100644 --- a/tempest/api/compute/admin/test_hypervisor.py +++ b/tempest/api/compute/admin/test_hypervisor.py @@ -134,6 +134,7 @@ class HypervisorAdminUnderV252Test(HypervisorAdminTestBase): @decorators.idempotent_id('d7e1805b-3b14-4a3b-b6fd-50ec6d9f361f') def test_search_hypervisor(self): + # Searching for hypervisors by its name. hypers = self._list_hypervisors() self.assertNotEmpty(hypers, "No hypervisors found.") hypers = self.client.search_hypervisor( diff --git a/tempest/api/compute/admin/test_hypervisor_negative.py b/tempest/api/compute/admin/test_hypervisor_negative.py index 0056376ff3..723b93c79d 100644 --- a/tempest/api/compute/admin/test_hypervisor_negative.py +++ b/tempest/api/compute/admin/test_hypervisor_negative.py @@ -40,8 +40,8 @@ class HypervisorAdminNegativeTestJSON(HypervisorAdminNegativeTestBase): @decorators.attr(type=['negative']) @decorators.idempotent_id('c136086a-0f67-4b2b-bc61-8482bd68989f') def test_show_nonexistent_hypervisor(self): + # Showing not existing hypervisor should fail. nonexistent_hypervisor_id = data_utils.rand_uuid() - self.assertRaises( lib_exc.NotFound, self.client.show_hypervisor, @@ -50,6 +50,7 @@ class HypervisorAdminNegativeTestJSON(HypervisorAdminNegativeTestBase): @decorators.attr(type=['negative']) @decorators.idempotent_id('51e663d0-6b89-4817-a465-20aca0667d03') def test_show_hypervisor_with_non_admin_user(self): + # Non admin user is not allowed to show hypervisor. hypers = self._list_hypervisors() self.assertNotEmpty(hypers) @@ -61,6 +62,7 @@ class HypervisorAdminNegativeTestJSON(HypervisorAdminNegativeTestBase): @decorators.attr(type=['negative']) @decorators.idempotent_id('e2b061bb-13f9-40d8-9d6e-d5bf17595849') def test_get_hypervisor_stats_with_non_admin_user(self): + # Non admin user is not allowed to get hypervisor stats. self.assertRaises( lib_exc.Forbidden, self.non_adm_client.show_hypervisor_statistics) @@ -68,6 +70,7 @@ class HypervisorAdminNegativeTestJSON(HypervisorAdminNegativeTestBase): @decorators.attr(type=['negative']) @decorators.idempotent_id('f60aa680-9a3a-4c7d-90e1-fae3a4891303') def test_get_nonexistent_hypervisor_uptime(self): + # Getting uptime of not existing hypervisor should fail. nonexistent_hypervisor_id = data_utils.rand_uuid() self.assertRaises( @@ -78,6 +81,7 @@ class HypervisorAdminNegativeTestJSON(HypervisorAdminNegativeTestBase): @decorators.attr(type=['negative']) @decorators.idempotent_id('6c3461f9-c04c-4e2a-bebb-71dc9cb47df2') def test_get_hypervisor_uptime_with_non_admin_user(self): + # Non admin user is not allowed to get hypervisor uptime. hypers = self._list_hypervisors() self.assertNotEmpty(hypers) @@ -97,7 +101,7 @@ class HypervisorAdminNegativeTestJSON(HypervisorAdminNegativeTestBase): @decorators.attr(type=['negative']) @decorators.idempotent_id('dc02db05-e801-4c5f-bc8e-d915290ab345') def test_get_hypervisor_list_details_with_non_admin_user(self): - # List of hypervisor details and available services with non admin user + # Non admin user is not allowed to list hypervisor details. self.assertRaises( lib_exc.Forbidden, self.non_adm_client.list_hypervisors, detail=True) @@ -109,6 +113,7 @@ class HypervisorAdminNegativeUnderV252Test(HypervisorAdminNegativeTestBase): @decorators.attr(type=['negative']) @decorators.idempotent_id('2a0a3938-832e-4859-95bf-1c57c236b924') def test_show_servers_with_non_admin_user(self): + # Non admin user is not allowed to show servers on hypervisor. hypers = self._list_hypervisors() self.assertNotEmpty(hypers) @@ -120,6 +125,7 @@ class HypervisorAdminNegativeUnderV252Test(HypervisorAdminNegativeTestBase): @decorators.attr(type=['negative']) @decorators.idempotent_id('02463d69-0ace-4d33-a4a8-93d7883a2bba') def test_show_servers_with_nonexistent_hypervisor(self): + # Showing servers on not existing hypervisor should fail. nonexistent_hypervisor_id = data_utils.rand_uuid() self.assertRaises( @@ -130,6 +136,7 @@ class HypervisorAdminNegativeUnderV252Test(HypervisorAdminNegativeTestBase): @decorators.attr(type=['negative']) @decorators.idempotent_id('5b6a6c79-5dc1-4fa5-9c58-9c8085948e74') def test_search_hypervisor_with_non_admin_user(self): + # Non admin user is not allowed to search hypervisor. hypers = self._list_hypervisors() self.assertNotEmpty(hypers) @@ -141,6 +148,7 @@ class HypervisorAdminNegativeUnderV252Test(HypervisorAdminNegativeTestBase): @decorators.attr(type=['negative']) @decorators.idempotent_id('19a45cc1-1000-4055-b6d2-28e8b2ec4faa') def test_search_nonexistent_hypervisor(self): + # Searching not existing hypervisor should fail. self.assertRaises( lib_exc.NotFound, self.client.search_hypervisor, diff --git a/tempest/api/compute/admin/test_services.py b/tempest/api/compute/admin/test_services.py index 73e191b801..bf846e58c7 100644 --- a/tempest/api/compute/admin/test_services.py +++ b/tempest/api/compute/admin/test_services.py @@ -28,11 +28,13 @@ class ServicesAdminTestJSON(base.BaseV2ComputeAdminTest): @decorators.idempotent_id('5be41ef4-53d1-41cc-8839-5c2a48a1b283') def test_list_services(self): + # Listing nova services services = self.client.list_services()['services'] self.assertNotEmpty(services) @decorators.idempotent_id('f345b1ec-bc6e-4c38-a527-3ca2bc00bef5') def test_get_service_by_service_binary_name(self): + # Listing nova services by binary name. binary_name = 'nova-compute' services = self.client.list_services(binary=binary_name)['services'] self.assertNotEmpty(services) @@ -41,6 +43,7 @@ class ServicesAdminTestJSON(base.BaseV2ComputeAdminTest): @decorators.idempotent_id('affb42d5-5b4b-43c8-8b0b-6dca054abcca') def test_get_service_by_host_name(self): + # Listing nova services by host name. services = self.client.list_services()['services'] host_name = services[0]['host'] services_on_host = [service for service in services if diff --git a/tempest/api/compute/servers/test_multiple_create.py b/tempest/api/compute/servers/test_multiple_create.py index e176251a89..dcadacefc5 100644 --- a/tempest/api/compute/servers/test_multiple_create.py +++ b/tempest/api/compute/servers/test_multiple_create.py @@ -23,6 +23,7 @@ class MultipleCreateTestJSON(base.BaseV2ComputeTest): @decorators.idempotent_id('61e03386-89c3-449c-9bb1-a06f423fd9d1') def test_multiple_create(self): + # Creating server with min_count=2, 2 servers will be created. tenant_network = self.get_tenant_network() body, servers = compute.create_test_server( self.os_primary, @@ -39,6 +40,8 @@ class MultipleCreateTestJSON(base.BaseV2ComputeTest): @decorators.idempotent_id('864777fb-2f1e-44e3-b5b9-3eb6fa84f2f7') def test_multiple_create_with_reservation_return(self): + # Creating multiple servers with return_reservation_id=True, + # reservation_id will be returned. body = self.create_test_server(wait_until='ACTIVE', min_count=1, max_count=2, diff --git a/tempest/api/compute/servers/test_multiple_create_negative.py b/tempest/api/compute/servers/test_multiple_create_negative.py index 422510f756..6bdf83bb69 100644 --- a/tempest/api/compute/servers/test_multiple_create_negative.py +++ b/tempest/api/compute/servers/test_multiple_create_negative.py @@ -23,6 +23,7 @@ class MultipleCreateNegativeTestJSON(base.BaseV2ComputeTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('daf29d8d-e928-4a01-9a8c-b129603f3fc0') def test_min_count_less_than_one(self): + # Creating server with min_count=0 should fail. invalid_min_count = 0 self.assertRaises(lib_exc.BadRequest, self.create_test_server, min_count=invalid_min_count) @@ -30,6 +31,7 @@ class MultipleCreateNegativeTestJSON(base.BaseV2ComputeTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('999aa722-d624-4423-b813-0d1ac9884d7a') def test_min_count_non_integer(self): + # Creating server with non-integer min_count should fail. invalid_min_count = 2.5 self.assertRaises(lib_exc.BadRequest, self.create_test_server, min_count=invalid_min_count) @@ -37,6 +39,7 @@ class MultipleCreateNegativeTestJSON(base.BaseV2ComputeTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('a6f9c2ab-e060-4b82-b23c-4532cb9390ff') def test_max_count_less_than_one(self): + # Creating server with max_count < 1 shoudld fail. invalid_max_count = 0 self.assertRaises(lib_exc.BadRequest, self.create_test_server, max_count=invalid_max_count) @@ -44,6 +47,7 @@ class MultipleCreateNegativeTestJSON(base.BaseV2ComputeTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('9c5698d1-d7af-4c80-b971-9d403135eea2') def test_max_count_non_integer(self): + # Creating server with non-integer max_count should fail. invalid_max_count = 2.5 self.assertRaises(lib_exc.BadRequest, self.create_test_server, max_count=invalid_max_count) @@ -51,6 +55,7 @@ class MultipleCreateNegativeTestJSON(base.BaseV2ComputeTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('476da616-f1ef-4271-a9b1-b9fc87727cdf') def test_max_count_less_than_min_count(self): + # Creating server with max_count less than min_count should fail. min_count = 3 max_count = 2 self.assertRaises(lib_exc.BadRequest, self.create_test_server,