diff --git a/test/int/conftest.py b/test/int/conftest.py index ac7fe6469ba8a3a2122c7348254461b9e06d72a0..cf79d5f551e0f6e4a086e927ca42676e2aaf567c 100644 --- a/test/int/conftest.py +++ b/test/int/conftest.py @@ -139,6 +139,12 @@ class Instance: def listen(self): return f"{self.host}:{self.port}" + def instance_uuid(self): + return self.eval("return box.info.uuid") + + def replicaset_uuid(self): + return self.eval("return box.info.cluster.uuid") + @property def command(self): # fmt: off diff --git a/test/int/test_joining.py b/test/int/test_joining.py index d64a1a002a99e84f209850f529c4498dc59a5b67..e85fe9242911d03f1bbb211f4992f8977a8327de 100644 --- a/test/int/test_joining.py +++ b/test/int/test_joining.py @@ -154,3 +154,36 @@ def test_discovery(cluster3: Cluster): # add instance i5 = cluster3.add_instance(peers=[i3.listen]) i5.assert_raft_status("Follower", leader_id=i2.raft_id) + + +def test_replication(cluster2: Cluster): + i1, i2 = cluster2.instances + + assert i1.replicaset_uuid() == i2.replicaset_uuid() + + for instance in cluster2.instances: + with instance.connection(1) as conn: + raft_peer = conn.select("raft_group", [instance.raft_id])[0] + space_cluster = conn.select("_cluster") + cfg_replication = conn.eval("return box.cfg.replication") + + assert raft_peer[:-1] == [ + instance.raft_id, + instance.eval("return box.info.listen"), + True, # voter + instance.instance_id, + "r1", + instance.eval("return box.info.uuid"), + instance.eval("return box.info.cluster.uuid"), + ] + + assert list(space_cluster) == [ + [1, i1.instance_uuid()], + [2, i2.instance_uuid()], + ] + + if instance == i1: + with pytest.raises(AssertionError): # FIXME + assert cfg_replication[0] == [i1.listen, i2.listen] + else: + assert cfg_replication[0] == [i1.listen, i2.listen]