Ejemplo n.º 1
0
        public async Task Test7()
        {
            MockServer server1 = new MockServer("testlb1");
            MockServer server2 = new MockServer("testlb2");
            MockServer server3 = new MockServer("testlb3");
            MockServer server4 = new MockServer("testlb4");
            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(/* "mock://testlb1" */);
            var lb     = new WeightedRoundRobinLoadBalance(new Dictionary <string, int>()
            {
                { "mock://testlb1", 1 },
                { "mock://testlb2", 2 },
                { "mock://testlb3", 3 },
                { "mock://testlb4", 4 }
            });

            client.Use(lb.Handler).Use(new ConcurrentLimiter(64).Handler);
            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();
        }
Ejemplo n.º 2
0
        public async Task Test7()
        {
            HttpListener server = new HttpListener();

            server.Prefixes.Add("http://127.0.0.1:8086/");
            server.Prefixes.Add("http://127.0.0.1:8087/");
            server.Prefixes.Add("http://127.0.0.1:8088/");
            server.Prefixes.Add("http://127.0.0.1:8089/");
            server.Start();
            var service = new Service();

            service.AddMethod("Hello", this)
            .AddMethod("Sum", this)
            .Add <string>(OnewayCall)
            .Bind(server);
            var client = new Client(/* "http://127.0.0.1:8086/" */);
            var lb     = new WeightedRoundRobinLoadBalance(new Dictionary <string, int>()
            {
                { "http://127.0.0.1:8086/", 1 },
                { "http://127.0.0.1:8087/", 2 },
                { "http://127.0.0.1:8088/", 3 },
                { "http://127.0.0.1:8089/", 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);
            }
            server.Stop();
        }