Ejemplo n.º 1
0
    public void TestThatLoadBalancingClientDelivers()
    {
        var safely  = new TestResponseConsumer(_output);
        var access  = safely.AfterCompleting(100);
        var unknown = new UnknownResponseConsumer(access, _output);
        var known   = new KnownResponseConsumer(access);

        var config = Client.Configuration.DefaultedExceptFor(
            World.Stage,
            Address.From(Host.Of("localhost"), NextPort.Get(), AddressType.None), unknown);

        config.TestInfo(true);

        _client =
            Client.Using(
                config,
                Client.ClientConsumerType.LoadBalancing,
                5);

        for (var count = 0; count < 100; ++count)
        {
            var user = count % 2 == 0 ? UniqueJohnDoe() : UniqueJaneDoe();
            _client.RequestWith(
                Request
                .Has(Method.Post)
                .And("/users".ToMatchableUri())
                .And(RequestHeader.WithHost("localhost"))
                .And(RequestHeader.WithContentLength(user))
                .And(RequestHeader.WithKeepAlive())
                .And(Body.From(user)))
            .AndThenConsume(response => known.Consume(response));
        }

        var responseCount        = access.ReadFromExpecting("responseCount", 100, 10000);
        var total                = access.ReadFrom <int>("totalAllResponseCount");
        var unknownResponseCount = access.ReadFrom <int>("unknownResponseCount");
        var clientCounts         = access.ReadFrom <Dictionary <string, int> >("responseClientCounts");

        Assert.Equal(100, total);
        Assert.Equal(100, responseCount);
        Assert.Equal(0, unknownResponseCount);

        var totalClientCounts = 0;

        foreach (var id in clientCounts.Keys)
        {
            var clientCount = clientCounts[id];
            totalClientCounts += clientCount;
        }

        Assert.Equal(100, totalClientCounts);
    }
Ejemplo n.º 2
0
    public void TestThatCorrelatingClientDelivers()
    {
        var user = JohnDoeUserSerialized;

        var safely  = new TestResponseConsumer(_output);
        var access  = safely.AfterCompleting(1);
        var unknown = new UnknownResponseConsumer(access, _output);
        var known   = new KnownResponseConsumer(access);

        var config = Client.Configuration.DefaultedExceptFor(
            World.Stage,
            Address.From(Host.Of("localhost"), NextPort.Get(), AddressType.None), unknown);

        _client = Client.Using(config);

        _client.RequestWith(
            Request
            .Has(Method.Post)
            .And("/users".ToMatchableUri())
            .And(RequestHeader.WithHost("localhost"))
            .And(RequestHeader.WithContentLength(user))
            .And(RequestHeader.WithKeepAlive())
            .And(Body.From(user)))
        .AndThenConsume(TimeSpan.FromMilliseconds(5000), Response.Of(ResponseStatus.RequestTimeout), response => _expectedResponse = response)
        .AndThenConsume(response => _expectedHeaderCount = response.Headers.Count)
        .AndThenConsume(response => _location            = response.Headers.HeaderOf(ResponseHeader.Location))
        .AndThenConsume(known.Consume);

        var responseCount        = access.ReadFrom <int>("responseCount");
        var unknownResponseCount = access.ReadFrom <int>("unknownResponseCount");

        Assert.Equal(1, responseCount);
        Assert.NotNull(_expectedResponse);
        Assert.Equal(ResponseStatus.Created, _expectedResponse.Status);
        Assert.Equal(3, _expectedHeaderCount);
        Assert.NotNull(_location);
        Assert.Equal(0, unknownResponseCount);
    }