Skip to content

Commit b59d9ef

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add functional tests for servers that require wait"
2 parents d74023b + d79900a commit b59d9ef

1 file changed

Lines changed: 68 additions & 1 deletion

File tree

‎functional/tests/compute/v2/test_server.py‎

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
# License for the specific language governing permissions and limitations
1111
# under the License.
1212

13+
import time
1314
import uuid
1415

1516
from functional.common import test
@@ -19,6 +20,7 @@ class ServerTests(test.TestCase):
1920
"""Functional tests for server. """
2021

2122
NAME = uuid.uuid4().hex
23+
OTHER_NAME = uuid.uuid4().hex
2224
HEADERS = ['"Name"']
2325
FIELDS = ['name']
2426

@@ -41,7 +43,12 @@ def setUpClass(cls):
4143

4244
@classmethod
4345
def tearDownClass(cls):
44-
raw_output = cls.openstack('server delete ' + cls.NAME)
46+
# Rename test
47+
raw_output = cls.openstack('server set --name ' + cls.OTHER_NAME +
48+
' ' + cls.NAME)
49+
cls.assertOutput("", raw_output)
50+
# Delete test
51+
raw_output = cls.openstack('server delete ' + cls.OTHER_NAME)
4552
cls.assertOutput('', raw_output)
4653

4754
def test_server_list(self):
@@ -53,3 +60,63 @@ def test_server_show(self):
5360
opts = self.get_show_opts(self.FIELDS)
5461
raw_output = self.openstack('server show ' + self.NAME + opts)
5562
self.assertEqual(self.NAME + "\n", raw_output)
63+
64+
def wait_for(self, desired, wait=120, interval=5, failures=['ERROR']):
65+
# TODO(thowe): Add a server wait command to osc
66+
status = "notset"
67+
wait = 120
68+
interval = 5
69+
total_sleep = 0
70+
opts = self.get_show_opts(['status'])
71+
while total_sleep < wait:
72+
status = self.openstack('server show ' + self.NAME + opts)
73+
status = status.rstrip()
74+
print('Waiting for {} current status: {}'.format(desired, status))
75+
if status == desired:
76+
break
77+
self.assertNotIn(status, failures)
78+
time.sleep(interval)
79+
total_sleep += interval
80+
self.assertEqual(desired, status)
81+
82+
def test_server_up_test(self):
83+
self.wait_for("ACTIVE")
84+
# give it a little bit more time
85+
time.sleep(5)
86+
# metadata
87+
raw_output = self.openstack(
88+
'server set --property a=b --property c=d ' + self.NAME)
89+
opts = self.get_show_opts(["name", "properties"])
90+
raw_output = self.openstack('server show ' + self.NAME + opts)
91+
self.assertEqual(self.NAME + "\na='b', c='d'\n", raw_output)
92+
# suspend
93+
raw_output = self.openstack('server suspend ' + self.NAME)
94+
self.assertEqual("", raw_output)
95+
self.wait_for("SUSPENDED")
96+
# resume
97+
raw_output = self.openstack('server resume ' + self.NAME)
98+
self.assertEqual("", raw_output)
99+
self.wait_for("ACTIVE")
100+
# lock
101+
raw_output = self.openstack('server lock ' + self.NAME)
102+
self.assertEqual("", raw_output)
103+
# unlock
104+
raw_output = self.openstack('server unlock ' + self.NAME)
105+
self.assertEqual("", raw_output)
106+
# pause
107+
raw_output = self.openstack('server pause ' + self.NAME)
108+
self.assertEqual("", raw_output)
109+
self.wait_for("PAUSED")
110+
# unpause
111+
raw_output = self.openstack('server unpause ' + self.NAME)
112+
self.assertEqual("", raw_output)
113+
self.wait_for("ACTIVE")
114+
# rescue
115+
opts = self.get_show_opts(["adminPass"])
116+
raw_output = self.openstack('server rescue ' + self.NAME + opts)
117+
self.assertNotEqual("", raw_output)
118+
self.wait_for("RESCUE")
119+
# unrescue
120+
raw_output = self.openstack('server unrescue ' + self.NAME)
121+
self.assertEqual("", raw_output)
122+
self.wait_for("ACTIVE")

0 commit comments

Comments
 (0)