| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using System;
- using System.Threading;
- using System.Threading.Tasks;
- using Common.Helper;
- using Common.Logger;
- using UNet;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using Network;
- namespace UNetTest
- {
- [TestClass]
- public class UServiceTest
- {
- private readonly Barrier barrier = new Barrier(3);
- private async void ClientEvent(IService service, string hostName, ushort port)
- {
- IChannel channel = await service.GetChannel(hostName, port);
- channel.SendAsync("0123456789".ToByteArray());
- byte[] bytes = await channel.RecvAsync();
- CollectionAssert.AreEqual("9876543210".ToByteArray(), bytes);
- barrier.RemoveParticipant();
- }
- private async void ServerEvent(IService service)
- {
- IChannel channel = await service.GetChannel();
- byte[] bytes = await channel.RecvAsync();
- CollectionAssert.AreEqual("0123456789".ToByteArray(), bytes);
- Array.Reverse(bytes);
- channel.SendAsync(bytes);
-
- barrier.RemoveParticipant();
- }
- [TestMethod]
- public void ClientSendToServer()
- {
- const string hostName = "127.0.0.1";
- const ushort port = 8889;
- IService clientService = new UService(hostName, 8888);
- IService serverService = new UService(hostName, 8889);
- Task.Factory.StartNew(() => clientService.Run(), TaskCreationOptions.LongRunning);
- Task.Factory.StartNew(() => serverService.Run(), TaskCreationOptions.LongRunning);
-
- // 往server host线程增加事件,accept
- serverService.Add(() => ServerEvent(serverService));
- Thread.Sleep(1000);
- // 往client host线程增加事件,client线程连接server
- clientService.Add(() => ClientEvent(clientService, hostName, port));
- barrier.SignalAndWait();
- }
- }
- }
|