| 60 | import org.junit.runners.JUnit4; |
| 61 | |
| 62 | @RunWith(JUnit4.class) |
| 63 | public final class IntegrationTest { |
| 64 | private static final Logger logger = Logger.getLogger(FakeS2AServer.class.getName()); |
| 65 | private String s2aAddress; |
| 66 | private Server s2aServer; |
| 67 | private String s2aDelayAddress; |
| 68 | private Server s2aDelayServer; |
| 69 | private String mtlsS2AAddress; |
| 70 | private Server mtlsS2AServer; |
| 71 | private String serverAddress; |
| 72 | private Server server; |
| 73 | |
| 74 | @Before |
| 75 | public void setUp() throws Exception { |
| 76 | s2aServer = ServerBuilder.forPort(0).addService(new FakeS2AServer()).build().start(); |
| 77 | int s2aPort = s2aServer.getPort(); |
| 78 | s2aAddress = "localhost:" + s2aPort; |
| 79 | logger.info("S2A service listening on localhost:" + s2aPort); |
| 80 | ClassLoader classLoader = IntegrationTest.class.getClassLoader(); |
| 81 | InputStream s2aCert = classLoader.getResourceAsStream("server_cert.pem"); |
| 82 | InputStream s2aKey = classLoader.getResourceAsStream("server_key.pem"); |
| 83 | InputStream rootCert = classLoader.getResourceAsStream("root_cert.pem"); |
| 84 | ServerCredentials s2aCreds = |
| 85 | TlsServerCredentials.newBuilder() |
| 86 | .keyManager(s2aCert, s2aKey) |
| 87 | .trustManager(rootCert) |
| 88 | .clientAuth(TlsServerCredentials.ClientAuth.REQUIRE) |
| 89 | .build(); |
| 90 | mtlsS2AServer = NettyServerBuilder.forPort(0, s2aCreds).addService(new FakeS2AServer()).build(); |
| 91 | mtlsS2AServer.start(); |
| 92 | int mtlsS2APort = mtlsS2AServer.getPort(); |
| 93 | mtlsS2AAddress = "localhost:" + mtlsS2APort; |
| 94 | logger.info("mTLS S2A service listening on localhost:" + mtlsS2APort); |
| 95 | |
| 96 | int s2aDelayPort = Utils.pickUnusedPort(); |
| 97 | s2aDelayAddress = "localhost:" + s2aDelayPort; |
| 98 | s2aDelayServer = ServerBuilder.forPort(s2aDelayPort).addService(new FakeS2AServer()).build(); |
| 99 | |
| 100 | server = |
| 101 | NettyServerBuilder.forPort(0) |
| 102 | .addService(new SimpleServiceImpl()) |
| 103 | .sslContext(buildSslContext()) |
| 104 | .build() |
| 105 | .start(); |
| 106 | int serverPort = server.getPort(); |
| 107 | serverAddress = "localhost:" + serverPort; |
| 108 | logger.info("Simple Service listening on localhost:" + serverPort); |
| 109 | } |
| 110 | |
| 111 | @After |
| 112 | public void tearDown() throws Exception { |
| 113 | server.shutdown(); |
| 114 | s2aServer.shutdown(); |
| 115 | s2aDelayServer.shutdown(); |
| 116 | mtlsS2AServer.shutdown(); |
| 117 | |
| 118 | server.awaitTermination(10, SECONDS); |
| 119 | s2aServer.awaitTermination(10, SECONDS); |