static void document_db_test() { Console.WriteLine("======================= Document DB Test =============================="); LayerManager raw_db = new LayerManager(InitMode.NEW_REGION, "c:\\BENDtst\\main"); StepsDatabase db_broker = new StepsDatabase(raw_db); IStepsDocumentDB doc_db = db_broker.getDocumentDatabase(); doc_db.ensureIndex( new string[] { "name" } ); doc_db.ensureIndex(new string[] { "age"}); doc_db.Insert(new BsonDocument { { "_id" , "user1" }, { "name" , "David" }, { "age", 60 } }); doc_db.Insert(new BsonDocument { { "_id" , "user2" }, { "name" , "Tom" }, { "age", 32 } }); doc_db.Insert(new BsonDocument { { "_id" , "user3" }, { "name" , "Tom" }, { "age", 32 } }); raw_db.debugDump(); int count=0; foreach (var doc in doc_db.Find(new BsonDocument() )) { Console.WriteLine(" [{0}] = {1}", count++, doc.ToJson()); } var change_spec = new BsonDocument{ { "$inc" , new BsonDocument { { "age", 1 } } } }; Console.WriteLine("change spec = " + change_spec.ToJson()); doc_db.Update(new BsonDocument(), change_spec); raw_db.debugDump(); foreach (var doc in doc_db.Find(new BsonDocument () )) { Console.WriteLine(" [{0}] = {1}", count++, doc.ToJson()); } }
static void Main(string[] args) { bool isInitialStartup = false; // (1) read the config file string DBPATH = @"c:\BENDtst\main"; // ... if we are doing an initial startup... if (isInitialStartup) { // DO initial database setup and then end... LayerManager new_db = new LayerManager(InitMode.NEW_REGION, DBPATH); // ... return; } // (2) startup a snapshot/replica/document database LayerManager raw_db = new LayerManager(InitMode.RESUME, DBPATH); StepsDatabase db_broker = new StepsDatabase(raw_db); // how do we address subsetting / databases / collections??? IStepsDocumentDB doc_db = db_broker.getDocumentDatabase(); // (3) startup the web-status interface StepsStatusServer myStatusServer = new StepsStatusServer(81, raw_db); Thread thread = new Thread(new ThreadStart(myStatusServer.listen)); thread.Start(); // (4) start the REST api handler (listening for client connections) StepsRestAPIServer myServer = new StepsRestAPIServer(5985, doc_db); myServer.listen(); // (main runloop) // !! SHUTDOWN !! thread.Abort(); }
static void do_test() { Console.WriteLine("ReplTest1 startup..."); LayerManager raw_db = new LayerManager(InitMode.NEW_REGION, @"C:\BENDtst\repl"); StepsDatabase db_factory = new StepsDatabase(raw_db); Console.WriteLine("----------------[ init two servers together, write some records ]-----------------"); ReplHandler repl_1 = db_factory.getReplicatedDatabase_Fresh("guid1"); waitUntilActive(raw_db, repl_1); repl_1.setValueParsed("a/1", "1"); ReplHandler repl_2 = db_factory.getReplicatedDatabase_Join("guid2", repl_1.getServerGuid()); waitUntilActive(raw_db, repl_2); repl_2.setValueParsed("a/2", "5"); Console.WriteLine("-----------------"); raw_db.debugDump(); repl_2.setValueParsed("a/2", "6"); Thread.Sleep(7000); raw_db.debugDump(); Console.WriteLine("-----------------[ remove one server, write some records ]----------------"); repl_2.Shutdown(); // wait until repl2 is really shutdown waitUntilState(raw_db, repl_2, ReplState.shutdown); // make sure our log does not continue from repl_2 logs repl_1.setValueParsed("c/1", "10"); repl_1.truncateLogs_Hack(); raw_db.debugDump(); Console.WriteLine("----------------[ reinit server 2 ]-----------------------------"); repl_2 = db_factory.getReplicatedDatabase_Resume("guid2"); waitUntilActive(raw_db, repl_2); Thread.Sleep(7000); raw_db.debugDump(); Thread.Sleep(7000); // Environment.Exit(1); // exit repl_2.setValueParsed("d/1", "20"); repl_1.setValueParsed("c/1", "10"); Thread.Sleep(1000); repl_2.truncateLogs_Hack(); Thread.Sleep(1000); repl_1.truncateLogs_Hack(); Console.WriteLine("----------------[ both logs should be truncated ]-----------------------------"); raw_db.debugDump(); Console.WriteLine("----------------[ create server 3 ]-----------------------------"); ReplHandler repl_3 = db_factory.getReplicatedDatabase_Join("guid3", "guid2"); Thread.Sleep(7000); raw_db.debugDump(); repl_3.setValueParsed("q/1", "10"); Thread.Sleep(7000); raw_db.debugDump(); Console.WriteLine("quitting.."); Environment.Exit(0); }
static void snapshot_test() { Console.WriteLine("======================= Snapshot DB Test =============================="); LayerManager raw_db = new LayerManager(InitMode.NEW_REGION, "c:\\BENDtst\\main"); StepsDatabase db_broker = new StepsDatabase(raw_db); IStepsKVDB generic_db = db_broker.getSnapshotDatabase(); StepsStageSnapshot db = (StepsStageSnapshot)generic_db; db.setValue(new RecordKey().appendParsedKey("test/1"), RecordUpdate.WithPayload("blah-t0")); IStepsKVDB db_snap = db.getSnapshot(); db.setValue(new RecordKey().appendParsedKey("test/1"), RecordUpdate.WithPayload("blah-t1")); var key = new RecordKey().appendParsedKey("test/1"); raw_db.debugDump(); Console.WriteLine("-------------------[ top level readback ] -------------------"); foreach (var rec in db.scanForward(new ScanRange<RecordKey>(key,new ScanRange<RecordKey>.maxKey(),null))) { Console.WriteLine(rec); } Console.WriteLine("-------------------[ snapshot readback ] -------------------"); foreach (var rec in db_snap.scanForward(new ScanRange<RecordKey>(key, new ScanRange<RecordKey>.maxKey(), null))) { Console.WriteLine(rec); } }