コード例 #1
0
ファイル: server_client_db_test.cs プロジェクト: lulzzz/Dev
        public void client_should_be_able_to_call_server_over_http_with_as()
        {
            var store = new PecanDocumentStore(
                "PecanDBTest",
                new DatabaseOptions(true)
            {
                RunAsServerWithAddress = "http://localhost:8018/",
                UseRemoteServerAdrressForClientRequests = "http://localhost:8018/"
            });

            string orderId;

            using (ISession session = store.OpenSession())
            {
                orderId = session.Save(
                    new Order
                {
                    Id   = "yo be",
                    Name = "wooo"
                });
            }
            using (ISession session = store.OpenSession())
            {
                var order = session.LoadAs <Order>(orderId);
                Assert.AreEqual(order.Id, "yo be");
            }
            using (ISession session = store.OpenSession())
            {
                var order = session.LoadAs <OrderIsh>(orderId);
                Assert.AreEqual(order.Id, "yo be");
            }
        }
コード例 #2
0
        public void it_should_perform_basic_operations2()
        {
            int      total   = 1000;
            var      store   = new PecanDocumentStore("PecanDBTest", new DatabaseOptions(true));
            ISession session = store.OpenSession();
            Task     task    = Task.Run(
                () =>
            {
                foreach (int i1 in Enumerable.Range(0, total))
                {
                    List <Order> result = session.Query <Order>(all => from every in all select every).ToList();
                }
            });

            foreach (int i1 in Enumerable.Range(0, total))
            {
                string orderId = session.Save(
                    new Order
                {
                    Name = "wooo"
                });
                var order = session.Load <Order>(orderId);
                session.SaveChanges(true);
            }
            // task.Wait();
        }
コード例 #3
0
 private static void CleanDB <T>(PecanDocumentStore store, string DocumentName)
 {
     using (ISession session = store.OpenSession())
     {
         foreach (PecanDocument <T> x in session.QueryDocument <T>(x => x, DocumentName))
         {
             try
             {
                 session.DeleteForever <T>(x.Id, DocumentName);
             }
             catch (Exception e)
             {
                 Console.WriteLine(e);
             }
         }
         foreach (PecanDocument <T> x in session.QueryDocument <T>(x => x))
         {
             try
             {
                 session.DeleteForever <T>(x.Id);
             }
             catch (Exception e)
             {
                 Console.WriteLine(e);
             }
         }
     }
 }
コード例 #4
0
        public void buggy_using_single_file()
        {
            var store = new PecanDocumentStore(
                "PecanDBTest",

                new DatabaseOptions(true)
            {
                //no ready yet
                //UseSingleFile = true
            });
            ISession session = store.OpenSession();

            foreach (int i1 in Enumerable.Range(0, 100))
            {
                string orderId = session.Save(
                    new Order
                {
                    Id   = "yo be",
                    Name = "wooo"
                });
                var order = session.Load <Order>(orderId);
                Assert.AreEqual(order.Name, "wooo");
                order.Name = "sam";
                session.SaveChanges(true);
                var order2 = session.Load <Order>(orderId);
                Assert.AreEqual(order2.Name, "sam");
                order2.Name = "sowhat";
                Assert.AreEqual(order2.Name, order.Name);
                List <Order> result = session.Query <Order>(all => from every in all select every).ToList();
            }
        }
コード例 #5
0
ファイル: dirty_tests2.cs プロジェクト: lulzzz/Dev
        public void TestMethod1()
        {
            var store = new PecanDocumentStore(
                "PecanDB",
                false,
                new DatabaseOptions
            {
                PrettifyDocuments = true,
                EnableCaching     = true
            });
            ISession session = store.OpenSession();

            /*
             * var total = 10000;
             * foreach (int i in Enumerable.Range(0, total))
             * {
             *   string id = session.StoreAndSave(new Order()
             *   {
             *       Id = "orders/1000",
             *       Name = "who" + i
             *   });
             * }
             * Parallel.For(1, total, i=> session.StoreAndSave(new Order()
             * {
             *   Id = "orders/1000",
             *   Name = "who" + i
             * }));
             */
            session.Save(
                new Order
            {
                Id   = "orders/1000",
                Name = "who"
            });

            Parallel.For(
                1,
                10,
                i =>
            {
                List <Order> ordsw3 = session.Query <Order>(orders => from order in orders select order).Take(2).ToList();
                List <Order> ordsw  = session.Query <Order>(orders => from order in orders select order).ToList();

                IEnumerable <Order> ords = session.Query <Order>(orders => from order in orders select order);
                List <Order> ord2        = session.Search <Order>(s => s.Contains("was10000")).ToList();
                List <Order> ord3        = session.Search <Order>(s => s.Contains("was100")).ToList();
                List <Order> ord4        = session.Search <Order>(s => s.Contains("w")).ToList();
            });

            Parallel.For(
                1,
                100,
                i =>
            {
                List <Order> ordsw = session.Query <Order>(orders => from order in orders select order).ToList();
            });
        }
