blob: bdf449d8d302f0c428de9f7e7a1e9497ff25aad1 [file] [log] [blame]
Jay Pipes13b479b2012-06-11 14:52:27 -04001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 OpenStack, LLC
4# All Rights Reserved.
5#
6# Licensed under the Apache License, Version 2.0 (the "License"); you may
7# not use this file except in compliance with the License. You may obtain
8# a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations
16# under the License.
17
ivan-zhu1feeb382013-01-24 10:14:39 +080018import testtools
Jay Pipes13b479b2012-06-11 14:52:27 -040019
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053020from tempest.common.utils.data_utils import rand_name
Matthew Treinisha83a16e2012-12-07 13:44:02 -050021from tempest import exceptions
Chris Yeoh9465b0b2013-02-09 22:19:15 +103022from tempest.test import attr
rajalakshmi-ganesand793d692012-12-25 12:54:50 +053023from tempest.tests.compute import base
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053024
25
James E. Blaire6d8ee12013-01-18 21:33:45 +000026class ConsoleOutputTest(object):
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053027
28 @classmethod
rajalakshmi-ganesand793d692012-12-25 12:54:50 +053029 def setUpClass(self, cls):
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053030 cls.name = rand_name('server')
31 resp, server = cls.servers_client.create_server(cls.name,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080032 cls.image_ref,
33 cls.flavor_ref)
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053034 cls.server_id = server['id']
35
36 cls.servers_client.wait_for_server_status(cls.server_id, 'ACTIVE')
37
38 @classmethod
rajalakshmi-ganesand793d692012-12-25 12:54:50 +053039 def tearDownClass(self, cls):
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053040 cls.servers_client.delete_server(cls.server_id)
41
42 @attr(type='positive')
43 def test_get_console_output(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050044 # Positive test:Should be able to GET the console output
45 # for a given server_id and number of lines
David Kranzcf0040c2012-06-26 09:46:56 -040046 def get_output():
Attila Fazekas3b962902013-02-14 15:21:12 +010047 resp, output = self.servers_client.get_console_output(
48 self.server_id, 10)
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053049 self.assertEqual(200, resp.status)
50 self.assertNotEqual(output, None)
51 lines = len(output.split('\n'))
52 self.assertEqual(lines, 10)
David Kranzcf0040c2012-06-26 09:46:56 -040053 self.wait_for(get_output)
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053054
55 @attr(type='negative')
56 def test_get_console_output_invalid_server_id(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050057 # Negative test: Should not be able to get the console output
58 # for an invalid server_id
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053059 try:
Attila Fazekas3b962902013-02-14 15:21:12 +010060 resp, output = self.servers_client.get_console_output(
61 '!@#$%^&*()', 10)
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053062 except exceptions.NotFound:
63 pass
64
65 @attr(type='positive')
ivan-zhu1feeb382013-01-24 10:14:39 +080066 @testtools.skip('Until tempest bug 1014683 is fixed.')
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053067 def test_get_console_output_server_id_in_reboot_status(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050068 # Positive test:Should be able to GET the console output
69 # for a given server_id in reboot status
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053070 try:
71 resp, output = self.servers_client.reboot(self.server_id, 'SOFT')
72 self.servers_client.wait_for_server_status(self.server_id,
Zhongyue Luoe0884a32012-09-25 17:24:17 +080073 'REBOOT')
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053074 resp, server = self.servers_client.get_server(self.server_id)
75 if (server['status'] == 'REBOOT'):
Attila Fazekas3b962902013-02-14 15:21:12 +010076 resp, output = self.servers_client.get_console_output(
77 self.server_id, 10)
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053078 self.assertEqual(200, resp.status)
79 self.assertNotEqual(output, None)
80 lines = len(output.split('\n'))
81 self.assertEqual(lines, 10)
82 else:
83 self.fail("Could not capture instance in Reboot status")
84 finally:
85 self.servers_client.wait_for_server_status(self.server_id,
Zhongyue Luoe0884a32012-09-25 17:24:17 +080086 'ACTIVE')
rajalakshmi-ganesand793d692012-12-25 12:54:50 +053087
88
89@attr(type='smoke')
James E. Blaire6d8ee12013-01-18 21:33:45 +000090class ConsoleOutputTestJSON(base.BaseComputeTestJSON,
91 ConsoleOutputTest):
rajalakshmi-ganesand793d692012-12-25 12:54:50 +053092 @classmethod
93 def setUpClass(cls):
James E. Blaire6d8ee12013-01-18 21:33:45 +000094 super(ConsoleOutputTestJSON, cls).setUpClass()
95 ConsoleOutputTest.setUpClass(cls)
rajalakshmi-ganesand793d692012-12-25 12:54:50 +053096
97 @classmethod
98 def tearDownClass(cls):
James E. Blaire6d8ee12013-01-18 21:33:45 +000099 ConsoleOutputTest.tearDownClass(cls)
100 super(ConsoleOutputTestJSON, cls).tearDownClass()
101
102
103@attr(type='smoke')
104class ConsoleOutputTestXML(base.BaseComputeTestXML,
105 ConsoleOutputTest):
106 @classmethod
107 def setUpClass(cls):
108 super(ConsoleOutputTestXML, cls).setUpClass()
109 ConsoleOutputTest.setUpClass(cls)
110
111 @classmethod
112 def tearDownClass(cls):
113 ConsoleOutputTest.tearDownClass(cls)
114 super(ConsoleOutputTestXML, cls).tearDownClass()