public void AddDuplicateSplitTest() { //Arrange var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); var splitName = "test1"; //Act var parsedSplit1 = new ParsedSplit() { name = splitName }; splitCache.AddSplit(splitName, parsedSplit1); var parsedSplit2 = new ParsedSplit() { name = splitName }; splitCache.AddSplit(splitName, parsedSplit2); var result = splitCache.GetAllSplits(); //Assert Assert.IsNotNull(result); Assert.AreEqual(1, result.Count); Assert.AreEqual(result[0], parsedSplit1); Assert.AreNotEqual(result[0], parsedSplit2); }
public void SplitsReturnWithNoRolloutConditionSuccessfully() { //Arrange var conditionsWithLogic = new List <ConditionWithLogic>(); var conditionWithLogic = new ConditionWithLogic() { conditionType = ConditionType.WHITELIST, partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 100, treatment = "on" } } }; conditionsWithLogic.Add(conditionWithLogic); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); splitCache.AddSplit("test1", new ParsedSplit() { name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic }); splitCache.AddSplit("test2", new ParsedSplit() { name = "test2", conditions = conditionsWithLogic }); splitCache.AddSplit("test3", new ParsedSplit() { name = "test3", conditions = conditionsWithLogic }); splitCache.AddSplit("test4", new ParsedSplit() { name = "test4", conditions = conditionsWithLogic }); splitCache.AddSplit("test5", new ParsedSplit() { name = "test5", conditions = conditionsWithLogic }); splitCache.AddSplit("test6", new ParsedSplit() { name = "test6", conditions = conditionsWithLogic }); var manager = new SplitManager(splitCache); //Act var result = manager.Splits(); //Assert Assert.IsNotNull(result); Assert.AreEqual(6, result.Count); var firstResult = result.Find(x => x.name == "test1"); Assert.AreEqual(firstResult.name, "test1"); Assert.AreEqual(firstResult.changeNumber, 10000); Assert.AreEqual(firstResult.killed, false); Assert.AreEqual(firstResult.trafficType, "user"); Assert.AreEqual(firstResult.treatments.Count, 0); }
public void GetAllSplitsTest() { //Arrange var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); var splitName = "test1"; var splitName2 = "test2"; //Act splitCache.AddSplit(splitName, new ParsedSplit() { name = splitName }); splitCache.AddSplit(splitName2, new ParsedSplit() { name = splitName2 }); var result = splitCache.GetAllSplits(); //Assert Assert.AreEqual(2, result.Count); }
public void SplitReturnDefaultTreatmentsWhenNoRolloutCondition() { //Arrange var conditionsWithLogic = new List <ConditionWithLogic>(); var conditionWithLogic = new ConditionWithLogic() { conditionType = ConditionType.WHITELIST, partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 100, treatment = "on" }, } }; conditionsWithLogic.Add(conditionWithLogic); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); splitCache.AddSplit("test1", new ParsedSplit() { name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic }); splitCache.AddSplit("test2", new ParsedSplit() { name = "test2", conditions = conditionsWithLogic }); splitCache.AddSplit("test3", new ParsedSplit() { name = "test3", conditions = conditionsWithLogic }); splitCache.AddSplit("test4", new ParsedSplit() { name = "test4", conditions = conditionsWithLogic }); splitCache.AddSplit("test5", new ParsedSplit() { name = "test5", conditions = conditionsWithLogic }); splitCache.AddSplit("test6", new ParsedSplit() { name = "test6", conditions = conditionsWithLogic }); _blockUntilReadyService .Setup(mock => mock.IsSdkReady()) .Returns(true); var manager = new SplitManager(splitCache, _blockUntilReadyService.Object); //Act var result = manager.Split("test1"); //Assert Assert.IsNotNull(result); Assert.AreEqual(result.name, "test1"); Assert.AreEqual(conditionWithLogic.partitions.Count, result.treatments.Count); }
public void AddAndGetSplitTest() { //Arrange var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); var splitName = "test1"; //Act splitCache.AddSplit(splitName, new ParsedSplit() { name = splitName }); var result = splitCache.GetSplit(splitName); //Assert Assert.IsNotNull(result); }
public void Split_WithConfigs_ReturnSuccessfully() { //Arrange var configurations = new Dictionary <string, string> { { "On", "\"Name = \"Test Config\"" } }; var conditionsWithLogic = new List <ConditionWithLogic>(); var conditionWithLogic = new ConditionWithLogic() { partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 100, treatment = "on" } } }; conditionsWithLogic.Add(conditionWithLogic); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); splitCache.AddSplit("test1", new ParsedSplit() { name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic, configurations = configurations }); splitCache.AddSplit("test2", new ParsedSplit() { name = "test2", conditions = conditionsWithLogic, configurations = configurations }); splitCache.AddSplit("test3", new ParsedSplit() { name = "test3", conditions = conditionsWithLogic }); splitCache.AddSplit("test4", new ParsedSplit() { name = "test4", conditions = conditionsWithLogic }); splitCache.AddSplit("test5", new ParsedSplit() { name = "test5", conditions = conditionsWithLogic }); splitCache.AddSplit("test6", new ParsedSplit() { name = "test6", conditions = conditionsWithLogic }); _blockUntilReadyService .Setup(mock => mock.IsSdkReady()) .Returns(true); var manager = new SplitManager(splitCache, _blockUntilReadyService.Object); manager.BlockUntilReady(1000); //Act var result1 = manager.Split("test1"); var result2 = manager.Split("test2"); var result3 = manager.Split("test3"); //Assert Assert.IsNotNull(result1); Assert.IsNotNull(result1.configs); Assert.IsNotNull(result2); Assert.IsNotNull(result2.configs); Assert.IsNotNull(result3); Assert.IsNull(result3.configs); }
public void SplitNamesReturnSuccessfully() { //Arrange var conditionsWithLogic = new List <ConditionWithLogic>(); var conditionWithLogic = new ConditionWithLogic() { partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 100, treatment = "on" } } }; conditionsWithLogic.Add(conditionWithLogic); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); splitCache.AddSplit("test1", new ParsedSplit() { name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic }); splitCache.AddSplit("test2", new ParsedSplit() { name = "test2", conditions = conditionsWithLogic }); splitCache.AddSplit("test3", new ParsedSplit() { name = "test3", conditions = conditionsWithLogic }); splitCache.AddSplit("test4", new ParsedSplit() { name = "test4", conditions = conditionsWithLogic }); splitCache.AddSplit("test5", new ParsedSplit() { name = "test5", conditions = conditionsWithLogic }); splitCache.AddSplit("test6", new ParsedSplit() { name = "test6", conditions = conditionsWithLogic }); _blockUntilReadyService .Setup(mock => mock.IsSdkReady()) .Returns(true); var manager = new SplitManager(splitCache, _blockUntilReadyService.Object); manager.BlockUntilReady(1000); //Act var result = manager.SplitNames(); //Assert Assert.IsNotNull(result); Assert.AreEqual(6, result.Count); var firstResult = result.Find(x => x == "test1"); Assert.AreEqual(firstResult, "test1"); }
public void SplitReturnSuccessfully() { //Arrange var conditionsWithLogic = new List <ConditionWithLogic>(); var conditionWithLogic = new ConditionWithLogic() { conditionType = ConditionType.ROLLOUT, partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 90, treatment = "on" }, new PartitionDefinition() { size = 10, treatment = "off" } } }; conditionsWithLogic.Add(conditionWithLogic); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); splitCache.AddSplit("test1", new ParsedSplit() { name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic }); splitCache.AddSplit("test2", new ParsedSplit() { name = "test2", conditions = conditionsWithLogic }); splitCache.AddSplit("test3", new ParsedSplit() { name = "test3", conditions = conditionsWithLogic }); splitCache.AddSplit("test4", new ParsedSplit() { name = "test4", conditions = conditionsWithLogic }); splitCache.AddSplit("test5", new ParsedSplit() { name = "test5", conditions = conditionsWithLogic }); splitCache.AddSplit("test6", new ParsedSplit() { name = "test6", conditions = conditionsWithLogic }); _blockUntilReadyService .Setup(mock => mock.IsSdkReady()) .Returns(true); var manager = new SplitManager(splitCache, _blockUntilReadyService.Object); //Act var result = manager.Split("test1"); //Assert Assert.IsNotNull(result); Assert.AreEqual(result.name, "test1"); Assert.AreEqual(result.changeNumber, 10000); Assert.AreEqual(result.killed, false); Assert.AreEqual(result.trafficType, "user"); Assert.AreEqual(result.treatments.Count, 2); var firstTreatment = result.treatments[0]; Assert.AreEqual(firstTreatment, "on"); var secondTreatment = result.treatments[1]; Assert.AreEqual(secondTreatment, "off"); }
public void SplitReturnRolloutConditionTreatmentsSuccessfully() { //Arrange var conditionsWithLogic = new List <ConditionWithLogic>(); var conditionWithLogic = new ConditionWithLogic() { conditionType = ConditionType.WHITELIST, partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 100, treatment = "on" }, } }; conditionsWithLogic.Add(conditionWithLogic); var conditionWithLogic2 = new ConditionWithLogic() { conditionType = ConditionType.ROLLOUT, partitions = new List <PartitionDefinition>() { new PartitionDefinition() { size = 90, treatment = "on" }, new PartitionDefinition() { size = 10, treatment = "off" }, } }; conditionsWithLogic.Add(conditionWithLogic2); var splitCache = new InMemorySplitCache(new ConcurrentDictionary <string, ParsedSplit>()); splitCache.AddSplit("test1", new ParsedSplit() { name = "test1", changeNumber = 10000, killed = false, trafficTypeName = "user", seed = -1, conditions = conditionsWithLogic }); splitCache.AddSplit("test2", new ParsedSplit() { name = "test2", conditions = conditionsWithLogic }); splitCache.AddSplit("test3", new ParsedSplit() { name = "test3", conditions = conditionsWithLogic }); splitCache.AddSplit("test4", new ParsedSplit() { name = "test4", conditions = conditionsWithLogic }); splitCache.AddSplit("test5", new ParsedSplit() { name = "test5", conditions = conditionsWithLogic }); splitCache.AddSplit("test6", new ParsedSplit() { name = "test6", conditions = conditionsWithLogic }); var manager = new SplitManager(splitCache); //Act var result = manager.Split("test1"); //Assert Assert.IsNotNull(result); Assert.AreEqual(result.name, "test1"); Assert.AreEqual(result.treatments.Count, 2); var firstTreatment = result.treatments[0]; Assert.AreEqual(firstTreatment, "on"); var secondTreatment = result.treatments[1]; Assert.AreEqual(secondTreatment, "off"); }