public void TimestampNotEqual() { var newId = SequentialId.NewId(); var newId2 = new SequentialId(DateTime.UtcNow.AddSeconds(1)); Assert.AreNotEqual(newId.ToTimestamp(), newId2.ToTimestamp()); }
public void Equals() { var newId = SequentialId.NewId(); var newId2 = new SequentialId(newId.ToByteArray()); Assert.AreEqual(newId, newId2); }
public void NotEquals() { var newId = SequentialId.NewId(); var newId2 = SequentialId.NewId(); Assert.AreNotEqual(newId, newId2); }
public void TimestampEqual() { var newId = SequentialId.NewId(); var newId2 = new SequentialId(newId.ToByteArray()); Assert.AreEqual(newId.ToTimestamp(), newId2.ToTimestamp()); }
private void TestCreateNewNode() { var command = CreateCommandForNewDb("Tester.rootcause"); var problem = NodeFactory.CreateProblem("Problem", SequentialId.NewId()); SqliteDb.GetInstance().InsertTopLevel(problem); var node = NodeFactory.CreateCause("Node 1", SequentialId.NewId()); SqliteDb.GetInstance().AddNode(problem, node); string sql = $"SELECT * FROM nodes WHERE nodeid = '{node.NodeId}'"; command.CommandText = sql; SQLiteDataReader reader = command.ExecuteReader(); reader.Read(); string newNodeText = reader["nodetext"].ToString(); reader.Close(); sql = $"SELECT count(*) AS result FROM hierarchy WHERE parentid = '{problem.NodeId}' AND childid = '{node.NodeId}';"; command.CommandText = sql; reader = command.ExecuteReader(); reader.Read(); string hierarchies = reader["result"].ToString(); reader.Close(); CleanUpCommand(command); Assert.AreEqual("Node 1", newNodeText); Assert.AreEqual("1", hierarchies); }
/*This is the model that is created by CreateComplexModelForText * * Problem * | * ------------- * | | * Node 1.1 Node 1.2 * | | * | ------------------------- * | | | | * |---Node 2.1 Node 2.2 Node 2.3 * | | | * | ------------- | * | | | | * |---Node 3.1 Node 3.2- */ private Dictionary <string, Node> CreateComplexModelForTest() { var db = SqliteDb.GetInstance(); Node problem = NodeFactory.CreateProblem("Problem", SequentialId.NewId()); db.InsertTopLevel(problem); Node node1_1 = new AddNodeCommand(db, problem, "Node 1.1", true).NewNode; Node node1_2 = new AddNodeCommand(db, problem, "Node 1.2", true).NewNode; Node node2_1 = new AddNodeCommand(db, node1_2, "Node 2.1", true).NewNode; Node node2_2 = new AddNodeCommand(db, node1_2, "Node 2.2", true).NewNode; Node node2_3 = new AddNodeCommand(db, node1_2, "Node 2.3", true).NewNode; Node node3_1 = new AddNodeCommand(db, node2_2, "Node 3.1", true).NewNode; Node node3_2 = new AddNodeCommand(db, node2_2, "Node 3.2", true).NewNode; new AddLinkCommand(db, node1_1, node2_1, true); new AddLinkCommand(db, node2_1, node3_1, true); new AddLinkCommand(db, node2_3, node3_2, true); return(new Dictionary <string, Node>() { { problem.Text, problem }, { node1_1.Text, node1_1 }, { node1_2.Text, node1_2 }, { node2_1.Text, node2_1 }, { node2_2.Text, node2_2 }, { node2_3.Text, node2_3 }, { node3_1.Text, node3_1 }, { node3_2.Text, node3_2 } }); }
private void TestCreateProblemStatement() { var command = CreateCommandForNewDb("Tester.rootcause"); var node = NodeFactory.CreateProblem("This is my problem", SequentialId.NewId()); SqliteDb.GetInstance().InsertTopLevel(node); string nodeId = node.NodeId.ToString(); string sql = $"SELECT count(*) AS result FROM toplevel WHERE nodeid = '{nodeId}'"; command.CommandText = sql; SQLiteDataReader reader = command.ExecuteReader(); reader.Read(); string toplevels = reader["result"].ToString(); reader.Close(); sql = $"SELECT * FROM nodes WHERE nodeid = '{nodeId}'"; command.CommandText = sql; reader = command.ExecuteReader(); reader.Read(); string topLevelId = reader["nodeid"].ToString(); string topLevelText = reader["nodetext"].ToString(); reader.Close(); CleanUpCommand(command); Assert.AreEqual("1", toplevels); Assert.AreEqual(nodeId, topLevelId); Assert.AreEqual("This is my problem", topLevelText); }
public void CollisionTest() { int count = 5000000; var set = new HashSet <SequentialId>(); for (int i = 0; i < count; i++) { set.Add(SequentialId.NewId()); } Assert.AreEqual(count, set.Count); }
public void TestSequentiality() { long[] ids = new long[100]; for (int i = 0; i < 100; i++) { ids[i] = SequentialId.NewId(); System.Diagnostics.Debug.WriteLine(ids[i]); } for (int i = 1; i < 100; i++) { Assert.AreEqual(1, ids[i].CompareTo(ids[i - 1]), $"Failed on {i}"); } }
private void TestChangeNodeText() { var command = CreateCommandForNewDb("Tester.rootcause"); var problem = NodeFactory.CreateProblem("Problem", SequentialId.NewId()); SqliteDb.GetInstance().InsertTopLevel(problem); SqliteDb.GetInstance().ChangeNodeText(problem, "This is my problem"); string sql = $"SELECT * FROM nodes WHERE nodeid = '{problem.NodeId}';"; command.CommandText = sql; SQLiteDataReader reader = command.ExecuteReader(); reader.Read(); string newText = reader["nodetext"].ToString(); reader.Close(); CleanUpCommand(command); Assert.AreEqual("This is my problem", newText); }
public void GuidRace() { int count = 15000000; var st = new Stopwatch(); st.Start(); for (int i = 0; i < count; i++) { var newId = SequentialId.NewId(); //Debug.WriteLine(newId); } st.Stop(); Debug.WriteLine($"{count.ToString("N0")} SequentialIds created in {st.Elapsed}"); st.Restart(); for (int i = 0; i < count; i++) { var newId = Guid.NewGuid(); //Debug.WriteLine(newId); } st.Stop(); Debug.WriteLine($"{count.ToString("N0")} Guids created in {st.Elapsed}"); st.Restart(); for (int i = 0; i < count; i++) { var newId = UuidUtil.NewSequentialId(); //Debug.WriteLine(newId); } st.Stop(); Debug.WriteLine($"{count.ToString("N0")} WinSequentialIds created in {st.Elapsed}"); }
private void TestRemoveLink() { var command = CreateCommandForNewDb("Tester.rootcause"); var problem = NodeFactory.CreateProblem("Problem", SequentialId.NewId()); var node1 = NodeFactory.CreateCause("Node 1", SequentialId.NewId()); var node2 = NodeFactory.CreateCause("Node 2", SequentialId.NewId()); SqliteDb.GetInstance().InsertTopLevel(problem); SqliteDb.GetInstance().AddNode(problem, node1); SqliteDb.GetInstance().AddNode(node1, node2); SqliteDb.GetInstance().AddLink(problem, node2); SqliteDb.GetInstance().RemoveLink(problem, node2); var expectedLinks = new Node[2, 2] { { problem, node1 }, { node1, node2 } }; TestHierarchy(command, expectedLinks); CleanUpCommand(command); }
/* This method builds a complex tree for some of the link and removal command testing. * The structure of the tree is as follows: * Problem * -> Node 1 * -> Node 1.1 * -> Node 1.2 * -> Node 2 * -> Node 2.1 * -> Node 2.1.1 * -> Node 2.2 */ private Dictionary <string, Node> BuildTestTree() { Dictionary <string, Node> dict = new Dictionary <string, Node>(); IRootCauseDb db = new NullDb(); dict.Add("Problem", NodeFactory.CreateProblem("Problem", SequentialId.NewId())); dict.Add("Node 1", NodeFactory.CreateCause("Node 1", SequentialId.NewId())); dict.Add("Node 1.1", NodeFactory.CreateCause("Node 1.1", SequentialId.NewId())); dict.Add("Node 1.2", NodeFactory.CreateCause("Node 1.2", SequentialId.NewId())); dict.Add("Node 2", NodeFactory.CreateCause("Node 2", SequentialId.NewId())); dict.Add("Node 2.1", NodeFactory.CreateCause("Node 2.1", SequentialId.NewId())); dict.Add("Node 2.1.1", NodeFactory.CreateCause("Node 2.1.1", SequentialId.NewId())); dict.Add("Node 2.2", NodeFactory.CreateCause("Node 2.2", SequentialId.NewId())); new AddLinkCommand(db, dict["Problem"], dict["Node 1"], true); new AddLinkCommand(db, dict["Problem"], dict["Node 2"], true); new AddLinkCommand(db, dict["Node 1"], dict["Node 1.1"], true); new AddLinkCommand(db, dict["Node 1"], dict["Node 1.2"], true); new AddLinkCommand(db, dict["Node 2"], dict["Node 2.1"], true); new AddLinkCommand(db, dict["Node 2"], dict["Node 2.2"], true); new AddLinkCommand(db, dict["Node 2.1"], dict["Node 2.1.1"], true); return(dict); }