@Test
public void throughputPutRemote() throws Throwable {

    List<Service> services = this.host.doThroughputServiceStart(this.serviceCount,
            MinimalTestService.class,
            this.host.buildMinimalTestState(),
            null, null);
    String tag = ServiceClient.CONNECTION_TAG_DEFAULT;
    if (!this.host.isStressTest()) {
        this.host.log("Single connection runs");
        this.host.doPutPerService(
                this.requestCount,
                EnumSet.of(TestProperty.FORCE_REMOTE),
                services);
        validateTagInfo(this.host, tag);
    } else {
        this.host.setOperationTimeOutMicros(
                TimeUnit.SECONDS.toMicros(this.host.getTimeoutSeconds()));
    }
    // use global limit, which applies by default to all tags
    int limit = NettyHttpServiceClient.DEFAULT_CONNECTIONS_PER_HOST;
    this.host.connectionTag = null;
    this.host.log("Using client global connection limit %d", limit);
    for (int i = 0; i < 5; i++) {
        double throughput = this.host.doPutPerService(
                this.requestCount,
                EnumSet.of(TestProperty.FORCE_REMOTE),
                services);
        this.testResults.getReport().all("HTTP1.1 JSON PUTS/sec", throughput);
        this.host.waitForGC();
        throughput = this.host.doPutPerService(
                this.requestCount,
                EnumSet.of(TestProperty.FORCE_REMOTE, TestProperty.BINARY_SERIALIZATION),
                services);
        this.testResults.getReport().all("HTTP1.1 binary PUTS/sec", throughput);
        this.host.waitForGC();
    }
    limit = 8;
    this.host.connectionTag = "http1.1test";
    this.host.log("Using tag specific connection limit %d", limit);
    this.host.getClient().setConnectionLimitPerTag(this.host.connectionTag, limit);
    this.host.doPutPerService(
            this.requestCount,
            EnumSet.of(TestProperty.FORCE_REMOTE),
            services);
    tag = this.host.connectionTag;
    validateTagInfo(this.host, tag);
}