public void AreReplicationFactorsSatisfied_Should_ReturnFalse_When_LessReplicasThanReplicationFactorInOneDc() { var ksReplicationFactor = new Dictionary <string, int> { { "dc1", 1 }, { "dc2", 3 }, { "dc3", 1 } }; var replicasByDc = new Dictionary <string, int> { { "dc1", 1 }, { "dc2", 1 } }; //no host in DC 3 var datacenters = new Dictionary <string, DatacenterInfo> { { "dc1", new DatacenterInfo { HostLength = 10 } }, { "dc2", new DatacenterInfo { HostLength = 10 } } }; Assert.False(NetworkTopologyStrategy.AreReplicationFactorsSatisfied(ksReplicationFactor, replicasByDc, datacenters)); }
public void AreReplicationFactorsSatisfied_Should_ReturnTrue_When_OnlyFullReplicas() { var ksReplicationFactor = new Dictionary <string, ReplicationFactor> { { "dc1", ReplicationFactor.Parse("1") }, { "dc2", ReplicationFactor.Parse("3/1") }, { "dc3", ReplicationFactor.Parse("1") } }; var replicasByDc = new Dictionary <string, int> { { "dc1", 1 }, { "dc2", 2 }, { "dc3", 1 } }; //no host in DC 3 var datacenters = new Dictionary <string, DatacenterInfo> { { "dc1", new DatacenterInfo { HostLength = 10 } }, { "dc2", new DatacenterInfo { HostLength = 10 } }, { "dc3", new DatacenterInfo { HostLength = 10 } } }; Assert.True(NetworkTopologyStrategy.AreReplicationFactorsSatisfied(ksReplicationFactor, replicasByDc, datacenters)); }
public void Should_NotReturnEqualsTrue_When_StrategiesHaveDifferentDatacenters() { var target1 = new NetworkTopologyStrategy( new Dictionary <string, ReplicationFactor> { { "dc1", ReplicationFactor.Parse("2") }, { "dc2", ReplicationFactor.Parse("3/1") }, }); var target2 = new NetworkTopologyStrategy( new Dictionary <string, ReplicationFactor> { { "dc1", ReplicationFactor.Parse("2") }, }); Assert.AreNotEqual(target1.GetHashCode(), target2.GetHashCode()); Assert.IsFalse(target1.Equals(target2)); Assert.IsFalse(target2.Equals(target1)); Assert.AreNotEqual(target1, target2); }
public void Should_ReturnEqualsTrueAndSameHashCode_When_BothStrategiesHaveSameReplicationSettings() { var target1 = new NetworkTopologyStrategy( new Dictionary <string, ReplicationFactor> { { "dc1", ReplicationFactor.Parse("2") }, { "dc2", ReplicationFactor.Parse("3/1") }, { "dc3", ReplicationFactor.Parse("3/2") } }); var target2 = new NetworkTopologyStrategy( new Dictionary <string, ReplicationFactor> { { "dc3", ReplicationFactor.Parse("3/2") }, { "dc1", ReplicationFactor.Parse("2") }, { "dc2", ReplicationFactor.Parse("3/1") } }); Assert.AreEqual(target1.GetHashCode(), target2.GetHashCode()); Assert.IsTrue(target1.Equals(target2)); Assert.IsTrue(target2.Equals(target1)); Assert.AreEqual(target1, target2); }
public void Should_ReturnAppropriateReplicasPerDcPerToken() { var target = new NetworkTopologyStrategy( new Dictionary <string, ReplicationFactor> { { "dc1", ReplicationFactor.Parse("2") }, { "dc2", ReplicationFactor.Parse("3/1") }, { "dc3", ReplicationFactor.Parse("3/2") } }); var testData = ReplicationStrategyTestData.Create(); var result = target.ComputeTokenToReplicaMap( testData.Ring, testData.PrimaryReplicas, testData.NumberOfHostsWithTokens, testData.Datacenters); // 3 dcs, 3 hosts per rack, 3 racks per dc, 10 tokens per host Assert.AreEqual(10 * 3 * 3 * 3, result.Count); foreach (var token in result) { // 2 for dc1, 2 for dc2, 1 for dc3 Assert.AreEqual(2 + 2 + 1, token.Value.Count); } }