示例#1
0
        public MessageBase[] Test(MessageBase[] msgs)
        {
            m_sent = msgs;

            m_ev.Set();

            m_client.Join();
            m_server.Join();

            return m_received;
        }
示例#2
0
		public long Serialize(MessageBase[] msgs)
		{
			int numMessages = msgs.Length;

			m_stream.Position = 0;

			foreach (var msg in msgs)
				Serializer.SerializeWithLengthPrefix(m_stream, msg, PrefixStyle.Base128);

			m_stream.Flush();

			return m_stream.Position;
		}
示例#3
0
        public long Serialize(MessageBase[] msgs)
        {
            int numMessages = msgs.Length;

            m_stream.Position = 0;

            foreach (var msg in msgs)
                Serializer.Serialize(m_stream, msg);

            m_stream.Flush();

            return m_stream.Position;
        }
示例#4
0
        public override void Compare(MessageBase msg)
        {
            var m = (StructMessage)msg;
            A(m_struct1.Equals(m.m_struct1));

            A(m_struct2.Equals(m.m_struct2));
        }
示例#5
0
        public override void Compare(MessageBase msg)
        {
            var m = (StringMessage)msg;

            A(m_string == m.m_string);
        }
示例#6
0
        public override void Compare(MessageBase msg)
        {
            var m = (PrimitivesMessage)msg;

            A(m_bool == m.m_bool);

            A(m_byte == m.m_byte);
            A(m_sbyte == m.m_sbyte);
            A(m_char == m.m_char);
            A(m_ushort == m.m_ushort);
            A(m_short == m.m_short);
            A(m_uint == m.m_uint);
            A(m_int == m.m_int);
            A(m_ulong == m.m_ulong);
            A(m_long == m.m_long);

            A(m_single == m.m_single);
            A(m_double == m.m_double);

            A(m_enum == m.m_enum);
        }
示例#7
0
 public abstract void Compare(MessageBase msg);
示例#8
0
        public override void Compare(MessageBase msg)
        {
            var m = (StringMessage)msg;

            A(m_string == m.m_string);
        }
示例#9
0
        static void Test(IMemStreamTest test, MessageBase[] msgs)
        {
            test.Prepare(msgs.Length);

            /* Serialize part */
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();

                var c0 = GC.CollectionCount(0);
                var c1 = GC.CollectionCount(1);
                var c2 = GC.CollectionCount(2);

                var sw = Stopwatch.StartNew();

                long size = test.Serialize(msgs);

                sw.Stop();

                c0 = GC.CollectionCount(0) - c0;
                c1 = GC.CollectionCount(1) - c1;
                c2 = GC.CollectionCount(2) - c2;

                Console.WriteLine("{0,-13} | {1,-21} | {2,10} | {3,3} {4,3} {5,3} | {6,10} |",
                    test.Framework, "MemStream Serialize", sw.ElapsedMilliseconds, c0, c1, c2, size);
            }

            /* Deerialize part */

            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();

                var c0 = GC.CollectionCount(0);
                var c1 = GC.CollectionCount(1);
                var c2 = GC.CollectionCount(2);

                var sw = Stopwatch.StartNew();

                var received = test.Deserialize();

                sw.Stop();

                c0 = GC.CollectionCount(0) - c0;
                c1 = GC.CollectionCount(1) - c1;
                c2 = GC.CollectionCount(2) - c2;

                Console.WriteLine("{0,-13} | {1,-21} | {2,10} | {3,3} {4,3} {5,3} | {6,10} |",
                    test.Framework, "MemStream Deserialize", sw.ElapsedMilliseconds, c0, c1, c2, "");

                for (int i = 0; i < msgs.Length; ++i)
                {
                    var msg1 = msgs[i];
                    var msg2 = received[i];

                    msg1.Compare(msg2);
                }
            }
        }
示例#10
0
        static void Test(INetTest test, MessageBase[] msgs)
        {
            test.Prepare(msgs.Length);

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            var c0 = GC.CollectionCount(0);
            var c1 = GC.CollectionCount(1);
            var c2 = GC.CollectionCount(2);

            var sw = Stopwatch.StartNew();

            var received = test.Test(msgs);

            sw.Stop();

            c0 = GC.CollectionCount(0) - c0;
            c1 = GC.CollectionCount(1) - c1;
            c2 = GC.CollectionCount(2) - c2;

            Console.WriteLine("{0,-13} | {1,-21} | {2,10} | {3,3} {4,3} {5,3} | {6,10} |",
                test.Framework, "NetTest", sw.ElapsedMilliseconds, c0, c1, c2, "");

            if (Program.EnableResultCheck)
            {
                for (int i = 0; i < msgs.Length; ++i)
                {
                    var msg1 = msgs[i];
                    var msg2 = received[i];

                    msg1.Compare(msg2);
                }
            }
        }
