public async Task Test8() { IPAddress iPAddress = (await Dns.GetHostAddressesAsync("127.0.0.1"))[0]; Socket server1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); server1.Bind(new IPEndPoint(iPAddress, 8422)); server1.Listen(128); Socket server2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); server2.Bind(new IPEndPoint(iPAddress, 8423)); server2.Listen(128); Socket server3 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); server3.Bind(new IPEndPoint(iPAddress, 8424)); server3.Listen(128); Socket server4 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); server4.Bind(new IPEndPoint(iPAddress, 8425)); server4.Listen(128); var service = new Service(); service.AddMethod("Hello", this) .AddMethod("Sum", this) .Add <string>(OnewayCall) .Bind(server1) .Bind(server2) .Bind(server3) .Bind(server4); var client = new Client(/* "tcp4://127.0.0.1:8422" */); var lb = new NginxRoundRobinLoadBalance(new Dictionary <string, int>() { { "tcp4://127.0.0.1:8422", 1 }, { "tcp4://127.0.0.1:8423", 2 }, { "tcp4://127.0.0.1:8424", 3 }, { "tcp4://127.0.0.1:8425", 4 } }); client.Use(lb.Handler).Use(new ConcurrentLimiter(64).Handler).Use(new RateLimiter(50000).InvokeHandler); var proxy = client.UseService <ITestInterface>(); var n = 1000; var tasks = new Task <string> [n]; for (int i = 0; i < n; ++i) { tasks[i] = proxy.Hello("world" + i); } var results = await Task.WhenAll(tasks); for (int i = 0; i < n; ++i) { Assert.AreEqual(results[i], "Hello world" + i); } server1.Close(); server2.Close(); server3.Close(); server4.Close(); }
public async Task Test7() { IPAddress iPAddress = (await Dns.GetHostAddressesAsync("127.0.0.1"))[0]; TcpListener server1 = new TcpListener(iPAddress, 8418); server1.Start(); TcpListener server2 = new TcpListener(iPAddress, 8419); server2.Start(); TcpListener server3 = new TcpListener(iPAddress, 8420); server3.Start(); TcpListener server4 = new TcpListener(iPAddress, 8421); server4.Start(); var service = new Service(); service.AddMethod("Hello", this) .AddMethod("Sum", this) .Add <string>(OnewayCall) .Bind(server1) .Bind(server2) .Bind(server3) .Bind(server4); var client = new Client(/* "tcp4://127.0.0.1:8418" */); var lb = new NginxRoundRobinLoadBalance(new Dictionary <string, int>() { { "tcp4://127.0.0.1:8418", 1 }, { "tcp4://127.0.0.1:8419", 2 }, { "tcp4://127.0.0.1:8420", 3 }, { "tcp4://127.0.0.1:8421", 4 } }); client.Use(lb.Handler).Use(new ConcurrentLimiter(64).Handler).Use(new RateLimiter(50000).InvokeHandler); var proxy = client.UseService <ITestInterface>(); var n = 1000; var tasks = new Task <string> [n]; for (int i = 0; i < n; ++i) { tasks[i] = proxy.Hello("world" + i); } var results = await Task.WhenAll(tasks); for (int i = 0; i < n; ++i) { Assert.AreEqual(results[i], "Hello world" + i); } server1.Stop(); server2.Stop(); server3.Stop(); server4.Stop(); }
public async Task Test7() { UdpClient server1 = new UdpClient(8418); UdpClient server2 = new UdpClient(8419); UdpClient server3 = new UdpClient(8420); UdpClient server4 = new UdpClient(8421); var service = new Service(); service.AddMethod("Hello", this) .AddMethod("Sum", this) .Add <string>(OnewayCall) .Bind(server1) .Bind(server2) .Bind(server3) .Bind(server4); var client = new Client(/* "udp4://127.0.0.1:8418" */); var lb = new NginxRoundRobinLoadBalance(new Dictionary <string, int>() { { "udp4://127.0.0.1:8418", 1 }, { "udp4://127.0.0.1:8419", 2 }, { "udp4://127.0.0.1:8420", 3 }, { "udp4://127.0.0.1:8421", 4 } }); client.Use(lb.Handler).Use(new ConcurrentLimiter(64).Handler).Use(new RateLimiter(50000).InvokeHandler); var proxy = client.UseService <ITestInterface>(); var n = 1000; var tasks = new Task <string> [n]; for (int i = 0; i < n; ++i) { tasks[i] = proxy.Hello("world" + i); } var results = await Task.WhenAll(tasks).ConfigureAwait(false); for (int i = 0; i < n; ++i) { Assert.AreEqual(results[i], "Hello world" + i); } server1.Close(); server2.Close(); server3.Close(); server4.Close(); }