summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerryHowe <terrylhowe@gmail.com>2015-06-10 15:03:15 -0600
committerTerry Howe <terrylhowe@gmail.com>2015-07-18 12:22:45 +0000
commitd79900a075a78da0cc8a504630fd5a2df41c4ae2 (patch)
treeebea934803712d271da627a936c5e291ed5d2f8a
parentfcadb16470832cdde2d090a19ebd20a3ad0d1476 (diff)
downloadpython-openstackclient-d79900a075a78da0cc8a504630fd5a2df41c4ae2.tar.gz
Add functional tests for servers that require wait
Change-Id: I4c85b1e303ecb99458594e7743950b0668b3bdfc
-rw-r--r--functional/tests/compute/v2/test_server.py69
1 files changed, 68 insertions, 1 deletions
diff --git a/functional/tests/compute/v2/test_server.py b/functional/tests/compute/v2/test_server.py
index bcef635f..2bf01341 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")