void Disconnect(ref ComClient client) { bool connected = true; Stopwatch sw = new Stopwatch(); client.OnDisconnected += (node) => { connected = false; }; client.Disconnect(); sw.Start(); while (true) { if (!client.IsConnected && !connected) { break; } else if (sw.Elapsed.Seconds >= 3) { client.Close(); throw new TimeoutException(); } Task.Delay(100); } sw.Stop(); client.Close(); }
protected void OnDeleteEvent(object sender, DeleteEventArgs a) { client.Close(); Application.Quit(); a.RetVal = true; }
//[Fact(Skip = "Skipped")] public void OpenClose() { Util.Log("OpenClose"); ComClient client = new ComClient(false); client.PortNumber = this.server.Port; client.ListenPortNumber = this.server.Port + 1; client.Open(); client.Close(); }
void Connect(ref ComClient client) { bool connected = false; Stopwatch sw = new Stopwatch(); client.SetBeaconAcceptFunction((data) => { if (data == "Test") { return(true); } else { return(false); } }); client.OnConnected += (node) => { connected = true; }; client.Open(); client.AcceptBeacon = true; //server.Server.BeaconStart(); //server.Server.SendConnectBeacon("127.0.0.1"); client.Connect("127.0.0.1"); sw.Start(); while (true) { if (client.IsConnected && connected) { break; } else if (sw.Elapsed.Seconds >= 3) { client.Close(); server.Server.BeaconStop(); throw new TimeoutException(); } Task.Delay(100); } sw.Stop(); }
//[Fact(Skip = "Skipped")] public void StressTestUnreliable() { Util.Log("StressTestUnreliable"); ComClient client = new ComClient(false); client.PortNumber = this.server.Port; client.ListenPortNumber = this.server.Port + 1; client.BufferSize = 8192 * 10; Connect(ref client); server.Server.BeaconStop(); int recvTestNum = 0; int sendTestNum = 0; //AddChannel TestClass testData = new TestClass(); testData.intData = 6; testData.floatData = 6.6f; testData.stringData = "Are you human?"; //Byte //Class client.AddChannel(new DataChannel <TestClass>((short)ChannelId.ClassUnRel, QosType.Unreliable, comp, enc, (node, data) => { if ( data.intData == testData.intData && data.floatData == testData.floatData && data.stringData == testData.stringData ) { recvTestNum++; } }, checkMode)); Random random = new Random(); sendTestNum = random.Next(500, 600); Util.Log("sendTestNum:" + sendTestNum); //Send for (int i = 0; i < sendTestNum; i++) { client.Send((short)ChannelId.ClassUnRel, testData); } Stopwatch sw = new Stopwatch(); sw.Reset(); sw.Start(); while (true) { if (recvTestNum == sendTestNum) { break; } else if (sw.Elapsed.Seconds >= 10) { float percennt = (float)recvTestNum / (float)sendTestNum * 100.0f; Util.Log("percent:" + percennt); if (percennt < 80.0f) { client.Close(); throw new InvalidProgramException(); } break; } Task.Delay(100); } sw.Stop(); Disconnect(ref client); }
//[Fact(Skip = "Skipped")] public void SendReceiveRaw() { Util.Log("SendReceiveRaw"); ComClient client = new ComClient(false); client.PortNumber = this.server.Port; client.ListenPortNumber = this.server.Port + 1; Connect(ref client); server.Server.BeaconStop(); //AddChannel bool boolCheck = false; bool byteCheck = false; bool shortCheck = false; bool intCheck = false; bool floatCheck = false; bool doubleCheck = false; bool stringCheck = false; bool classCheck = false; bool boolData = true; byte byteData = 246; short shortData = 361; int intData = 543; float floatData = 5.6f; double doubleData = 32.5; string stringData = "You are not human!"; TestClass testData = new TestClass(); testData.intData = 6; testData.floatData = 6.6f; testData.stringData = "Are you human?"; //Bool client.AddChannel(new DataChannel <bool>((short)ChannelId.BoolRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == boolData) { boolCheck = true; } }, checkMode)); //Byte client.AddChannel(new DataChannel <byte>((short)ChannelId.ByteRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == byteData) { byteCheck = true; } }, checkMode)); //Short client.AddChannel(new DataChannel <short>((short)ChannelId.ShortRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == shortData) { shortCheck = true; } }, checkMode)); //Int client.AddChannel(new DataChannel <int>((short)ChannelId.IntRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == intData) { intCheck = true; } }, checkMode)); //Float client.AddChannel(new DataChannel <float>((short)ChannelId.FloatRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == floatData) { floatCheck = true; } }, checkMode)); //Double client.AddChannel(new DataChannel <double>((short)ChannelId.DoubleRaw, QosType.Reliable, comp, enc, (node, data) => { Util.Log("double:" + data); if (data == doubleData) { doubleCheck = true; } }, checkMode)); //String client.AddChannel(new DataChannel <string>((short)ChannelId.StringRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == stringData) { stringCheck = true; } }, checkMode)); //Class client.AddChannel(new DataChannel <TestClass>((short)ChannelId.ClassRaw, QosType.Reliable, comp, enc, (node, data) => { Util.Log("class:" + data); if ( data.intData == testData.intData && data.floatData == testData.floatData && data.stringData == testData.stringData ) { classCheck = true; } }, checkMode)); //Send client.Send((short)ChannelId.BoolRaw, boolData); client.Send((short)ChannelId.ByteRaw, byteData); client.Send((short)ChannelId.ShortRaw, shortData); client.Send((short)ChannelId.IntRaw, intData); client.Send((short)ChannelId.FloatRaw, floatData); client.Send((short)ChannelId.DoubleRaw, doubleData); client.Send((short)ChannelId.StringRaw, stringData); client.Send((short)ChannelId.ClassRaw, testData); Stopwatch sw = new Stopwatch(); sw.Reset(); sw.Start(); while (true) { if (boolCheck && byteCheck && shortCheck && intCheck && floatCheck && doubleCheck && stringCheck && classCheck ) { break; } else if (sw.Elapsed.Seconds >= 2225) { client.Close(); throw new TimeoutException(); } Task.Delay(100); } sw.Stop(); Disconnect(ref client); }