コード例 #6
0
        private static void CheckThatPecanCanSaveAndRetrieveSimpleData <T>(T data, T updateData)
        {
            CheckThatPecanCanSaveAndRetrieveSimpleDataWithPredefinedId(data, updateData);
            string DocumentName = Guid.NewGuid().ToString();

            using (var store = new PecanDocumentStore(
                       "TestDB2",

                       new DatabaseOptions
                       //using (var store = new DocumentStoreInMemory(new DatabaseOptions()
            {
                MaxResponseTime = TimeSpan.FromMinutes(10)
            }))
            {
                CleanDB <T>(store, DocumentName);
                string id;
                string id2;
                using (ISession session = store.OpenSession())
                {
                    id  = session.Save(DocumentName, data);
                    id2 = session.Save(data);
                }
                T savedData;
                T savedData2;
                using (ISession session = store.OpenSession())
                {
                    try
                    {
                        savedData = session.Load <T>(id);
                        Assert.Fail();
                    }
                    catch (Exception e)
                    {
                    }
                    savedData2 = session.Load <T>(id2);
                }
                AssertAreExactlyEqualByValue(data, savedData2);
                using (ISession session = store.OpenSession())
                {
                    try
                    {
                        savedData = session.Load <T>(id2);
                        Assert.Fail();
                    }
                    catch (Exception e)
                    {
                    }

                    savedData = session.Load <T>(id, DocumentName);
                }
                AssertAreExactlyEqualByValue(data, savedData);

                //todo fix why save changes doesnt work when load document and doc is replaced
            }
        }
コード例 #7
0
 // [TestMethod]
 public void delete()
 {
     using (var store = new PecanDocumentStore("tester", null))
     {
         string lastId = "";
         using (ISession session = store.OpenSession())
         {
             List <FilesStorage> t = session.SearchFiles(s => s.Contains("me")).ToList();
             string m = session.SaveFile(@"C:\Users\Sa\Desktop\discard\www.saptarang.org\premium\html\onevent\img\icons\me.jpg");
         }
     }
 }
コード例 #8
0
        public void dynamic_test()
        {
            new List <bool>
            {
                true,
                false
            }.ForEach(
                cache =>
            {
                var store        = new PecanDocumentStore("PecanDBTest", new DatabaseOptions(cache));
                ISession session = store.OpenSession();
                foreach (int i1 in Enumerable.Range(0, 10))
                {
                    string orderId = session.Save(
                        new
                    {
                        Id   = "yo be",
                        Name = i1
                    });
                    string orderId2 = session.Save(
                        new object());
                    dynamic order = null;
                    TestHelperMethods.AssertAwait(
                        () =>
                    {
                        order = session.Load <dynamic>(orderId);
                        Assert.AreEqual(order.Name.ToString(), i1.ToString());

                        Order oo = session.LoadAs <dynamic, Order>(orderId);
                        Assert.AreEqual(oo.Name, i1.ToString());

                        Order oo2 = session.LoadAs <dynamic, Order>(orderId2);

                        var oo3     = session.LoadAs <Order>(orderId2);
                        dynamic oo4 = session.Load(orderId2);
                    });

                    order.Name = "sam";
                    session.SaveChanges(true);
                    var o          = session.Load <object>(orderId);
                    dynamic order2 = o;
                    Assert.AreEqual(order2.Name.ToString(), "sam");
                    order2.Name = "sowhat";
                    Assert.AreEqual(order2.Name.ToString(), order.Name.ToString());
                    List <dynamic> result = session.Query <object>(all => from every in all select every).ToList();
                }
            });
        }
コード例 #9
0
        public void load_type_as_another_type()
        {
            var      store   = new PecanDocumentStore("PecanDBTest", new DatabaseOptions(true));
            ISession session = store.OpenSession();

            foreach (int i1 in Enumerable.Range(0, 100))
            {
                string orderId = session.Save(
                    new Order
                {
                    Id   = "yo be",
                    Name = "wooo"
                });
                var      order  = session.Load <Order>(orderId);
                OrderNew order2 = session.LoadAs <Order, OrderNew>(orderId);
                Assert.AreEqual(order.Name, order2.Name);
            }
        }
