| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 1 | # Copyright 2013 NEC Corporation | 
|  | 2 | # All Rights Reserved. | 
|  | 3 | # | 
|  | 4 | #    Licensed under the Apache License, Version 2.0 (the "License"); you may | 
|  | 5 | #    not use this file except in compliance with the License. You may obtain | 
|  | 6 | #    a copy of the License at | 
|  | 7 | # | 
|  | 8 | #         http://www.apache.org/licenses/LICENSE-2.0 | 
|  | 9 | # | 
|  | 10 | #    Unless required by applicable law or agreed to in writing, software | 
|  | 11 | #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | 
|  | 12 | #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | 
|  | 13 | #    License for the specific language governing permissions and limitations | 
|  | 14 | #    under the License. | 
|  | 15 |  | 
| Masayuki Igawa | 259c113 | 2013-10-31 17:48:44 +0900 | [diff] [blame] | 16 | from tempest.common.utils import data_utils | 
| Matthew Treinish | 6c07229 | 2014-01-29 19:15:52 +0000 | [diff] [blame] | 17 | from tempest import config | 
| Matthew Treinish | f4a9b0f | 2013-07-26 16:58:26 -0400 | [diff] [blame] | 18 | from tempest.openstack.common import log as logging | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 19 | from tempest.scenario import manager | 
| Masayuki Igawa | 4ded9f0 | 2014-02-17 15:05:59 +0900 | [diff] [blame] | 20 | from tempest import test | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 21 |  | 
| Matthew Treinish | 6c07229 | 2014-01-29 19:15:52 +0000 | [diff] [blame] | 22 | CONF = config.CONF | 
|  | 23 |  | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 24 |  | 
|  | 25 | LOG = logging.getLogger(__name__) | 
|  | 26 |  | 
|  | 27 |  | 
| Ghanshyam | aa4511e | 2014-09-08 10:37:50 +0900 | [diff] [blame] | 28 | class TestLargeOpsScenario(manager.ScenarioTest): | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 29 |  | 
|  | 30 | """ | 
|  | 31 | Test large operations. | 
|  | 32 |  | 
|  | 33 | This test below: | 
| Joe Gordon | fa29a62 | 2014-04-17 13:21:44 -0700 | [diff] [blame] | 34 | * Spin up multiple instances in one nova call, and repeat three times | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 35 | * as a regular user | 
|  | 36 | * TODO: same thing for cinder | 
|  | 37 |  | 
|  | 38 | """ | 
|  | 39 |  | 
| Sylvain Afchain | 9206477 | 2014-01-16 02:45:57 +0100 | [diff] [blame] | 40 | @classmethod | 
| Andrea Frittoli | ac20b5e | 2014-09-15 13:31:14 +0100 | [diff] [blame] | 41 | def resource_setup(cls): | 
| Yair Fried | c1f1e83 | 2014-09-21 12:57:32 +0300 | [diff] [blame] | 42 | if CONF.scenario.large_ops_number < 1: | 
|  | 43 | raise cls.skipException("large_ops_number not set to multiple " | 
|  | 44 | "instances") | 
| Sylvain Afchain | 9206477 | 2014-01-16 02:45:57 +0100 | [diff] [blame] | 45 | cls.set_network_resources() | 
| Andrea Frittoli | ac20b5e | 2014-09-15 13:31:14 +0100 | [diff] [blame] | 46 | super(TestLargeOpsScenario, cls).resource_setup() | 
| Sylvain Afchain | 9206477 | 2014-01-16 02:45:57 +0100 | [diff] [blame] | 47 |  | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 48 | def _wait_for_server_status(self, status): | 
|  | 49 | for server in self.servers: | 
| Joe Gordon | 6286a6a | 2014-03-05 16:35:03 -0800 | [diff] [blame^] | 50 | # Make sure nova list keeps working throughout the build process | 
|  | 51 | self.servers_client.list_servers() | 
| Ghanshyam | aa4511e | 2014-09-08 10:37:50 +0900 | [diff] [blame] | 52 | self.servers_client.wait_for_server_status(server['id'], status) | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 53 |  | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 54 | def nova_boot(self): | 
| Masayuki Igawa | 259c113 | 2013-10-31 17:48:44 +0900 | [diff] [blame] | 55 | name = data_utils.rand_name('scenario-server-') | 
| Matthew Treinish | 6c07229 | 2014-01-29 19:15:52 +0000 | [diff] [blame] | 56 | flavor_id = CONF.compute.flavor_ref | 
| Ghanshyam | aa4511e | 2014-09-08 10:37:50 +0900 | [diff] [blame] | 57 | secgroup = self._create_security_group() | 
|  | 58 | self.servers_client.create_server( | 
|  | 59 | name, | 
|  | 60 | self.image, | 
|  | 61 | flavor_id, | 
| Matthew Treinish | 6c07229 | 2014-01-29 19:15:52 +0000 | [diff] [blame] | 62 | min_count=CONF.scenario.large_ops_number, | 
| Ghanshyam | aa4511e | 2014-09-08 10:37:50 +0900 | [diff] [blame] | 63 | security_groups=[secgroup]) | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 64 | # needed because of bug 1199788 | 
| Ghanshyam | aa4511e | 2014-09-08 10:37:50 +0900 | [diff] [blame] | 65 | params = {'name': name} | 
|  | 66 | _, server_list = self.servers_client.list_servers(params) | 
|  | 67 | self.servers = server_list['servers'] | 
| Joe Gordon | a321965 | 2013-10-09 15:23:11 -0700 | [diff] [blame] | 68 | for server in self.servers: | 
| Matthew Treinish | b7144eb | 2013-12-13 22:57:35 +0000 | [diff] [blame] | 69 | # after deleting all servers - wait for all servers to clear | 
|  | 70 | # before cleanup continues | 
| Ghanshyam | aa4511e | 2014-09-08 10:37:50 +0900 | [diff] [blame] | 71 | self.addCleanup(self.servers_client.wait_for_server_termination, | 
|  | 72 | server['id']) | 
| Matthew Treinish | b7144eb | 2013-12-13 22:57:35 +0000 | [diff] [blame] | 73 | for server in self.servers: | 
| Ghanshyam | aa4511e | 2014-09-08 10:37:50 +0900 | [diff] [blame] | 74 | self.addCleanup_with_wait( | 
|  | 75 | waiter_callable=(self.servers_client. | 
|  | 76 | wait_for_server_termination), | 
|  | 77 | thing_id=server['id'], thing_id_param='server_id', | 
|  | 78 | cleanup_callable=self.delete_wrapper, | 
|  | 79 | cleanup_args=[self.servers_client.delete_server, server['id']]) | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 80 | self._wait_for_server_status('ACTIVE') | 
|  | 81 |  | 
| Joe Gordon | b7f37cc | 2014-05-09 13:30:40 -0700 | [diff] [blame] | 82 | def _large_ops_scenario(self): | 
| Joe Gordon | b5e10cd | 2013-07-10 15:51:12 +0000 | [diff] [blame] | 83 | self.glance_image_create() | 
|  | 84 | self.nova_boot() | 
| Joe Gordon | b7f37cc | 2014-05-09 13:30:40 -0700 | [diff] [blame] | 85 |  | 
|  | 86 | @test.services('compute', 'image') | 
|  | 87 | def test_large_ops_scenario_1(self): | 
|  | 88 | self._large_ops_scenario() | 
|  | 89 |  | 
|  | 90 | @test.services('compute', 'image') | 
|  | 91 | def test_large_ops_scenario_2(self): | 
|  | 92 | self._large_ops_scenario() | 
|  | 93 |  | 
|  | 94 | @test.services('compute', 'image') | 
|  | 95 | def test_large_ops_scenario_3(self): | 
|  | 96 | self._large_ops_scenario() |