Esempio n. 1
0
        private void AvroMsftToAvro()
        {
            // avro-msft ser => avro deser

            var e = new InheritedEntity();

            e.FillDummyData();

            // Avro MSFT serialize
            var eBytes = SerializeAvroMsft(e);

            // Avro-Apache deserialize
            var eCodeGenEntity  = DeserializeAvro(eBytes);
            var eAppEntityRegen = new InheritedEntity();

            eAppEntityRegen.InjectFrom(eCodeGenEntity);

            // Compare the object (in JSON, easiest to do so)
            var eJson      = JsonConvert.SerializeObject(e);
            var eRegenJson = JsonConvert.SerializeObject(eAppEntityRegen);

            Console.Write("avro-msft ser => avro deser ");
            if (eJson != eRegenJson)
            {
                Console.WriteLine("FAILED !!!");
            }
            else
            {
                Console.WriteLine("passed");
            }
        }
Esempio n. 2
0
        public void RunExpt1()
        {
            // Quick copy-cat experiment trying to DER encode the InheritedEntity object
            // but by hand here
            var e = new InheritedEntity();

            e.FillDummyData();

            const int iterations   = 1000;
            var       asn1DerBytes = new byte[0];

            var sw = new Stopwatch();

            sw.Start();
            for (int i = 0; i < iterations; i++)
            {
                asn1DerBytes = SerializeAsn1(e);
            }
            sw.Stop();

            // x2 since we're only serializing here, (big) assumption
            // that a ser->deser route will be double, but ok for coarse measures
            var avgMs = sw.Elapsed.TotalMilliseconds * 2 / iterations;

            File.WriteAllBytes("Asn1Expt.der", asn1DerBytes);
            Console.WriteLine("Serialized via ASN.1 DER encoding to {0} bytes in {1,4:n4} ms: {2}",
                              asn1DerBytes.Length,
                              avgMs,
                              BitConverter.ToString(asn1DerBytes));
        }
Esempio n. 3
0
        public byte[] SerializeAvroMsft(InheritedEntity thisObj)
        {
            var serializer = new AvroSerializer(thisObj.GetType());

            using (var ms = new MemoryStream())
            {
                serializer.Serialize(thisObj, ms);
                return(ms.ToArray());
            }
        }
        static void RunTests()
        {
            // Pick an entity type
            //var originalObject = new SimpleEntity();
            var originalObject = new InheritedEntity();

            originalObject.FillDummyData();
            Test = new Test <InheritedEntity>();
            //Test = new Test<SimpleEntity>();

            Results = Test.RunTests(originalObject, NumOfObjects);
        }
        public void RunExpt1()
        {
            // Prepare input entity, we reuse existing init code
            // and just Inject (via Value Injecter library)
            var origMsg = new InheritedEntity();

            origMsg.FillDummyData();
            var origMsgJson = JsonConvert.SerializeObject(origMsg);

            Console.WriteLine("Original object is {0}", origMsgJson);


            // Serialization
            var tmsg = new InheritedEntityThrift();

            tmsg.InjectFrom(origMsg);
            var ms     = new MemoryStream();
            var tproto = new TCompactProtocol(new TStreamTransport(ms, ms));

            tmsg.Write(tproto);
            var tbytes = ms.ToArray();

            Console.WriteLine("Serialized to {0} bytes: {1}", tbytes.Length, BitConverter.ToString(tbytes));

            // Deserialization
            var ms2       = new MemoryStream(tbytes);
            var tproto2   = new TCompactProtocol(new TStreamTransport(ms2, ms2));
            var regenTMsg = new InheritedEntityThrift();

            regenTMsg.Read(tproto2);
            var regenMsg = new InheritedEntity();

            regenMsg.InjectFrom(regenTMsg);

            var regenMsgJson = JsonConvert.SerializeObject(regenMsg);

            Console.WriteLine("Regenerated object is {0}", regenMsgJson);
        }
Esempio n. 6
0
        private static byte[] SerializeAsn1(InheritedEntity e)
        {
            using (var ms = new MemoryStream())
            {
                var s = new DerSequenceGenerator(ms, 1, false);
                s.AddObject(new DerPrintableString(e.Message));
                s.AddObject(new DerPrintableString(e.FunctionCall));
                s.AddObject(new DerPrintableString(e.Parameters));
                s.AddObject(new DerPrintableString(e.Name));
                s.AddObject(new DerInteger(e.EmployeeId));

                var floatBytes = BitConverter.GetBytes(e.RaiseRate);
                // unable to find API to write floats, hacking away :/
                s.AddObject(new DerOctetString(floatBytes));

                s.AddObject(new DerPrintableString(e.AddressLine1));
                s.AddObject(new DerPrintableString(e.AddressLine2));
                s.AddObject(new DerOctetString(e.Icon));
                s.AddObject(new DerOctetString(e.LargeIcon));
                s.Close();

                return(ms.ToArray());
            }
        }