コード例 #10
0
ファイル: dirty_tests2.cs プロジェクト: lulzzz/Dev
        public void savechanges()
        {
            var store = new PecanDocumentStore(
                "PecanDB",
                false,
                new DatabaseOptions
            {
                PrettifyDocuments = true,
                EnableCaching     = true,
                MaxResponseTime   = TimeSpan.FromMinutes(1)
            });
            ISession session = store.OpenSession();

            foreach (PecanDocument <Order> order in session.QueryDocument <Order>(orders => from order in orders select order))
            {
                session.DeleteForever <Order>(order.Id);
            }

            string t = session.Save(
                new Order
            {
                Id   = "yo be",
                Name = "wooo"
            });

            var m = session.Load <Order>(t);

            m.Name = "sam";
            session.SaveChanges(true);

            var m1 = store.OpenSession().Load <Order>(t);

            Assert.AreEqual("sam", m1.Name);

            m.Name = "sa";
            session.SaveChanges();
            var m2 = session.Load <Order>(t);

            Assert.AreEqual("sa", m2.Name);
            foreach (PecanDocument <Order> order in session.QueryDocument <Order>(orders => from order in orders select order))
            {
                session.DeleteForever <Order>(order.Id);
            }
        }
コード例 #11
0
ファイル: PecanDbWebApiService.cs プロジェクト: lulzzz/Dev
        public PecanDbWebApiService()
        {
            ServicePointManager.MaxServicePointIdleTime = Timeout.Infinite;
            var path = "PecanDBRemoteServer";

            try
            {
                this.store = new PecanDocumentStore(path,
                                                    false,
                                                    new DatabaseOptions
                {
                    DontWaitForWritesOnCreate = true
                });
            }
            catch (Exception e)
            {
                throw new Exception(path, e);
            }
        }
コード例 #12
0
        public void it_should_save_dynamic_and_load_json2()
        {
            var      store   = new PecanDocumentStore("PecanDBTest", new DatabaseOptions(true));
            ISession session = store.OpenSession();

            foreach (int i1 in Enumerable.Range(0, 100))
            {
                string orderId = session.Save(
                    new Order
                {
                    Id   = "yo be",
                    Name = "wooo"
                });
                var order = session.Load <Order>(orderId);
                Assert.AreEqual(order.Name, "wooo");

                string orderJson         = JsonConvert.SerializeObject(JsonConvert.DeserializeObject <PecanDocument <Order> >(session.LoadRawDocument <Order>(orderId)).DocumentEntity);
                string orderJsonExisting = JsonConvert.SerializeObject(order);
                Assert.AreEqual(orderJsonExisting, orderJson);
            }
        }
コード例 #13
0
        public void canUseNewStorageName()
        {
            var st = new PecanDocumentStore("tester", new DatabaseOptions()
            {
                StorageName = "tsn_" + Guid.NewGuid().ToString()
            });

            using (var store = st)
            {
                string lastId = "";
                using (ISession session = store.OpenSession())
                {
                    session.Save(new Order(), "tsn");
                }
            }

            using (var store = st)
            {
                string lastId = "";
                using (ISession session = store.OpenSession())
                {
                    session.Load <Order>("tsn");
                }
            }
            using (var store = st)
            {
                string lastId = "";
                using (ISession session = store.OpenSession())
                {
                    try
                    {
                        session.Load <Order>("tsn");
                        Assert.Fail();
                    }
                    catch (Exception e)
                    {
                    }
                }
            }
        }
コード例 #14
0
ファイル: dirty_tests2.cs プロジェクト: lulzzz/Dev
        public void performance1()
        {
            var store = new PecanDocumentStore(
                "PecanDB",
                false,
                new DatabaseOptions
            {
                PrettifyDocuments = true,
                EnableCaching     = true
            });
            ISession session = store.OpenSession();

            foreach (PecanDocument <Order> order in session.QueryDocument <Order>(orders => from order in orders select order))
            {
                session.DeleteForever <Order>(order.Id);
            }

            Parallel.For(
                1,
                100,
                i => session.Save(
                    new Order
            {
                Id   = "orders/1000",
                Name = "who"
            }));

            Parallel.For(
                1,
                100,
                i =>
            {
                List <Order> ordsw = session.Query <Order>(orders => from order in orders select order).ToList();
            });
            foreach (PecanDocument <Order> order in session.QueryDocument <Order>(orders => from order in orders select order))
            {
                session.DeleteForever <Order>(order.Id);
            }
        }