示例#11
0
        public override void Compare(MessageBase msg)
        {
            var m = (ComplexMessage)msg;

            if (m_msg == null)
                A(m_msg == m.m_msg);
            else
                m_msg.Compare(m.m_msg);

            if (m_sealedClass == null)
                A(m_sealedClass == m.m_sealedClass);
            else
                m_sealedClass.Compare(m.m_sealedClass);

            if (m_abstractMsg == null)
                A(m_abstractMsg == m.m_abstractMsg);
            else
                ((SimpleClass)m_abstractMsg).Compare((SimpleClass)m.m_abstractMsg);

            if (m_ifaceMsg == null)
                A(m_ifaceMsg == m.m_ifaceMsg);
            else
                ((SimpleClass2)m_ifaceMsg).Compare((SimpleClass2)m.m_ifaceMsg);
        }
示例#12
0
 public override void Compare(MessageBase msg)
 {
     var m = (NullableDecimalMessage)msg;
     A(m_val == m.m_val);
 }
示例#13
0
        public static MessageBase[] CreateMessages(MyRandom rand, Type type, int numMessages)
        {
            var arr = new MessageBase[numMessages];

            var method = type.GetMethod("Create", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);
            var create = (CreateDelegate)Delegate.CreateDelegate(typeof(CreateDelegate), method);

            for (int i = 0; i < numMessages; ++i)
                arr[i] = create(rand);

            return arr;
        }
示例#14
0
        public override void Compare(MessageBase msg)
        {
            var m = (CustomSerializersMessage)msg;

            int lz = m_int3Arr.GetLength(0);
            int ly = m_int3Arr.GetLength(1);
            int lx = m_int3Arr.GetLength(2);

            for (int z = 0; z < lz; ++z)
                for (int y = 0; y < ly; ++y)
                    for (int x = 0; x < lx; ++x)
                        A(m_int3Arr[z, y, x] == m.m_int3Arr[z, y, x]);
        }
示例#15
0
        public override void Compare(MessageBase msg)
        {
            var m = (U8Message)msg;

            A(m_val == m.m_val);
        }
示例#16
0
 public override void Compare(MessageBase msg)
 {
     var m = (U8Message)msg;
     A(m_val == m.m_val);
 }
示例#17
0
        public override void Compare(MessageBase msg)
        {
            var m = (BoxedPrimitivesMessage)msg;

            A((bool)m_bool == (bool)m.m_bool);

            A((byte)m_byte == (byte)m.m_byte);
            A((int)m_int == (int)m.m_int);
            A((long)m_long == (long)m.m_long);

            A((MyEnum)m_enum == (MyEnum)m.m_enum);
        }
示例#18
0
        public override void Compare(MessageBase msg)
        {
            var m = (DictionaryMessage)msg;

            if (m_intMap == null)
                A(m_intMap == m.m_intMap);
            else
            {
                A(m_intMap.Count == m.m_intMap.Count);
                foreach (var kvp in m_intMap)
                    A(kvp.Value == m.m_intMap[kvp.Key]);
            }

            if (m_obMap == null)
                A(m_obMap == m.m_obMap);
            else
            {
                A(m_obMap.Count == m.m_obMap.Count);
                foreach (var kvp in m_obMap)
                    kvp.Value.Compare(m.m_obMap[kvp.Key]);
            }
        }
示例#19
0
        void Warmup()
        {
            var msgs = new MessageBase[] { new S16Message(), new ComplexMessage(), new IntArrayMessage() };

            IMemStreamTest t;

            t = new MemStreamTest(m_serializer);
            t.Prepare(msgs.Length);
            t.Serialize(msgs);
            t.Deserialize();

            if (Program.RunProtoBufTests)
            {
                t = new PBMemStreamTest();
                t.Prepare(msgs.Length);
                t.Serialize(msgs);
                t.Deserialize();
            }
        }
示例#20
0
        public override void Compare(MessageBase msg)
        {
            var m = (IntArrayMessage)msg;

            if (m_intArr == null)
            {
                A(m_intArr == m.m_intArr);
            }
            else
            {
                for (int i = 0; i < m_intArr.Length; ++i)
                    A(m_intArr[i] == m.m_intArr[i]);
            }
        }
示例#21
0
        public static MessageBase[] CreateMessages(Type type, int numMessages)
        {
            var arr = new MessageBase[numMessages];

            for (int i = 0; i < numMessages; ++i)
                arr[i] = (MessageBase)Activator.CreateInstance(type, s_rand);

            return arr;
        }
示例#22
0
 public abstract void Compare(MessageBase msg);