public void CanStorageDisposeInAResonableAmountOfTime() { BinaryDataListStorage bdls = new BinaryDataListStorage("MySweetNamespace", Guid.NewGuid()); // build insert value ;) var row = CreateBinaryDataListRow(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString()); DateTime start = DateTime.Now; // Insert information for (int i = 1; i <= 100000; i++) { bdls.Add(i, row); } DateTime end = DateTime.Now; double dif = (end.Ticks - (double)start.Ticks) / TimeSpan.TicksPerSecond; bdls.Dispose(); Assert.IsTrue(dif <= 3.5, "100k rows took too long to insert into storage, should be about 0.5 seconds { " + dif + " }"); Assert.AreEqual(0, bdls.Count, "Not all items disposed from row storage"); }
static IIndexIterator AddLotsOfRows(BinaryDataListStorage bdls) { var row = CreateBinaryDataListRow("1", "1", "Barney", "T", "Buchan"); var row2 = CreateBinaryDataListRow("2", "2", "Huggs", "W", "Naidu"); var row3 = CreateBinaryDataListRow("3", "3", "Trav", "A", "Fri"); var row4 = CreateBinaryDataListRow("4", "4", "Trav", "B", "Fri"); var row5 = CreateBinaryDataListRow("5", "5", "Huggs", "C", "Bear"); var row6 = CreateBinaryDataListRow("6", "6", "Huggs", "D", "Naidu"); bdls.Add(1, row); bdls.Add(2, row2); bdls.Add(3, row3); bdls.Add(4, row4); bdls.Add(5, row5); bdls.Add(6, row6); for (int i = 7; i <= 10; i++) { bdls.Add(i, row2); } for (int i = 11; i <= 20; i++) { bdls.Add(i, row3); } for (int i = 21; i <= 25; i++) { bdls.Add(i, row4); } for (int i = 26; i <= 30; i++) { bdls.Add(i, row5); } for (int i = 31; i <= 100; i++) { bdls.Add(i, row2); } for (int i = 101; i <= 1000; i++) { bdls.Add(i, row5); } for (int i = 1001; i <= 10000; i++) { bdls.Add(i, row); } var row7 = CreateBinaryDataListRow("7", "Seven", "Something", "02252", "Someone"); for (int i = 10001; i <= 50000; i++) { bdls.Add(i, row7); } return(new IndexIterator(null, 50000)); }
public void TryGetValuesWithRangeThrowsExceptionIfNoDataEndIndex() { BinaryDataListStorage bdls = new BinaryDataListStorage("MySweetNamespace", Guid.NewGuid()); // build insert value ;) var row = CreateBinaryDataListRow(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString()); // Insert information for (int i = 1; i <= 100000; i++) { bdls.Add(i, row); } const int startIndex = 1; const int endIndex = 100002; bdls.GetValues(startIndex, endIndex); }
public void TryGetValuesWithRange() { BinaryDataListStorage bdls = new BinaryDataListStorage("MySweetNamespace", Guid.NewGuid()); // build insert value ;) var row = CreateBinaryDataListRow(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString()); // Insert information for (int i = 1; i <= 100000; i++) { bdls.Add(i, row); } const int startIndex = 1; const int endIndex = 100; List<IBinaryDataListRow> rows = bdls.GetValues(startIndex, endIndex); Assert.AreEqual(99,rows.Count); Assert.IsFalse(rows[0].IsEmpty); Assert.IsFalse(rows[5].IsEmpty); }
public void DistinctGetValuesWhenHasDistinctValuesShouldReturnOnlyDistinctRows1MilOfRows100Col() { BinaryDataListStorage bdls = new BinaryDataListStorage("MySweetNamespace", Guid.NewGuid()); // build insert value ;) IIndexIterator keys = AddLotsOfRows1Mil(bdls); // Insert information List <int> distinctCols = new List <int> { 2, 4, 5, 7, 120, 134, 99, 78, 34 }; DateTime start = DateTime.Now; List <int> rows = bdls.DistinctGetRows(keys, distinctCols); DateTime end = DateTime.Now; double dif = (end.Ticks - (double)start.Ticks) / TimeSpan.TicksPerSecond; Assert.AreEqual(7, rows.Count); Assert.IsTrue(dif < 20, string.Format("Time taken: {0}", dif)); Console.Write(dif); }
public void TryGetValuesWithRange() { BinaryDataListStorage bdls = new BinaryDataListStorage("MySweetNamespace", Guid.NewGuid()); // build insert value ;) var row = CreateBinaryDataListRow(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString()); // Insert information for (int i = 1; i <= 100000; i++) { bdls.Add(i, row); } const int startIndex = 1; const int endIndex = 100; List <IBinaryDataListRow> rows = bdls.GetValues(startIndex, endIndex); Assert.AreEqual(99, rows.Count); Assert.IsFalse(rows[0].IsEmpty); Assert.IsFalse(rows[5].IsEmpty); }
public void DistinctGetValuesWhenHasDistinctValuesShouldReturnOnlyDistinctRows() { BinaryDataListStorage bdls = new BinaryDataListStorage("MySweetNamespace", Guid.NewGuid()); // build insert value ;) var row = CreateBinaryDataListRow("1", "1", "Barney", "T", "Buchan"); var row2 = CreateBinaryDataListRow("2", "2", "Huggs", "W", "Naidu"); var row3 = CreateBinaryDataListRow("3", "3", "Trav", "A", "Fri"); var row4 = CreateBinaryDataListRow("4", "4", "Trav", "B", "Fri"); var row5 = CreateBinaryDataListRow("5", "5", "Huggs", "C", "Bear"); var row6 = CreateBinaryDataListRow("6", "6", "Huggs", "D", "Naidu"); bdls.Add(1, row); bdls.Add(2, row2); bdls.Add(3, row3); bdls.Add(4, row4); bdls.Add(5, row5); bdls.Add(6, row6); // Insert information IIndexIterator keys = new IndexIterator(null, 6); List <int> distinctCols = new List <int> { 2, 4 }; List <int> rows = bdls.DistinctGetRows(keys, distinctCols); Assert.AreEqual(4, rows.Count); // now fetch each item ;) IBinaryDataListRow myRow; bdls.TryGetValue(rows[0], 1, out myRow); Assert.IsFalse(myRow.IsEmpty); bdls.TryGetValue(rows[3], 1, out myRow); Assert.IsFalse(myRow.IsEmpty); }
static IIndexIterator AddLotsOfRows1Mil(BinaryDataListStorage bdls) { var row = CreateBinaryDataListRow("1", "1", "Barney", "T", "Buchan"); var row2 = CreateBinaryDataListRow("2", "2", "Huggs", "W", "Naidu"); var row3 = CreateBinaryDataListRow("3", "3", "Trav", "A", "Fri"); var row4 = CreateBinaryDataListRow("4", "4", "Trav", "B", "Fri"); var row5 = CreateBinaryDataListRow("5", "5", "Huggs", "C", "Bear"); var row6 = CreateBinaryDataListRow("6", "6", "Huggs", "D", "Naidu"); bdls.Add(1, row); bdls.Add(2, row2); bdls.Add(3, row3); bdls.Add(4, row4); bdls.Add(5, row5); bdls.Add(6, row6); for (int i = 7; i <= 10; i++) { bdls.Add(i, row2); } for (int i = 11; i <= 20; i++) { bdls.Add(i, row3); } for (int i = 21; i <= 25; i++) { bdls.Add(i, row4); } for (int i = 26; i <= 30; i++) { bdls.Add(i, row5); } for (int i = 31; i <= 100; i++) { bdls.Add(i, row2); } for (int i = 101; i <= 1000; i++) { bdls.Add(i, row5); } for (int i = 1001; i <= 10000; i++) { bdls.Add(i, row); } var row7 = CreateBinaryDataListRow("7", "Seven", "Something", "02252", "Someone"); for (int i = 10001; i <= 50000; i++) { bdls.Add(i, row7); } for (int i = 50001; i <= 50100; i++) { bdls.Add(i, row); } for (int i = 50101; i <= 51000; i++) { bdls.Add(i, row2); } for (int i = 51001; i <= 60000; i++) { bdls.Add(i, row3); } for (int i = 60001; i <= 70000; i++) { bdls.Add(i, row4); } for (int i = 70001; i <= 80000; i++) { bdls.Add(i, row5); } for (int i = 80001; i <= 100000; i++) { bdls.Add(i, row6); } for (int i = 100001; i <= 1000000; i++) { bdls.Add(i, row7); } return new IndexIterator(null, 1000000); }
public void DistinctGetValuesWhenHasDistinctValuesShouldReturnOnlyDistinctRows1MilOfRows100Col() { BinaryDataListStorage bdls = new BinaryDataListStorage("MySweetNamespace", Guid.NewGuid()); // build insert value ;) IIndexIterator keys = AddLotsOfRows1Mil(bdls); // Insert information List<int> distinctCols = new List<int> { 2, 4, 5, 7, 120, 134, 99, 78, 34 }; DateTime start = DateTime.Now; List<int> rows = bdls.DistinctGetRows(keys, distinctCols); DateTime end = DateTime.Now; double dif = (end.Ticks - (double)start.Ticks) / TimeSpan.TicksPerSecond; Assert.AreEqual(7, rows.Count); Assert.IsTrue(dif < 20, string.Format("Time taken: {0}", dif)); Console.Write(dif); }
public void DistinctGetValuesWhenHasDistinctValuesShouldReturnOnlyDistinctRows() { BinaryDataListStorage bdls = new BinaryDataListStorage("MySweetNamespace", Guid.NewGuid()); // build insert value ;) var row = CreateBinaryDataListRow("1", "1", "Barney", "T", "Buchan"); var row2 = CreateBinaryDataListRow("2", "2", "Huggs", "W", "Naidu"); var row3 = CreateBinaryDataListRow("3", "3", "Trav", "A", "Fri"); var row4 = CreateBinaryDataListRow("4", "4", "Trav", "B", "Fri"); var row5 = CreateBinaryDataListRow("5", "5", "Huggs", "C", "Bear"); var row6 = CreateBinaryDataListRow("6", "6", "Huggs", "D", "Naidu"); bdls.Add(1, row); bdls.Add(2, row2); bdls.Add(3, row3); bdls.Add(4, row4); bdls.Add(5, row5); bdls.Add(6, row6); // Insert information IIndexIterator keys = new IndexIterator(null,6); List<int> distinctCols = new List<int> { 2, 4 }; List<int> rows = bdls.DistinctGetRows(keys, distinctCols); Assert.AreEqual(4, rows.Count); // now fetch each item ;) IBinaryDataListRow myRow; bdls.TryGetValue(rows[0], 1, out myRow); Assert.IsFalse(myRow.IsEmpty); bdls.TryGetValue(rows[3], 1, out myRow); Assert.IsFalse(myRow.IsEmpty); }