• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 package software.amazon.awssdk.crt.test;
7 
8 import software.amazon.awssdk.crt.http.HttpClientConnectionManager;
9 import software.amazon.awssdk.crt.http.HttpClientConnectionManagerOptions;
10 import software.amazon.awssdk.crt.http.HttpVersion;
11 import software.amazon.awssdk.crt.io.ClientBootstrap;
12 import software.amazon.awssdk.crt.io.EventLoopGroup;
13 import software.amazon.awssdk.crt.io.HostResolver;
14 import software.amazon.awssdk.crt.io.SocketOptions;
15 import software.amazon.awssdk.crt.io.TlsContext;
16 import software.amazon.awssdk.crt.io.TlsContextOptions;
17 
18 import java.net.URI;
19 
20 public class HttpClientTestFixture extends CrtTestFixture {
21 
createHTTP2ConnectionPoolManager(URI uri)22     private HttpClientConnectionManager createHTTP2ConnectionPoolManager(URI uri) {
23         try (EventLoopGroup eventLoopGroup = new EventLoopGroup(1);
24                 HostResolver resolver = new HostResolver(eventLoopGroup);
25                 ClientBootstrap bootstrap = new ClientBootstrap(eventLoopGroup, resolver);
26                 SocketOptions sockOpts = new SocketOptions();
27                 TlsContextOptions tlsContextOptions = TlsContextOptions.createDefaultClient()
28                         .withAlpnList("h2;http/1.1");
29                 TlsContext tlsContext = createHttpClientTlsContext(tlsContextOptions)) {
30 
31             HttpClientConnectionManagerOptions options = new HttpClientConnectionManagerOptions()
32                     .withClientBootstrap(bootstrap).withSocketOptions(sockOpts).withTlsContext(tlsContext).withUri(uri);
33 
34             return HttpClientConnectionManager.create(options);
35         }
36     }
37 
createHTTP1ConnectionPoolManager(URI uri)38     private HttpClientConnectionManager createHTTP1ConnectionPoolManager(URI uri) {
39         try (EventLoopGroup eventLoopGroup = new EventLoopGroup(1);
40                 HostResolver resolver = new HostResolver(eventLoopGroup);
41                 ClientBootstrap bootstrap = new ClientBootstrap(eventLoopGroup, resolver);
42                 SocketOptions sockOpts = new SocketOptions();
43                 TlsContext tlsContext = createHttpClientTlsContext()) {
44 
45             HttpClientConnectionManagerOptions options = new HttpClientConnectionManagerOptions()
46                     .withClientBootstrap(bootstrap).withSocketOptions(sockOpts).withTlsContext(tlsContext).withUri(uri);
47 
48             return HttpClientConnectionManager.create(options);
49         }
50     }
51 
createHttpClientTlsContext()52     public TlsContext createHttpClientTlsContext() {
53         return createTlsContextOptions(getContext().trustStore);
54     }
55 
createHttpClientTlsContext(TlsContextOptions tlsOpts)56     public TlsContext createHttpClientTlsContext(TlsContextOptions tlsOpts) {
57         return new TlsContext(configureTlsContextOptions(tlsOpts, getContext().trustStore));
58     }
59 
createConnectionPoolManager(URI uri, HttpVersion expectedVersion)60     public HttpClientConnectionManager createConnectionPoolManager(URI uri,
61             HttpVersion expectedVersion) {
62         if (expectedVersion == HttpVersion.HTTP_2) {
63             return createHTTP2ConnectionPoolManager(uri);
64         } else {
65             return createHTTP1ConnectionPoolManager(uri);
66         }
67 
68     }
69 }
70