Ejemplo n.º 1
0
        public void Persistence_of_simple_put_transaction_with_one_object()
        {
            var transaction1 = MakeTransaction(new Trade(1, 5465, "TATA", DateTime.Now.Date, 150));

            var engine = new PersistenceEngine();

            engine.Start();

            engine.NewTransaction(transaction1);

            // wait for the transaction log to be processed
            engine.WaitForPendingTransactions();

            engine.Stop();

            var processor = new TestProcessor();

            //reload data from persistent storage
            var unused = new ReliableStorage(processor);

            unused.LoadPersistentData();
            unused.Dispose();

            Assert.AreEqual(1, processor.LoadedObjects.Count);

            var reloaded = PackedObject.Unpack <Trade>(processor.LoadedObjects[0]);

            Assert.AreEqual("TATA", reloaded.Folder);
        }
Ejemplo n.º 2
0
        public void StreamUnstreamOneCacheable()
        {
            var schema = TypedSchemaFactory.FromType(typeof(CacheableTypeOk));

            var item1 = new CacheableTypeOk(1, 1003, "AHA", new DateTime(2010, 10, 02), 8);

            var it1 = PackedObject.Pack(item1, schema);

            using var stream = new MemoryStream();
            Streamer.ToStream(stream, it1);

            stream.Seek(0, SeekOrigin.Begin);

            var reloaded = Streamer.FromStream <PackedObject>(stream);
            var original = PackedObject.Unpack <CacheableTypeOk>(reloaded);


            Assert.IsTrue(original is CacheableTypeOk);
        }
        public void TestPackObject()
        {
            var object1     = GetObject1();
            var description = TypedSchemaFactory.FromType(typeof(CacheableTypeOk));

            var cached = PackedObject.Pack(object1, description);

            Assert.IsNotNull(cached);
            Assert.IsNotNull(cached.PrimaryKey);
            Assert.AreEqual(cached.PrimaryKey, 11);



            foreach (var key in cached.Values)
            {
                if (key.KeyName == "IndexKeyDate")
                {
                    Assert.AreEqual(key, new DateTime(2009, 10, 25).Ticks);
                    Assert.AreEqual(key.Type, KeyValue.OriginalType.Date);
                }

                if (key.KeyName == "IndexKeyValue")
                {
                    Assert.AreEqual(key, 15);
                    Assert.AreEqual(key.Type, KeyValue.OriginalType.SomeInteger);
                }

                if (key.Type == KeyValue.OriginalType.String)
                {
                    Assert.AreEqual(key, "FOL");
                    Assert.AreEqual(key.KeyName, "IndexKeyFolder");
                }
            }

            var fromCache = PackedObject.Unpack <CacheableTypeOk>(cached);

            Assert.AreEqual(object1, fromCache);
        }
Ejemplo n.º 4
0
        public void Test_packing_performance()
        {
            var home = new Home
            {
                Address      = "14 rue du chien qui fume",
                Bathrooms    = 2,
                Rooms        = 4,
                PriceInEuros = 200,
                CountryCode  = "FR",
                Comments     =
                {
                    new Comment {
                        Text = "Wonderful place", User = "******"
                    },
                    new Comment {
                        Text = "Very nice apartment"
                    }
                }
            };


            var       desc    = TypedSchemaFactory.FromType <Home>();
            const int objects = 10_000;

            {
                // warm up

                var unused   = PackedObject.Pack(home, desc);
                var json     = unused.AsJson();
                var reloaded = PackedObject.Unpack <Home>(unused);


                var watch = new Stopwatch();

                watch.Start();

                for (var i = 0; i < objects; i++)
                {
                    var packed = PackedObject.Pack(home, desc);
                    reloaded = PackedObject.Unpack <Home>(unused);
                }

                watch.Stop();


                Console.WriteLine($"Packing + unpacking {objects} objects took {watch.ElapsedMilliseconds} ms");
            }


            {
                // warm up

                desc.UseCompression = true;

                var unused   = PackedObject.Pack(home, desc);
                var reloaded = PackedObject.Unpack <Home>(unused);

                var watch = new Stopwatch();

                watch.Start();

                for (var i = 0; i < objects; i++)
                {
                    var packed = PackedObject.Pack(home, desc);
                    reloaded = PackedObject.Unpack <Home>(unused);
                }

                watch.Stop();


                Console.WriteLine(
                    $"Packing + unpacking {objects} objects with compression took {watch.ElapsedMilliseconds} ms");
            }
        }