Example #1
0
        public void detect_changes_then_clear_the_changes()
        {
            var a = Target.Random();
            var b = Target.Random();
            var c = Target.Random();
            var d = Target.Random();

            var serializer = new JilSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);


            var a1 = map.Get <Target>(a.Id, serializer.ToJson(a));

            a1.Long++;

            var b1 = map.Get <Target>(b.Id, serializer.ToJson(b));
            var c1 = map.Get <Target>(c.Id, serializer.ToJson(c));

            c1.Long++;

            var d1 = map.Get <Target>(d.Id, serializer.ToJson(d));


            var changes = map.DetectChanges();

            changes.Each(x => x.ChangeCommitted());


            map.DetectChanges().Any().ShouldBeFalse();
        }
Example #2
0
        public void write_multiple_calls_with_json_supplied()
        {
            // Just forcing the table and schema objects to be created
            var initialTarget = Target.Random();

            theSession.Store(initialTarget);
            theSession.SaveChanges();

            var batch = theStore.Advanced.CreateUpdateBatch();

            var target1 = Target.Random();
            var target2 = Target.Random();
            var target3 = Target.Random();

            var upsert = theMapping.UpsertFunction;

            var serializer = new JilSerializer();

            batch.Sproc(upsert).Param("docId", target1.Id).JsonBody("doc", serializer.ToJson(target1)).Param("docVersion", Guid.NewGuid()).Param("docDotNetType", typeof(Target).AssemblyQualifiedName);
            batch.Sproc(upsert).Param("docId", target2.Id).JsonBody("doc", serializer.ToJson(target2)).Param("docVersion", Guid.NewGuid()).Param("docDotNetType", typeof(Target).AssemblyQualifiedName);
            batch.Sproc(upsert).Param("docId", target3.Id).JsonBody("doc", serializer.ToJson(target3)).Param("docVersion", Guid.NewGuid()).Param("docDotNetType", typeof(Target).AssemblyQualifiedName);



            batch.Execute();
            batch.Connection.Dispose();

            var targets = theSession.Query <Target>().ToArray();

            targets.Any(x => x.Id == target1.Id).ShouldBeTrue();
            targets.Any(x => x.Id == target2.Id).ShouldBeTrue();
            targets.Any(x => x.Id == target3.Id).ShouldBeTrue();
        }
Example #3
0
        public void detect_changes_with_multiple_dirties()
        {
            var a = Target.Random();
            var b = Target.Random();
            var c = Target.Random();
            var d = Target.Random();

            var serializer = new JilSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);


            var a1 = map.Get <Target>(a.Id, serializer.ToJson(a));

            a1.Long++;

            var b1 = map.Get <Target>(b.Id, serializer.ToJson(b));
            var c1 = map.Get <Target>(c.Id, serializer.ToJson(c));

            c1.Long++;

            var d1 = map.Get <Target>(d.Id, serializer.ToJson(d));


            var changes = map.DetectChanges();

            changes.Count().ShouldBe(2);
            changes.Any(x => x.Id.As <Guid>() == a1.Id).ShouldBeTrue();
            changes.Any(x => x.Id.As <Guid>() == c1.Id).ShouldBeTrue();
        }
Example #4
0
        public void JsonNetPerformanceTests(int docCount, bool warmup)
        {
            Trace.WriteLine($"JsonNetPerformanceTests: warmup={docCount}, count={docCount}");
            var docs = new Fixture().CreateMany<TestDocument>(docCount).ToList();
            MiniProfiler.Start();
            var mp = MiniProfiler.Current;
            Trace.WriteLine("performance test on: " + docs.Count() + " docs");

            var jilSserializer = new JilSerializer();
            Trace.WriteLine("start JIL");
            if (warmup) jilSserializer.ToJson(new Fixture().Create<TestDocument>()); // warmup
            using (mp.Step("JIL serialization"))
            {
                1.Times(i =>
                {
                    foreach (var doc in docs)
                        jilSserializer.ToJson(doc);
                });
            }

            var jsonNetSerializer = new JsonNetSerializer();
            Trace.WriteLine("start JSONNET");
            if (warmup) jsonNetSerializer.ToJson(new Fixture().Create<TestDocument>()); // warmup
            using (mp.Step("JSONNET serialization"))
            {
                1.Times(i =>
                {
                    foreach (var doc in docs)
                        jsonNetSerializer.ToJson(doc);
                });
            }

            var textSerializer = new ServiceStackTextSerializer();
            Trace.WriteLine("start JSONNET");
            if (warmup) textSerializer.ToJson(new Fixture().Create<TestDocument>()); // warmup
            using (mp.Step("SERVICESTACK serialization"))
            {
                1.Times(i =>
                {
                    foreach (var doc in docs)
                        textSerializer.ToJson(doc);
                });
            }

            Trace.WriteLine($"trace: {mp.RenderPlainText()}");
            MiniProfiler.Stop();
        }
