public void ForksManager_KeyDeleteTest() { var store = new StackExchangeRedisKeyValueStore("localhost:6379"); store.FlushKeys("KVSF*"); var manager = new ForksManager <StackExchangeRedisKeyValueStore.StackExchangeRedisDataTypesEnum>(store); manager.CreateApp(3, "ForkDeleteTest", string.Empty); var forkId = manager.CreateFork("test1", "some test fork", 1); var wrapper = manager.GetWrapper(forkId); wrapper.StringSet(new List <KeyValuePair <string, int> > { new KeyValuePair <string, int>("testKey1", 1), new KeyValuePair <string, int>("testKey2", 2) }.ToArray()); forkId = manager.CreateFork("test2", "some test fork", 2); wrapper = manager.GetWrapper(forkId); wrapper.StringSet("testKey3", 3); wrapper.StringSet("testKey2", 4); wrapper.KeyDelete(new string[] { "testKey2", "testKey3" }); var res = wrapper.StringGet <int>(new string[] { "testKey1", "testKey2", "testKey3" }); Assert.AreEqual(1, res["testKey1"]); Assert.AreEqual(1, res.Count); }
public void ForksManager_PruneTest() { var store = new StackExchangeRedisKeyValueStore("localhost:6379"); store.FlushKeys("KVSF*"); var manager = new ForksManager <StackExchangeRedisKeyValueStore.StackExchangeRedisDataTypesEnum>(store); manager.CreateApp(3, "test", "some test app"); var wrapper = manager.GetWrapper(1); wrapper.StringSet("1", 1); var forkId = manager.CreateFork("test2", "some test fork", 1); wrapper = manager.GetWrapper(forkId); wrapper.StringSet("2", 2); wrapper.StringSet("3", 3); wrapper.StringSet("4", 4); forkId = manager.CreateFork("test2", "some test fork", 2); wrapper = manager.GetWrapper(forkId); wrapper.KeyDelete("2"); wrapper.StringSet("3", 4); wrapper.StringSet("5", 5); var forkId2 = manager.CreateFork("test2", "some test fork", 2); wrapper = manager.GetWrapper(forkId2); wrapper.KeyDelete("3"); wrapper.StringSet("2", 2); wrapper.StringSet("6", 6); wrapper.StringSet("5", 4); var newForkId = manager.PruneForks(forkId2); wrapper = manager.GetWrapper(newForkId); var values = wrapper.StringGet <int>(new string[] { "1", "2", "3", "4", "5", "6" }); Assert.AreEqual(5, values.Count); Assert.AreEqual(1, values["1"]); Assert.AreEqual(2, values["2"]); Assert.AreEqual(4, values["4"]); Assert.AreEqual(4, values["5"]); Assert.AreEqual(6, values["6"]); }
public void ForksWrapper_ForkDeleteTest() { var store = new StackExchangeRedisKeyValueStore("localhost:6379"); store.FlushKeys("KVSF*"); var manager = new ForksManager <StackExchangeRedisKeyValueStore.StackExchangeRedisDataTypesEnum>(store); manager.CreateApp(1, "test", "some test app"); var masterWrapper = manager.GetWrapper(1); var forkId = manager.CreateFork("test2", "some test fork", 1); var forkId2 = manager.CreateFork("test3", "some test fork", 1); var forkId3 = manager.CreateFork("test4", "some test fork", 2); manager.DeleteFork(forkId3); manager.DeleteFork(forkId2); manager.DeleteFork(forkId); }
public void ForksWrapper_GetMasterForksTest() { var store = new StackExchangeRedisKeyValueStore("localhost:6379"); store.FlushKeys("KVSF*"); var manager = new ForksManager <StackExchangeRedisKeyValueStore.StackExchangeRedisDataTypesEnum>(store); manager.CreateApp(1, "test", "some test app"); var masterWrapper = manager.GetWrapper(1); var forkId = manager.CreateFork("test2", "some test fork", 1); var forkId2 = manager.CreateFork("test3", "some test fork", 1); var forkId3 = manager.CreateFork("test4", "some test fork", forkId2); var forkId4 = manager.CreateFork("new master", "some test fork"); var masterForks = manager.GetMasterForks(); Assert.AreEqual(2, masterForks.Count); }
private static void ManageForks(ForksManager <StackExchangeRedisKeyValueStore.StackExchangeRedisDataTypesEnum> manager) { Console.Clear(); DisplayForks(manager); Console.WriteLine("Manage forks"); Console.WriteLine("1 - Create new fork"); Console.WriteLine("2 - Merge forks"); Console.WriteLine("3 - Prune fork"); Console.WriteLine("4 - Delete fork"); var input = Console.ReadLine(); if (string.IsNullOrEmpty(input)) { return; } var choice = int.Parse(input); switch (choice) { case 1: Console.WriteLine("New Name:"); var name = Console.ReadLine(); Console.WriteLine("Description:"); var description = Console.ReadLine(); Console.WriteLine("Parent fork Id (keep empty for new master fork):"); var parentForkIdString = Console.ReadLine(); int?parentFork = null; if (!string.IsNullOrEmpty(parentForkIdString)) { parentFork = int.Parse(parentForkIdString); } try { var newForkId = manager.CreateFork(name, description, parentFork); Console.WriteLine($"Fork {newForkId} was created"); Thread.Sleep(500); } catch (Exception e) { Console.WriteLine(e.ToString()); Thread.Sleep(500); } return; case 2: DisplayForks(manager); Console.WriteLine("Choose origin fork id"); var originForkIdString = Console.ReadLine(); if (string.IsNullOrEmpty(originForkIdString)) { return; } int originForkId = int.Parse(originForkIdString); Console.WriteLine("Choose target fork id"); var targetForkIdString = Console.ReadLine(); if (string.IsNullOrEmpty(targetForkIdString)) { return; } int targetForkId = int.Parse(targetForkIdString); try { var newForkId = manager.MergeFork(originForkId, targetForkId); Console.WriteLine($"Merged Fork {newForkId} was created"); Thread.Sleep(500); } catch (Exception e) { Console.WriteLine(e.ToString()); Thread.Sleep(500); } return; case 3: DisplayForks(manager); Console.WriteLine("Choose fork id to prune (create new master)"); var pruneForkIdString = Console.ReadLine(); if (string.IsNullOrEmpty(pruneForkIdString)) { return; } int pruneForkId = int.Parse(pruneForkIdString); try { var newForkId = manager.PruneForks(pruneForkId); Console.WriteLine($"New master fork {newForkId} was created from fork {pruneForkId}"); Thread.Sleep(500); } catch (Exception e) { Console.WriteLine(e.ToString()); Thread.Sleep(500); } return; case 4: DisplayForks(manager); Console.WriteLine("Choose fork id to delete (Only leaves)"); var deleteForkIdString = Console.ReadLine(); if (string.IsNullOrEmpty(deleteForkIdString)) { return; } int deleteForkId = int.Parse(deleteForkIdString); try { var deleted = manager.DeleteFork(deleteForkId); var not = deleted ? " " : " not "; Console.WriteLine($"Fork {deleteForkId} was{not}deleted"); Thread.Sleep(500); } catch (Exception e) { Console.WriteLine(e.ToString()); Thread.Sleep(500); } return; default: break; } }