Skip to content
Snippets Groups Projects
Commit 83502c0a authored by Georgy Moshkin's avatar Georgy Moshkin :speech_balloon:
Browse files

test: check for grade incarnations in tests

parent ea47feda
No related branches found
No related tags found
1 merge request!300fix(governor): restarted instance reruns grade transitions by virtue of grade incarnations
Pipeline #13440 passed
......@@ -214,6 +214,9 @@ class Instance:
def listen(self):
return f"{self.host}:{self.port}"
def current_grade(self):
return self.call("picolib.peer_info", self.instance_id)["current_grade"]
def instance_uuid(self):
return self.eval("return box.info.uuid")
......
......@@ -59,11 +59,18 @@ def test_restart_follower(cluster2: Cluster):
# Then it's able to start and remain a follower
i1, i2 = cluster2.instances
assert i1.current_grade() == dict(variant="Online", incarnation=1)
assert i2.current_grade() == dict(variant="Online", incarnation=1)
i2.restart()
i2.wait_online()
assert i2.current_grade() == dict(variant="Online", incarnation=2)
i1.assert_raft_status("Leader")
i2.assert_raft_status("Follower")
i2.restart()
i2.wait_online()
assert i2.current_grade() == dict(variant="Online", incarnation=3)
def test_restart_leader(cluster2: Cluster):
# Given a cluster of two instances - i1 (leader) and i2 (follower)
......@@ -72,10 +79,16 @@ def test_restart_leader(cluster2: Cluster):
# No assuptions about leadership are made though.
i1, _ = cluster2.instances
assert i1.current_grade() == dict(variant="Online", incarnation=1)
i1.restart()
i1.wait_online()
assert i1.current_grade() == dict(variant="Online", incarnation=2)
i1.raft_propose_eval("return")
i1.restart()
i1.wait_online()
assert i1.current_grade() == dict(variant="Online", incarnation=3)
def test_restart_both(cluster2: Cluster):
# Given a cluster of 2 instances - i1, i2
......@@ -83,6 +96,8 @@ def test_restart_both(cluster2: Cluster):
# Then both can become ready and handle proposals.
i1, i2 = cluster2.instances
assert i1.current_grade() == dict(variant="Online", incarnation=1)
assert i2.current_grade() == dict(variant="Online", incarnation=1)
i1.terminate()
i2.terminate()
......@@ -98,7 +113,9 @@ def test_restart_both(cluster2: Cluster):
i2.start()
i1.wait_online()
assert i1.current_grade() == dict(variant="Online", incarnation=2)
i2.wait_online()
assert i1.current_grade() == dict(variant="Online", incarnation=2)
i1.raft_propose_eval("rawset(_G, 'check', true)")
assert i1.eval("return check") is True
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment