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); }
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); }
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"); } }