From d79900a075a78da0cc8a504630fd5a2df41c4ae2 Mon Sep 17 00:00:00 2001 From: TerryHowe Date: Wed, 10 Jun 2015 15:03:15 -0600 Subject: [PATCH] Add functional tests for servers that require wait Change-Id: I4c85b1e303ecb99458594e7743950b0668b3bdfc --- functional/tests/compute/v2/test_server.py | 69 +++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/functional/tests/compute/v2/test_server.py b/functional/tests/compute/v2/test_server.py index bcef635f6f..2bf01341e7 100644 --- a/functional/tests/compute/v2/test_server.py +++ b/functional/tests/compute/v2/test_server.py @@ -10,6 +10,7 @@ # License for the specific language governing permissions and limitations # under the License. +import time import uuid from functional.common import test @@ -19,6 +20,7 @@ class ServerTests(test.TestCase): """Functional tests for server. """ NAME = uuid.uuid4().hex + OTHER_NAME = uuid.uuid4().hex HEADERS = ['"Name"'] FIELDS = ['name'] @@ -41,7 +43,12 @@ class ServerTests(test.TestCase): @classmethod def tearDownClass(cls): - raw_output = cls.openstack('server delete ' + cls.NAME) + # Rename test + raw_output = cls.openstack('server set --name ' + cls.OTHER_NAME + + ' ' + cls.NAME) + cls.assertOutput("", raw_output) + # Delete test + raw_output = cls.openstack('server delete ' + cls.OTHER_NAME) cls.assertOutput('', raw_output) def test_server_list(self): @@ -53,3 +60,63 @@ class ServerTests(test.TestCase): opts = self.get_show_opts(self.FIELDS) raw_output = self.openstack('server show ' + self.NAME + opts) self.assertEqual(self.NAME + "\n", raw_output) + + def wait_for(self, desired, wait=120, interval=5, failures=['ERROR']): + # TODO(thowe): Add a server wait command to osc + status = "notset" + wait = 120 + interval = 5 + total_sleep = 0 + opts = self.get_show_opts(['status']) + while total_sleep < wait: + status = self.openstack('server show ' + self.NAME + opts) + status = status.rstrip() + print('Waiting for {} current status: {}'.format(desired, status)) + if status == desired: + break + self.assertNotIn(status, failures) + time.sleep(interval) + total_sleep += interval + self.assertEqual(desired, status) + + def test_server_up_test(self): + self.wait_for("ACTIVE") + # give it a little bit more time + time.sleep(5) + # metadata + raw_output = self.openstack( + 'server set --property a=b --property c=d ' + self.NAME) + opts = self.get_show_opts(["name", "properties"]) + raw_output = self.openstack('server show ' + self.NAME + opts) + self.assertEqual(self.NAME + "\na='b', c='d'\n", raw_output) + # suspend + raw_output = self.openstack('server suspend ' + self.NAME) + self.assertEqual("", raw_output) + self.wait_for("SUSPENDED") + # resume + raw_output = self.openstack('server resume ' + self.NAME) + self.assertEqual("", raw_output) + self.wait_for("ACTIVE") + # lock + raw_output = self.openstack('server lock ' + self.NAME) + self.assertEqual("", raw_output) + # unlock + raw_output = self.openstack('server unlock ' + self.NAME) + self.assertEqual("", raw_output) + # pause + raw_output = self.openstack('server pause ' + self.NAME) + self.assertEqual("", raw_output) + self.wait_for("PAUSED") + # unpause + raw_output = self.openstack('server unpause ' + self.NAME) + self.assertEqual("", raw_output) + self.wait_for("ACTIVE") + # rescue + opts = self.get_show_opts(["adminPass"]) + raw_output = self.openstack('server rescue ' + self.NAME + opts) + self.assertNotEqual("", raw_output) + self.wait_for("RESCUE") + # unrescue + raw_output = self.openstack('server unrescue ' + self.NAME) + self.assertEqual("", raw_output) + self.wait_for("ACTIVE")