Add BaseComputeTest.wait_for and use it to fix bug 1017932.
Change-Id: I3c197f098591f827200f333dc4efe3aa816ef8b1
diff --git a/tempest/tests/compute/base.py b/tempest/tests/compute/base.py
index 120de01..7ceefb5 100644
--- a/tempest/tests/compute/base.py
+++ b/tempest/tests/compute/base.py
@@ -15,6 +15,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+import time
import unittest2 as unittest
from tempest import exceptions
@@ -115,3 +116,18 @@
self.servers_client.wait_for_server_status(server['id'], 'ACTIVE')
self.servers.append(server)
return server
+
+ def wait_for(self, condition):
+ """Repeatedly calls condition() until a timeout"""
+ start_time = int(time.time())
+ while True:
+ try:
+ condition()
+ except:
+ pass
+ else:
+ return
+ if int(time.time()) - start_time >= self.build_timeout:
+ condition()
+ return
+ time.sleep(self.build_interval)
diff --git a/tempest/tests/compute/test_console_output.py b/tempest/tests/compute/test_console_output.py
index c258779..9bae812 100644
--- a/tempest/tests/compute/test_console_output.py
+++ b/tempest/tests/compute/test_console_output.py
@@ -43,11 +43,13 @@
@attr(type='positive')
def test_get_console_output(self):
+ def get_output():
resp, output = self.client.get_console_output(self.server_id, 10)
self.assertEqual(200, resp.status)
self.assertNotEqual(output, None)
lines = len(output.split('\n'))
self.assertEqual(lines, 10)
+ self.wait_for(get_output)
@attr(type='negative')
def test_get_console_output_invalid_server_id(self):