@ParameterizedTest
    @CsvSource({ "H1", "H2" })
    public void mutualTlsAttrs(SessionProtocol sessionProtocol) throws Exception {
        try (ClientFactory clientFactory = ClientFactory
                .builder()
                .tls(ssc.privateKey(), ssc.certificate())
                .tlsCustomizer(sslCtxBuilder -> {
                    sslCtxBuilder.trustManager(InsecureTrustManagerFactory.INSTANCE);
                })
                .build()) {

            final WebClient client = WebClient.builder(server().uri(sessionProtocol))
                                              .factory(clientFactory)
                                              .build();

            final AggregatedHttpResponse res = client.get("/jsp/mutual_tls.jsp").aggregate().join();
            final SSLSession sslSession = server().requestContextCaptor().take().sslSession();
            assert sslSession != null;
            final String expectedId;
            if (sslSession.getId() != null) {
                expectedId = BaseEncoding.base16().encode(sslSession.getId());
            } else {
                expectedId = "";
            }

            assertThatJson(res.contentUtf8())
                    .node("remoteHost").isStringEqualTo(expectedRemoteHost())
                    .node("sessionId").isStringEqualTo(expectedId)
                    .node("cipherSuite").isStringEqualTo(sslSession.getCipherSuite())
                    .node("keySize").matches(greaterThan(BigDecimal.ZERO))
                    .node("peerCerts").isArray().ofLength(1).thatContains("CN=mutual.tls.test");
        }
    }
Returns the expected return value of {@code ServletRequest.getRemoteHost()}.
testing-internal/src/main/java/com/linecorp/armeria/internal/testing/webapp/WebAppContainerMutualTlsTest.java