blob: 78639f8e76e9cc0183e1720c75e7faebd24aa0f5 [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')
Attila Fazekase4cb04c2013-01-29 09:51:58 +010031 cls.client = cls.servers_client
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053032 resp, server = cls.servers_client.create_server(cls.name,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080033 cls.image_ref,
34 cls.flavor_ref)
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053035 cls.server_id = server['id']
36
37 cls.servers_client.wait_for_server_status(cls.server_id, 'ACTIVE')
38
39 @classmethod
rajalakshmi-ganesand793d692012-12-25 12:54:50 +053040 def tearDownClass(self, cls):
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053041 cls.servers_client.delete_server(cls.server_id)
42
43 @attr(type='positive')
44 def test_get_console_output(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050045 # Positive test:Should be able to GET the console output
46 # for a given server_id and number of lines
David Kranzcf0040c2012-06-26 09:46:56 -040047 def get_output():
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053048 resp, output = self.client.get_console_output(self.server_id, 10)
49 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:
60 resp, output = self.client.get_console_output('!@#$%^&*()', 10)
61 except exceptions.NotFound:
62 pass
63
64 @attr(type='positive')
ivan-zhu1feeb382013-01-24 10:14:39 +080065 @testtools.skip('Until tempest bug 1014683 is fixed.')
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053066 def test_get_console_output_server_id_in_reboot_status(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050067 # Positive test:Should be able to GET the console output
68 # for a given server_id in reboot status
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053069 try:
70 resp, output = self.servers_client.reboot(self.server_id, 'SOFT')
71 self.servers_client.wait_for_server_status(self.server_id,
Zhongyue Luoe0884a32012-09-25 17:24:17 +080072 'REBOOT')
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053073 resp, server = self.servers_client.get_server(self.server_id)
74 if (server['status'] == 'REBOOT'):
75 resp, output = self.client.get_console_output(self.server_id,
Zhongyue Luoe0884a32012-09-25 17:24:17 +080076 10)
rajalakshmi-ganesan72ea31a2012-05-25 11:59:10 +053077 self.assertEqual(200, resp.status)
78 self.assertNotEqual(output, None)
79 lines = len(output.split('\n'))
80 self.assertEqual(lines, 10)
81 else:
82 self.fail("Could not capture instance in Reboot status")
83 finally:
84 self.servers_client.wait_for_server_status(self.server_id,
Zhongyue Luoe0884a32012-09-25 17:24:17 +080085 'ACTIVE')
rajalakshmi-ganesand793d692012-12-25 12:54:50 +053086
87
88@attr(type='smoke')
James E. Blaire6d8ee12013-01-18 21:33:45 +000089class ConsoleOutputTestJSON(base.BaseComputeTestJSON,
90 ConsoleOutputTest):
rajalakshmi-ganesand793d692012-12-25 12:54:50 +053091 @classmethod
92 def setUpClass(cls):
James E. Blaire6d8ee12013-01-18 21:33:45 +000093 super(ConsoleOutputTestJSON, cls).setUpClass()
94 ConsoleOutputTest.setUpClass(cls)
rajalakshmi-ganesand793d692012-12-25 12:54:50 +053095
96 @classmethod
97 def tearDownClass(cls):
James E. Blaire6d8ee12013-01-18 21:33:45 +000098 ConsoleOutputTest.tearDownClass(cls)
99 super(ConsoleOutputTestJSON, cls).tearDownClass()
100
101
102@attr(type='smoke')
103class ConsoleOutputTestXML(base.BaseComputeTestXML,
104 ConsoleOutputTest):
105 @classmethod
106 def setUpClass(cls):
107 super(ConsoleOutputTestXML, cls).setUpClass()
108 ConsoleOutputTest.setUpClass(cls)
109
110 @classmethod
111 def tearDownClass(cls):
112 ConsoleOutputTest.tearDownClass(cls)
113 super(ConsoleOutputTestXML, cls).tearDownClass()