Example #5
0
        public void get_with_json()
        {
            var serializer = new JilSerializer();
            var target = new Target();
            var json = serializer.ToJson(target);

            var map = new NulloIdentityMap(serializer);

            var target2 = map.Get<Target>(target.Id, json);
            target2.Id.ShouldBe(target.Id);
        }
Example #6
0
        public void remove_item()
        {
            var target = Target.Random();
            var target2 = Target.Random();
            target2.Id = target.Id;

            var serializer = new JilSerializer();

            var map = new IdentityMap(serializer);

            var target3 = map.Get<Target>(target.Id, serializer.ToJson(target));

            // now remove it
            map.Remove<Target>(target.Id);

            var target4 = map.Get<Target>(target.Id, serializer.ToJson(target2));
            target4.ShouldNotBeNull();
            target4.ShouldNotBeTheSameAs(target3);

        }
Example #7
0
        public void detect_changes_with_no_changes()
        {
            var a = Target.Random();
            var b = Target.Random();
            var c = Target.Random();
            var d = Target.Random();

            var serializer = new JilSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);


            var a1 = map.Get <Target>(a.Id, serializer.ToJson(a));
            var b1 = map.Get <Target>(a.Id, serializer.ToJson(b));
            var c1 = map.Get <Target>(a.Id, serializer.ToJson(c));
            var d1 = map.Get <Target>(a.Id, serializer.ToJson(d));

            // no changes

            map.DetectChanges().Any().ShouldBeFalse();
        }
Example #8
0
        public void lazy_get_hit()
        {
            var serializer = new JilSerializer();
            var target = new Target();
            var json = serializer.ToJson(target);

            var map = new NulloIdentityMap(serializer);

            var target2 = map.Get<Target>(target.Id, () => new FetchResult<Target>(target, json));
            target2.Id.ShouldBe(target.Id);
           
        }
        public void lazy_get_hit()
        {
            var serializer = new JilSerializer();
            var target     = new Target();
            var json       = serializer.ToJson(target);

            var map = new NulloIdentityMap(serializer);

            var target2 = map.Get <Target>(target.Id, () => new FetchResult <Target>(target, json));

            target2.Id.ShouldBe(target.Id);
        }
Example #10
0
        public void remove_item()
        {
            var target  = Target.Random();
            var target2 = Target.Random();

            target2.Id = target.Id;

            var serializer = new JilSerializer();

            var map = new IdentityMap(serializer, null);

            var target3 = map.Get <Target>(target.Id, serializer.ToJson(target), null);

            // now remove it
            map.Remove <Target>(target.Id);

            var target4 = map.Get <Target>(target.Id, serializer.ToJson(target2), null);

            target4.ShouldNotBeNull();
            target4.ShouldNotBeTheSameAs(target3);
        }
        public void get_with_json()
        {
            var serializer = new JilSerializer();
            var target     = new Target();
            var json       = serializer.ToJson(target);

            var map = new NulloIdentityMap(serializer);

            var target2 = map.Get <Target>(target.Id, json);

            target2.Id.ShouldBe(target.Id);
        }
        public void get_value_on_subsequent_requests()
        {
            var target = Target.Random();

            var serializer = new JilSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            var target2 = map.Get<Target>(target.Id, serializer.ToJson(target));
            var target3 = map.Get<Target>(target.Id, serializer.ToJson(target));
            var target4 = map.Get<Target>(target.Id, serializer.ToJson(target));
            var target5 = map.Get<Target>(target.Id, serializer.ToJson(target));

            target2.Id.ShouldBe(target.Id);
            target3.Id.ShouldBe(target.Id);
            target4.Id.ShouldBe(target.Id);
            target5.Id.ShouldBe(target.Id);

            target2.ShouldBeTheSameAs(target3);
            target2.ShouldBeTheSameAs(target4);
            target2.ShouldBeTheSameAs(target5);
        }
        public void get_value_on_first_request()
        {
            var target = Target.Random();

            var serializer = new JilSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            var target2 = map.Get<Target>(target.Id, serializer.ToJson(target));

            target2.Id.ShouldBe(target.Id);
            target2.ShouldNotBeTheSameAs(target);
        }
