public void TestMultiThreading() { const int numTestIterations = 5; for (int j = 0; j < numTestIterations; j++) { const int numThreads = 10; const int numPerThread = 1000; var threads = new List <Thread>(numThreads); var source = AnimalMessage.CreateTestMessage(); for (int i = 0; i < numThreads; i++) { threads.Add(new Thread(() => { RoundTrip(source, numPerThread, j > 0); })); } numVerified = 0; foreach (var thread in threads) { thread.Start(); } foreach (var thread in threads) { thread.Join(20000); } Assert.AreEqual(numThreads * numPerThread, numVerified); } }
public void TestAsMaps() { MsgPackSerializer.DefaultContext.SerializationMethod = SerializationMethod.Map; AnimalMessage msg = AnimalMessage.CreateTestMessage(); byte[] payload = msg.ToMsgPack(); Assert.IsNotNull(payload); Assert.AreNotEqual(0, payload.Length); AnimalMessage restored = MsgPackSerializer.Deserialize <AnimalMessage>(payload); VerifyAnimalMessage(msg, restored); }
public void TestNulls() { MsgPackSerializer.DefaultContext.SerializationMethod = SerializationMethod.Array; var msg = AnimalMessage.CreateTestMessage(); msg.AnimalColor = null; byte[] payload = msg.ToMsgPack(); Assert.IsNotNull(payload); Assert.AreNotEqual(0, payload.Length); var restored = MsgPackSerializer.Deserialize <AnimalMessage>(payload); Assert.IsNull(restored.AnimalColor); }
public void TestCompat() { MsgPackSerializer.DefaultContext.SerializationMethod = SerializationMethod.Array; AnimalMessage msg = AnimalMessage.CreateTestMessage(); byte[] payload = msg.ToMsgPack(); string msgFilename = Path.Combine(Environment.CurrentDirectory, "animal.msg"); string verifierFilename = Path.Combine(Environment.CurrentDirectory, "msgpack-sharp-verifier.exe"); File.WriteAllBytes(msgFilename, payload); string args = verifierFilename + " " + msgFilename; Process.Start("mono", args); Assert.IsTrue(File.Exists(msgFilename + ".out"), "The verifier program that uses other people's msgpack libs failed to successfully handle our message while running [mono " + args + "]"); payload = File.ReadAllBytes(msgFilename + ".out"); AnimalMessage restored = MsgPackSerializer.Deserialize <AnimalMessage>(payload); VerifyAnimalMessage(msg, restored); }
public void TestManualConfig() { var tank = new Tank() { Name = "M1", MaxSpeed = 65.0f, Cargo = AnimalMessage.CreateTestMessage() }; MsgPackSerializer.DefaultContext.RegisterSerializer <Tank>("MaxSpeed", "Name", "Cargo"); byte[] payload = tank.ToMsgPack(); Assert.IsNotNull(payload); Assert.AreNotEqual(0, payload.Length); var restoredTank = MsgPackSerializer.Deserialize <Tank>(payload); Assert.IsNotNull(restoredTank); Assert.AreEqual(tank.Name, restoredTank.Name); Assert.AreEqual(tank.MaxSpeed, restoredTank.MaxSpeed); VerifyAnimalMessage(tank.Cargo, restoredTank.Cargo); }