コード例 #15
0
        public void create_multiple_ids()
        {
            var logger = new DefaultPecanLogger(false); // new DefaultPecanLogger( true,"D:\\!MUST_TRASH.txt",null,  TimeSpan.FromSeconds(30));

            new List <bool>
            {
                true,
                false
            }.ForEach(
                cache =>
            {
                var store = new PecanDocumentStore("PecanDBTest", new DatabaseOptions(cache)
                {
                    Logger = logger
                });
                ISession session = store.OpenSession();
                foreach (int i1 in Enumerable.Range(0, 10))
                {
                    logger.Trace($"Test {i1}", $"ON {i1} ord1");
                    string orderId1 = session.Save(
                        "doc1",
                        new
                    {
                        Id   = "yo be",
                        Name = "doc1"
                    });
                    logger.Trace($"Test {i1}", $"ON {i1} ord2");
                    string orderId2 = session.Save(
                        "doc2",
                        new
                    {
                        Id   = "yo be",
                        Name = "doc2"
                    });
                    logger.Trace($"Test {i1}", $"ON {i1} DONE");
                }
            });
        }
コード例 #16
0
        public void dynamic_document_test()
        {
            var      store    = new PecanDocumentStore("PecanDBTest", new DatabaseOptions(true));
            ISession session  = store.OpenSession();
            string   orderId1 = session.Save(
                "doc1",
                new
            {
                Id   = "yo be",
                Name = "doc1"
            });
            string orderId2 = session.Save(
                "doc2",
                new
            {
                Id   = "yo be",
                Name = "doc2"
            });

            TestHelperMethods.AssertAwait(
                () =>
            {
                var order1 = session.Load <dynamic>(orderId1, "doc1");
                Assert.AreEqual(order1.Name.ToString(), "doc1");

                var order2 = session.Load <dynamic>(orderId2, "doc2");
                Assert.AreEqual(order2.Name.ToString(), "doc2");

                dynamic order11 = session.Load(orderId1, "doc1");
                Assert.AreEqual(order11.Name.ToString(), "doc1");

                dynamic order22 = session.Load(orderId2, "doc2");
                Assert.AreEqual(order22.Name.ToString(), "doc2");
                try
                {
                    var order5 = session.Load <dynamic>(orderId1);
                    Assert.Fail();
                }
                catch (Exception e)
                {
                }

                try
                {
                    var order6 = session.Load <dynamic>(orderId2);
                    Assert.Fail();
                }
                catch (Exception e)
                {
                }

                try
                {
                    dynamic order7 = session.Load(orderId1);
                    Assert.Fail();
                }
                catch (Exception e)
                {
                }

                try
                {
                    dynamic order8 = session.Load(orderId2);
                    Assert.Fail();
                }
                catch (Exception e)
                {
                }

                try
                {
                    var order3 = session.Load <dynamic>(orderId1, "doc2");
                    Assert.Fail();
                }
                catch (Exception e)
                {
                }

                try
                {
                    var order4 = session.Load <dynamic>(orderId2, "doc1");
                    Assert.Fail();
                }
                catch (Exception e)
                {
                }
            }
                );
        }