Example #14
0
        public void get_value_on_subsequent_requests()
        {
            var target = Target.Random();

            var serializer = new JilSerializer();

            var map = new IdentityMap(serializer, null);

            var target2 = map.Get <Target>(target.Id, serializer.ToJson(target), null);
            var target3 = map.Get <Target>(target.Id, serializer.ToJson(target), null);
            var target4 = map.Get <Target>(target.Id, serializer.ToJson(target), null);
            var target5 = map.Get <Target>(target.Id, serializer.ToJson(target), null);

            target2.Id.ShouldBe(target.Id);
            target3.Id.ShouldBe(target.Id);
            target4.Id.ShouldBe(target.Id);
            target5.Id.ShouldBe(target.Id);

            target2.ShouldBeTheSameAs(target3);
            target2.ShouldBeTheSameAs(target4);
            target2.ShouldBeTheSameAs(target5);
        }
Example #15
0
        public void get_value_on_first_request()
        {
            var target = Target.Random();

            var serializer = new JilSerializer();

            var map = new IdentityMap(serializer, null);

            var target2 = map.Get <Target>(target.Id, serializer.ToJson(target), null);

            target2.Id.ShouldBe(target.Id);
            target2.ShouldNotBeTheSameAs(target);
        }
Example #16
0
        public void get_value_on_first_request_with_lazy_json()
        {
            var target = Target.Random();

            var serializer = new JilSerializer();

            var map = new IdentityMap(serializer);

            var target2 = map.Get<Target>(target.Id, () => serializer.ToJson(target));

            target2.Id.ShouldBe(target.Id);
            target2.ShouldNotBeTheSameAs(target);
        }
Example #17
0
        public void get_value_on_first_request_with_lazy_json()
        {
            var target = Target.Random();

            var serializer = new JilSerializer();

            var map = new IdentityMap(serializer, null);

            var json         = serializer.ToJson(target);
            var clonedTarget = serializer.FromJson <Target>(json);

            var target2 = map.Get <Target>(target.Id, () =>
            {
                return(new FetchResult <Target>(clonedTarget, json, null));
            });

            target2.Id.ShouldBe(target.Id);
            target2.ShouldNotBeTheSameAs(target);
        }
        public void get_value_on_first_request_with_lazy_json()
        {
            var target = Target.Random();

            var serializer = new JilSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            var json = serializer.ToJson(target);
            var clonedTarget = serializer.FromJson<Target>(json);

            var target2 = map.Get<Target>(target.Id, () =>
            {
                
                return new FetchResult<Target>(clonedTarget, json);
            });

            target2.Id.ShouldBe(target.Id);
            target2.ShouldNotBeTheSameAs(target);
        }
        public void detect_changes_then_clear_the_changes()
        {
            var a = Target.Random();
            var b = Target.Random();
            var c = Target.Random();
            var d = Target.Random();

            var serializer = new JilSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);


            var a1 = map.Get<Target>(a.Id, serializer.ToJson(a));
            a1.Long++;

            var b1 = map.Get<Target>(b.Id, serializer.ToJson(b));
            var c1 = map.Get<Target>(c.Id, serializer.ToJson(c));
            c1.Long++;

            var d1 = map.Get<Target>(d.Id, serializer.ToJson(d));


            var changes = map.DetectChanges();

            changes.Each(x => x.ChangeCommitted());


            map.DetectChanges().Any().ShouldBeFalse();
        }
        public void detect_changes_with_multiple_dirties()
        {
            var a = Target.Random();
            var b = Target.Random();
            var c = Target.Random();
            var d = Target.Random();

            var serializer = new JilSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);


            var a1 = map.Get<Target>(a.Id, serializer.ToJson(a));
            a1.Long++;

            var b1 = map.Get<Target>(b.Id, serializer.ToJson(b));
            var c1 = map.Get<Target>(c.Id, serializer.ToJson(c));
            c1.Long++;

            var d1 = map.Get<Target>(d.Id, serializer.ToJson(d));


            var changes = map.DetectChanges();
            changes.Count().ShouldBe(2);
            changes.Any(x => x.Id.As<Guid>() == a1.Id).ShouldBeTrue();
            changes.Any(x => x.Id.As<Guid>() == c1.Id).ShouldBeTrue();
        }
        public void detect_changes_with_no_changes()
        {
            var a = Target.Random();
            var b = Target.Random();
            var c = Target.Random();
            var d = Target.Random();

            var serializer = new JilSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);


            var a1 = map.Get<Target>(a.Id, serializer.ToJson(a));
            var b1 = map.Get<Target>(a.Id, serializer.ToJson(b));
            var c1 = map.Get<Target>(a.Id, serializer.ToJson(c));
            var d1 = map.Get<Target>(a.Id, serializer.ToJson(d));

            // no changes

            map.DetectChanges().Any().ShouldBeFalse();
        }
