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