static void fetchHitsTest() { LayerManager db = new LayerManager(InitMode.RESUME, @"c:\EmailTest\DB"); Console.WriteLine("====================== FETCH HITS TEST ======================="); Console.WriteLine("====================== FETCH HITS TEST ======================="); Console.WriteLine("====================== FETCH HITS TEST ======================="); Console.WriteLine("====================== FETCH HITS TEST ======================="); Console.WriteLine("====================== FETCH HITS TEST ======================="); Console.WriteLine("====================== FETCH HITS TEST ======================="); Console.WriteLine("====================== FETCH HITS TEST ======================="); var kprefix = new RecordKey().appendParsedKey(".zdata/index/jeske"); var first_row = db.FindNext(kprefix, true); Console.WriteLine("First foudn key: {0}", first_row); #if false int count = 0; foreach (var hit in db.scanForward(new ScanRange<RecordKey>(kprefix, RecordKey.AfterPrefix(kprefix), null))) { Console.WriteLine(hit); count++; } Console.WriteLine("scanned {0} hits", count); #endif }
public void T002_ScanDirections() { LayerManager db = new LayerManager(InitMode.NEW_REGION, "c:\\BENDtst\\3"); var rk_a = new RecordKey().appendParsedKey(".a"); var rk_b = new RecordKey().appendParsedKey(".b"); string[] keys = { ".a", ".b" }; foreach (var key in keys) { db.setValueParsed(key, "valueof:" + key); } { var rec = db.FindNext(rk_a, false); Assert.AreEqual(rk_b, rec.Key, "simple FindNext"); } { var rec = db.FindPrev(rk_b, false); Assert.AreEqual(rk_a, rec.Key, "simple FindPrev"); } var scan_range = new ScanRange<RecordKey>(rk_a, rk_b, null); // scan forward int count = 0; foreach (var row in db.scanForward(scan_range)) { Console.WriteLine("forward scan: " + row); if (count == keys.Length) { Assert.Fail("too many keys returned in scan"); } Assert.AreEqual(new RecordKeyType_String(keys[count]), row.Key.key_parts[0], "forward scan mistake"); count++; } if (count != keys.Length) { Assert.Fail("not enough keys returned in scan"); } // scan backward count = keys.Length; foreach (var row in db.scanBackward(scan_range)) { Console.WriteLine("backward scan: " + row); if (count == 0) { Assert.Fail("too many keys returned in scan backward"); } count--; Assert.AreEqual(new RecordKeyType_String(keys[count]), row.Key.key_parts[0], "backward scan mistake"); } if (count != 0) { Assert.Fail("not enough keys returned in scan"); } }
public void T001_WorkingSegmentReadWrite() { LayerManager db = new LayerManager(InitMode.NEW_REGION, "c:\\BENDtst\\3"); var rk = new RecordKey().appendParsedKey(".a"); db.setValueParsed(".a", "1"); KeyValuePair<RecordKey, RecordData> record; try { record = db.FindNext(rk, true); Assert.AreEqual(rk, record.Key, "fetched key does not match"); } catch (KeyNotFoundException) { Assert.Fail("couldn't find 'a' record"); } int found_recs = 0; var scan_range = new ScanRange<RecordKey>(rk, RecordKey.AfterPrefix(rk), null); foreach (var row in db.scanForward(scan_range)) { found_recs++; } Assert.AreEqual(1, found_recs, "found the wrong number of records in working segment scan!"); db.flushWorkingSegment(); try { record = db.FindNext(rk, true); Assert.AreEqual(rk, record.Key, "fetched key does not match (after flush)"); } catch (KeyNotFoundException) { Assert.Fail("couldn't find 'a' record"); } found_recs = 0; foreach (var row in db.scanForward( new ScanRange<RecordKey>(rk, RecordKey.AfterPrefix(rk), null))) { found_recs++; } Assert.AreEqual(1, found_recs, "found the wrong number of records after flush !"); }
public void T001_MultiWorkingSegmentReadWrite() { LayerManager db = new LayerManager(InitMode.NEW_REGION, "c:\\BENDtst\\3"); var rk = new RecordKey().appendParsedKey(".data/a"); db.setValueParsed(".data/a", "1"); KeyValuePair<RecordKey, RecordData> record; try { record = db.FindNext(rk, true); Assert.AreEqual(rk, record.Key, "fetched key does not match"); } catch (KeyNotFoundException) { Assert.Fail("couldn't find 'a' record"); } int found_recs = 0; var scan_range = new ScanRange<RecordKey>(rk, RecordKey.AfterPrefix(rk), null); foreach (var row in db.scanForward(scan_range)) { found_recs++; } Assert.AreEqual(1, found_recs, "found the wrong number of records in working segment scan!"); db.DEBUG_addNewWorkingSegmentWithoutFlush(); db.setValueParsed(".data/b", "2"); Console.WriteLine(""); Console.WriteLine("--- contents --"); db.debugDump(); Console.WriteLine(""); // ------------------------------ try { var rkb = new RecordKey().appendParsedKey(".data/b"); record = db.FindNext(rkb, true); Assert.AreEqual(rkb, record.Key, "fetched key does not match (after flush)"); } catch (KeyNotFoundException) { Assert.Fail("couldn't find 'b' record"); } found_recs = 0; var rk_prefix = new RecordKey().appendParsedKey(".data"); foreach (var row in db.scanForward( new ScanRange<RecordKey>(rk_prefix, RecordKey.AfterPrefix(rk_prefix), null))) { found_recs++; } Assert.AreEqual(2, found_recs, "found the wrong number of records after working segment addition !"); }