Example #22
0
        public void JsonNetPerformanceTests(int docCount, bool warmup)
        {
            Trace.WriteLine($"JsonNetPerformanceTests: warmup={docCount}, count={docCount}");
            var docs = new Fixture().CreateMany <TestDocument>(docCount).ToList();

            MiniProfiler.Start();
            var mp = MiniProfiler.Current;

            Trace.WriteLine("performance test on: " + docs.Count() + " docs");

            var jilSserializer = new JilSerializer();

            Trace.WriteLine("start JIL");
            if (warmup)
            {
                jilSserializer.ToJson(new Fixture().Create <TestDocument>());        // warmup
            }
            using (mp.Step("JIL serialization"))
            {
                1.Times(i =>
                {
                    foreach (var doc in docs)
                    {
                        jilSserializer.ToJson(doc);
                    }
                });
            }

            var jsonNetSerializer = new JsonNetSerializer();

            Trace.WriteLine("start JSONNET");
            if (warmup)
            {
                jsonNetSerializer.ToJson(new Fixture().Create <TestDocument>());        // warmup
            }
            using (mp.Step("JSONNET serialization"))
            {
                1.Times(i =>
                {
                    foreach (var doc in docs)
                    {
                        jsonNetSerializer.ToJson(doc);
                    }
                });
            }

            var textSerializer = new ServiceStackTextSerializer();

            Trace.WriteLine("start JSONNET");
            if (warmup)
            {
                textSerializer.ToJson(new Fixture().Create <TestDocument>());        // warmup
            }
            using (mp.Step("SERVICESTACK serialization"))
            {
                1.Times(i =>
                {
                    foreach (var doc in docs)
                    {
                        textSerializer.ToJson(doc);
                    }
                });
            }

            Trace.WriteLine($"trace: {mp.RenderPlainText()}");
            MiniProfiler.Stop();
        }
Example #23
0
        public void get_value_on_subsequent_requests_with_lazy_json()
        {
            var target = Target.Random();

            var serializer = new JilSerializer();

            var map = new IdentityMap(serializer);

            var target2 = map.Get<Target>(target.Id, () => serializer.ToJson(target));
            var target3 = map.Get<Target>(target.Id, () => serializer.ToJson(target));
            var target4 = map.Get<Target>(target.Id, () => serializer.ToJson(target));
            var target5 = map.Get<Target>(target.Id, () => serializer.ToJson(target));

            target2.Id.ShouldBe(target.Id);
            target3.Id.ShouldBe(target.Id);
            target4.Id.ShouldBe(target.Id);
            target5.Id.ShouldBe(target.Id);

            target2.ShouldBeTheSameAs(target3);
            target2.ShouldBeTheSameAs(target4);
            target2.ShouldBeTheSameAs(target5);
        }
Example #24
0
        public void get_value_on_subsequent_requests_with_lazy_json()
        {
            var target = Target.Random();

            var serializer = new JilSerializer();

            var map = new DirtyTrackingIdentityMap(serializer, null);

            var target2 = map.Get <Target>(target.Id, () => new FetchResult <Target>(target, serializer.ToJson(target)));
            var target3 = map.Get <Target>(target.Id, () => new FetchResult <Target>(target, serializer.ToJson(target)));
            var target4 = map.Get <Target>(target.Id, () => new FetchResult <Target>(target, serializer.ToJson(target)));
            var target5 = map.Get <Target>(target.Id, () => new FetchResult <Target>(target, serializer.ToJson(target)));

            target2.Id.ShouldBe(target.Id);
            target3.Id.ShouldBe(target.Id);
            target4.Id.ShouldBe(target.Id);
            target5.Id.ShouldBe(target.Id);

            target2.ShouldBeTheSameAs(target3);
            target2.ShouldBeTheSameAs(target4);
            target2.ShouldBeTheSameAs(target5);
        }