コード例 #17
0
ファイル: measuring_performance.cs プロジェクト: lulzzz/Dev
        public void RunPerformanceTest <T>(bool isParallel, string description, Func <int, ISession, Action> opearation)
        {
            new List <bool>
            {
                true,
                false
            }.ForEach(
                dontWaitForWritesOnCreate =>
            {
                for (int j = 0; j < this.numberOfSamples; j++)
                {
                    var store = new PecanDocumentStore(
                        "PecanDB",
                        false,
                        new DatabaseOptions
                    {
                        EnableCaching             = false,
                        DontWaitForWritesOnCreate = dontWaitForWritesOnCreate
                    });
                    ISession session = store.OpenSession();
                    try
                    {
                        foreach (PecanDocument <T> order in session.QueryDocument <T>(orders => from order in orders select order))
                        {
                            session.DeleteForever <T>(order.Id);
                        }
                    }
                    catch (Exception e)
                    {
                    }
                    // Create new stopwatch
                    var stopwatch            = new Stopwatch();
                    var validationOperations = new ConcurrentQueue <Action>();
                    // Begin timing
                    stopwatch.Start();

                    if (isParallel)
                    {
                        Parallel.For(1, this.total, i => validationOperations.Enqueue(opearation(i, session)));
                    }
                    else
                    {
                        foreach (int i in Enumerable.Range(0, this.total))
                        {
                            validationOperations.Enqueue(opearation(i, session));
                        }
                    }
                    // Stop timing
                    stopwatch.Stop();
                    Console.Write($"{j} {(dontWaitForWritesOnCreate ? "" : "DONT WAIT FOR CREATE")} - Time elapsed: {stopwatch.Elapsed.TotalMilliseconds}ms : {description} with {this.total} iteration - RATE {this.total / (stopwatch.Elapsed.TotalMilliseconds / 1000)} op/sec");

                    var validationStopwatch = new Stopwatch();
                    validationStopwatch.Start();

                    Action validationOperation;
                    while (validationOperations.TryDequeue(out validationOperation))
                    {
                        if (validationOperation != null)
                        {
                            TestHelperMethods.AssertAwait(validationOperation);
                        }
                    }

                    validationStopwatch.Stop();
                    Console.WriteLine($"VALIDATION TIMING elapsed: {validationStopwatch.Elapsed.TotalMilliseconds}ms ");

                    try
                    {
                        foreach (PecanDocument <T> order in session.QueryDocument <T>(orders => from order in orders select order))
                        {
                            session.DeleteForever <T>(order.Id);
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
            });
        }
コード例 #18
0
ファイル: when_pecan_db_is_used.cs プロジェクト: lulzzz/Dev
        private static void RunTest(bool enableCaching, Order data, bool useInMemoryStorage)
        {
            if (data == null)
            {
                return;
            }
            var store = new PecanDocumentStore(
                Guid.NewGuid().ToString(),
                useInMemoryStorage,
                new DatabaseOptions(enableCaching)
                );

            Order  loadedData;
            Order  queriedData;
            Order  searchedData;
            Order  queriedDocumentData;
            Order  deletedData;
            string id;

            using (ISession session = store.OpenSession())
            {
                id = session.Save(data);
                Thread.Sleep(1000);
            }
            using (ISession session = store.OpenSession())
            {
                loadedData = session.Load <Order>(id);
            }
            using (ISession session = store.OpenSession())
            {
                queriedData = session.Query <Order>(orders => from order in orders where order.Name == data.Name select order).First();
            }
            using (ISession session = store.OpenSession())
            {
                searchedData = session.Search <Order>(search => search == data.Name).First();
            }
            using (ISession session = store.OpenSession())
            {
                queriedDocumentData = session.QueryDocument <Order>(documents => from document in documents where document.Id == id select document).First().DocumentEntity;
            }

            Order modifiedData;

            using (ISession session = store.OpenSession())
            {
                modifiedData = session.Load <Order>(id);
                //modify order id
                modifiedData.Id = Guid.NewGuid().ToString();
                session.SaveChanges();
            }

            using (ISession session = store.OpenSession())
            {
                Order result = session.Query <Order>(orders => from order in orders where order.Id == modifiedData.Id select order).First();
                Assert.AreEqual(modifiedData.Id, result.Id, "Unable to modify order id");
                var ord = session.Load <Order>(id);
                //swithc id back
                ord.Id = data.Id;
                session.SaveChanges();
                loadedData = session.Load <Order>(id);
            }

            string jsonData                = JsonConvert.SerializeObject(data);
            string jsonLoadedData          = JsonConvert.SerializeObject(loadedData);
            string jsonQueriedData         = JsonConvert.SerializeObject(queriedData);
            string jsonSearchedData        = JsonConvert.SerializeObject(searchedData);
            string jsonQueriedDocumentData = JsonConvert.SerializeObject(queriedDocumentData);

            using (ISession session = store.OpenSession())
            {
                session.Delete <Order>(id);
            }
            using (ISession session = store.OpenSession())
            {
                try
                {
                    session.Load <Order>(id);
                    Assert.Fail("tried to load a deleted data");
                }
                catch (Exception e)
                {
                }
            }
            //System.Threading.Thread.Sleep(500);
            using (ISession session = store.OpenSession())
            {
                deletedData = session.Load <Order>(id, null, true);
            }
            string jsonDeletedData = JsonConvert.SerializeObject(deletedData);

            using (ISession session = store.OpenSession())
            {
                session.DeleteForever <Order>(id);
            }

            using (ISession session = store.OpenSession())
            {
                try
                {
                    session.Load <Order>(id, null, true);
                    Assert.Fail("tried to load data already deleted forever");
                }
                catch (Exception e)
                {
                }
            }
            int count = 0;

            while (true)
            {
                try
                {
                    Assert.AreEqual(jsonData, jsonLoadedData, "original data");
                    Assert.AreEqual(jsonData, jsonQueriedData, "query data");
                    Assert.AreEqual(jsonData, jsonSearchedData, "search");
                    Assert.AreEqual(jsonData, jsonQueriedDocumentData, "query document");
                    //Assert.AreEqual(jsonData, jsonDeletedData,"deleted");
                    break;
                }
                catch (Exception e)
                {
                    count++;
                    Thread.Sleep(300);
                    if (count > 10)
                    {
                        throw e;
                    }
                }
            }
        }