public void Parcel_DeepClone_Benchmark() { const int CNT = 25000; var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var sw = System.Diagnostics.Stopwatch.StartNew(); for (var i = 0; i < CNT; i++) { var p2 = p1.DeepClone() as PeopleNamesParcel; Assert.IsFalse(object.ReferenceEquals(p1, p2)); Assert.IsFalse(object.ReferenceEquals(p1.Payload, p2.Payload)); Assert.IsTrue(p1.Payload.Count == p2.Payload.Count); Assert.AreEqual(p1.GDID, p2.GDID); } sw.Stop(); Console.WriteLine("NOTE: Core i7 3.2Ghz 14000 ops/sec on subsequent runs w/o optimization"); Console.WriteLine("Cloned {0} times in {1} ms at {2} ops/sec", CNT, sw.ElapsedMilliseconds, CNT / (sw.ElapsedMilliseconds / 1000d)); }
public void Create_Seal_SerializeDeserialize_Read() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(ParcelState.Creating, parcel.State); parcel.Seal(FakeNOPBank.Instance); var ser = new SlimSerializer(Parcel.STANDARD_KNOWN_SERIALIZER_TYPES); var ms = new MemoryStream(); ser.Serialize(ms, parcel); ms.Position = 0; var parcel2 = ser.Deserialize(ms) as PeopleNamesParcel; Assert.IsNotNull(parcel2); var payload2 = parcel2.Payload; Assert.IsNotNull(payload2); Assert.AreEqual(payload2.Count, names.Count); Assert.IsTrue(payload2.SequenceEqual(names)); }
public void Parcel_DeepClone_Benchmark_Parallel() { const int CNT = 100000; var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var sw = System.Diagnostics.Stopwatch.StartNew(); System.Threading.Tasks.Parallel.For(0, CNT, (i) => { var p2 = p1.DeepClone() as PeopleNamesParcel; Assert.IsFalse(object.ReferenceEquals(p1, p2)); Assert.IsFalse(object.ReferenceEquals(p1.Payload, p2.Payload)); Assert.IsTrue(p1.Payload.Count == p2.Payload.Count); Assert.AreEqual(p1.GDID, p2.GDID); }); sw.Stop(); Console.WriteLine("NOTE: Core i7 x 6 cores 3.2Ghz 47000+ ops/sec on subsequent runs w/o optimization in non-server GC mode"); Console.WriteLine("Cloned {0} times in {1} ms at {2} ops/sec", CNT, sw.ElapsedMilliseconds, CNT / (sw.ElapsedMilliseconds / 1000d)); }
public void ForgetPayloadCopy() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(ParcelState.Creating, parcel.State); Assert.IsTrue(parcel.PayloadUnwrapped); Assert.IsFalse(parcel.HasWrappedPayload); parcel.Seal(FakeNOPBank.Instance);//SEAL!!!!!!!!!!!!!!!! Assert.IsTrue(parcel.PayloadUnwrapped); Assert.IsFalse(parcel.HasWrappedPayload); parcel.ForgetPayloadCopy();//FORGET!!!!!!!!!!!!!!!!!!!! Assert.IsFalse(parcel.PayloadUnwrapped); Assert.IsTrue(parcel.HasWrappedPayload); //even after forget payload, i can get my payload back var payload = parcel.Payload; Assert.IsTrue(parcel.PayloadUnwrapped); Assert.IsTrue(parcel.HasWrappedPayload); Assert.AreEqual(4, payload.Count); Assert.AreEqual("Kozloff", payload[0]); Assert.AreEqual("Sergeev", payload[1]); Assert.AreEqual("Aroyan", payload[2]); Assert.AreEqual("Gurevich", payload[3]); }
public void Create_Seal_ValidationError() { var names = new List <string> { "Kozloff", "Sergeev", "NoAroyan", "Gurevich" }; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(ParcelState.Creating, parcel.State); parcel.Seal(FakeNOPBank.Instance); }
public void StateError_2() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(ParcelState.Creating, parcel.State); Assert.AreEqual(true, parcel.PayloadUnwrapped); parcel.Seal(FakeNOPBank.Instance); parcel.Validate(FakeNOPBank.Instance); }
public void Parcel_DeepClone_2_Equals_ToString() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var p2 = p1.DeepClone() as PeopleNamesParcel; Assert.IsFalse(object.ReferenceEquals(p1, p2)); Assert.IsTrue(p1.Equals(p2)); Console.WriteLine(p1.ToString()); }
public void Parcel_DeepClone_1() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var p2 = p1.DeepClone() as PeopleNamesParcel; Assert.IsFalse(object.ReferenceEquals(p1, p2)); Assert.IsFalse(object.ReferenceEquals(p1.Payload, p2.Payload)); Assert.IsTrue(p1.Payload.SequenceEqual(p2.Payload)); Assert.AreEqual(p1.GDID, p2.GDID); }
public void Create_Seal_Wrap() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(ParcelState.Creating, parcel.State); Assert.AreEqual(true, parcel.PayloadUnwrapped); parcel.Seal(FakeNOPBank.Instance); var buf = parcel.WrappedPayload; Assert.IsNotNull(buf); }
public void FullLifecycle() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(ParcelState.Creating, parcel.State); Assert.AreEqual(true, parcel.PayloadUnwrapped); parcel.Seal(FakeNOPBank.Instance); var ser = new SlimSerializer(Parcel.STANDARD_KNOWN_SERIALIZER_TYPES); var ms = new MemoryStream(); ser.Serialize(ms, parcel); ms.Position = 0; var parcel2 = ser.Deserialize(ms) as PeopleNamesParcel; Assert.IsNotNull(parcel2); Assert.IsTrue(parcel2.HasWrappedPayload); parcel2.Open(); Assert.IsFalse(parcel2.HasWrappedPayload); parcel2.Payload[1] = "Boyarskiy"; parcel2.Seal(FakeNOPBank.Instance); ms.Position = 0; ser.Serialize(ms, parcel2); ms.Position = 0; var parcel3 = ser.Deserialize(ms) as PeopleNamesParcel; Assert.IsTrue(new List <string> { "Kozloff", "Boyarskiy", "Aroyan", "Gurevich" }.SequenceEqual(parcel3.Payload)); }
public void Create_Seal_Wrap_UnwrapPayloadIntoOtherPayload() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(ParcelState.Creating, parcel.State); Assert.AreEqual(true, parcel.PayloadUnwrapped); parcel.Seal(FakeNOPBank.Instance); var buf = parcel.WrappedPayload; Assert.IsNotNull(buf); var ser = new SlimSerializer(Parcel.STANDARD_KNOWN_SERIALIZER_TYPES); var names2 = ser.Deserialize(new MemoryStream(buf)) as List <string>; Assert.IsNotNull(names2); Assert.AreEqual(names.Count, names2.Count); Assert.IsTrue(names2.SequenceEqual(names)); }