Beispiel #1
0
        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();
        }
Beispiel #3
0
        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);
        }
Beispiel #4
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);
            }
        }