Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }