diff --git a/system_test/e2e/helpers.py b/system_test/e2e/helpers.py index af37cd4c..119af4f6 100644 --- a/system_test/e2e/helpers.py +++ b/system_test/e2e/helpers.py @@ -73,6 +73,15 @@ def write_random_file(data, mode='w'): f.close() return f.name +def poll_query(node, query, exp, level='none', timeout=TIMEOUT): + deadline = time.time() + 3 + while time.time() < deadline: + j = node.query(query, level=level) + if j == exp: + return + time.sleep(0.1) + raise Exception('timeout waiting expected query response') + def raise_for_status(r): try: r.raise_for_status() diff --git a/system_test/e2e/single_node.py b/system_test/e2e/single_node.py index 8b1845ad..0d47b452 100644 --- a/system_test/e2e/single_node.py +++ b/system_test/e2e/single_node.py @@ -11,7 +11,7 @@ import os import time import unittest -from helpers import Node, Cluster, d_, deprovision_node, TIMEOUT +from helpers import Node, Cluster, d_, deprovision_node, poll_query RQLITED_PATH = os.environ['RQLITED_PATH'] @@ -192,28 +192,19 @@ class TestSingleNode(unittest.TestCase): class TestSingleNodeLoadRestart(unittest.TestCase): ''' Test that a node can load a SQLite data set in binary format''' - def poll_query(self, node, query, exp): - deadline = time.time() + 3 - while time.time() < deadline: - j = node.query(query, level='none') - if j == exp: - return - time.sleep(0.1) - raise Exception('timeout waiting for node %s to have all data' % node.node_id) - def test_load_binary(self): self.n = Node(RQLITED_PATH, '0', raft_snap_threshold=8192, raft_snap_int="30s") self.n.start() n = self.n.wait_for_leader() self.n.restore('system_test/e2e/testdata/1000-numbers.db', fmt='binary') - self.poll_query(self.n, 'SELECT COUNT(*) from test', d_("{'results': [{'values': [[1000]], 'types': ['integer'], 'columns': ['COUNT(*)']}]}")) + poll_query(self.n, 'SELECT COUNT(*) from test', d_("{'results': [{'values': [[1000]], 'types': ['integer'], 'columns': ['COUNT(*)']}]}")) # Ensure node can restart after loading and that the data is correct. self.n.stop() self.n.start() self.n.wait_for_leader() self.n.restore('system_test/e2e/testdata/1000-numbers.db', fmt='binary') - self.poll_query(self.n, 'SELECT COUNT(*) from test', d_("{'results': [{'values': [[1000]], 'types': ['integer'], 'columns': ['COUNT(*)']}]}")) + poll_query(self.n, 'SELECT COUNT(*) from test', d_("{'results': [{'values': [[1000]], 'types': ['integer'], 'columns': ['COUNT(*)']}]}")) def tearDown(self): deprovision_node(self.n) diff --git a/system_test/e2e/upgrade.py b/system_test/e2e/upgrade.py index 313fb6ee..49090bfe 100644 --- a/system_test/e2e/upgrade.py +++ b/system_test/e2e/upgrade.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import os, unittest, time -from helpers import Node, Cluster, d_, deprovision_node, copy_dir_to_temp +from helpers import Node, Cluster, d_, deprovision_node, copy_dir_to_temp, poll_query RQLITED_PATH = os.environ['RQLITED_PATH'] TIMEOUT=20 @@ -65,7 +65,7 @@ class TestUpgrade_v8_LoadChunk(unittest.TestCase): self.n = Node(RQLITED_PATH, 'localhost:4002', api_addr='localhost:4001', raft_addr='localhost:4002', dir=dir) self.n.start() l = self.n.wait_for_leader() - self.assertEqual(self.n.query('SELECT COUNT(*) FROM foo', level='none'), d_("{'results': [{'values': [[1]], 'types': ['integer'], 'columns': ['COUNT(*)']}]}")) + poll_query(self.n, 'SELECT COUNT(*) FROM foo', d_("{'results': [{'values': [[1]], 'types': ['integer'], 'columns': ['COUNT(*)']}]}")) def tearDown(self): deprovision_node(self.n)