1
0
Fork 0

Merge pull request #676 from rqlite/derace_snap_test

Test snapshotting in a simpler manner
master
Philip O'Toole 4 years ago committed by GitHub
commit c638d55da8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -151,6 +151,15 @@ class Node(object):
def commit_index(self):
return int(self.status()['store']['raft']['commit_index'])
def last_log_index(self):
return int(self.status()['store']['raft']['last_log_index'])
def last_snapshot_index(self):
return int(self.status()['store']['raft']['last_snapshot_index'])
def num_snapshots(self):
return int(self.expvar()['store']['num_snapshots'])
def wait_for_applied_index(self, index, timeout=TIMEOUT):
t = 0
while self.applied_index() < index:
@ -301,20 +310,21 @@ class TestSingleNode(unittest.TestCase):
self.assertEqual(str(j), "{u'results': [{u'values': [[1, u'fiona', 20]], u'types': [u'integer', u'text', u'integer'], u'columns': [u'id', u'name', u'age']}]}")
def test_snapshot(self):
''' Test that a node peforms a Raft snapshot as expected'''
''' Test that a node peforms at least 1 snapshot'''
n = self.cluster.wait_for_leader()
j = n.execute('CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)')
self.assertEqual(str(j), "{u'results': [{}]}")
j = n.execute('INSERT INTO foo(name) VALUES("fiona")')
applied = n.wait_for_all_applied()
self.assertEqual(str(j), "{u'results': [{u'last_insert_id': 1, u'rows_affected': 1}]}")
# Wait for the snapshot to happen.
applied = n.wait_for_all_applied()
# Wait for a snapshot to happen.
timeout = 10
t = 0
while True:
nSnaps = n.expvar()['store']['num_snapshots']
if nSnaps is 2:
if nSnaps > 0:
return
if t > timeout:
raise Exception('timeout', nSnaps)

Loading…
Cancel
Save