2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.common.endpoints.http.server.test;
23 import static org.junit.Assert.assertTrue;
25 import java.io.BufferedReader;
26 import java.io.IOException;
27 import java.io.InputStreamReader;
28 import java.net.ConnectException;
29 import java.net.MalformedURLException;
31 import java.util.UUID;
33 import org.junit.Test;
34 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
35 import org.slf4j.Logger;
36 import org.slf4j.LoggerFactory;
39 * HttpServletServer JUNIT tests
41 public class HttpServerTest {
46 private static Logger logger = LoggerFactory.getLogger(HttpServerTest.class);
49 public void testSingleServer() throws Exception {
50 logger.info("-- testSingleServer() --");
52 HttpServletServer server = HttpServletServer.factory.build("echo", "localhost", 5678, "/", false, true);
53 server.addServletPackage("/*", this.getClass().getPackage().getName());
54 server.waitedStart(5000);
56 assertTrue(HttpServletServer.factory.get(5678).isAlive());
58 String response = http(HttpServletServer.factory.get(5678), "http://localhost:5678/junit/echo/hello");
59 assertTrue("hello".equals(response));
63 response = http(HttpServletServer.factory.get(5678), "http://localhost:5678/swagger.json");
64 } catch (IOException e) {
67 assertTrue(response == null);
69 assertTrue(HttpServletServer.factory.get(5678).isAlive());
70 assertTrue(HttpServletServer.factory.inventory().size() == 1);
72 HttpServletServer.factory.destroy(5678);
73 assertTrue(HttpServletServer.factory.inventory().size() == 0);
77 public void testMultipleServers() throws Exception {
78 logger.info("-- testMultipleServers() --");
80 HttpServletServer server1 = HttpServletServer.factory.build("echo-1", false,"localhost", 5688, "/", true, true);
81 server1.addServletPackage("/*", this.getClass().getPackage().getName());
82 server1.waitedStart(5000);
84 HttpServletServer server2 = HttpServletServer.factory.build("echo-2", "localhost", 5689, "/", false, true);
85 server2.addServletPackage("/*", this.getClass().getPackage().getName());
86 server2.waitedStart(5000);
88 assertTrue(HttpServletServer.factory.get(5688).isAlive());
89 assertTrue(HttpServletServer.factory.get(5689).isAlive());
91 String response = http(HttpServletServer.factory.get(5688), "http://localhost:5688/junit/echo/hello");
92 assertTrue("hello".equals(response));
94 response = http(HttpServletServer.factory.get(5688), "http://localhost:5688/swagger.json");
95 assertTrue(response != null);
97 response = http(HttpServletServer.factory.get(5689), "http://localhost:5689/junit/echo/hello");
98 assertTrue("hello".equals(response));
102 response = http(HttpServletServer.factory.get(5689), "http://localhost:5689/swagger.json");
103 } catch (IOException e) {
106 assertTrue(response == null);
108 HttpServletServer.factory.destroy();
109 assertTrue(HttpServletServer.factory.inventory().size() == 0);
113 public void testMultiServicePackage() throws Exception {
114 logger.info("-- testMultiServicePackage() --");
116 String randomName = UUID.randomUUID().toString();
118 HttpServletServer server = HttpServletServer.factory.build(randomName, "localhost", 5668, "/", false, true);
119 server.addServletPackage("/*", this.getClass().getPackage().getName());
120 server.waitedStart(5000);
122 assertTrue(HttpServletServer.factory.get(5668).isAlive());
124 String response = http(HttpServletServer.factory.get(5668), "http://localhost:5668/junit/echo/hello");
125 assertTrue("hello".equals(response));
127 response = http(HttpServletServer.factory.get(5668), "http://localhost:5668/junit/endpoints/http/servers");
128 assertTrue(response.contains(randomName));
130 HttpServletServer.factory.destroy();
131 assertTrue(HttpServletServer.factory.inventory().size() == 0);
135 public void testServiceClass() throws Exception {
136 logger.info("-- testServiceClass() --");
137 String randomName = UUID.randomUUID().toString();
139 HttpServletServer server = HttpServletServer.factory.build(randomName, "localhost", 5658, "/", false, true);
140 server.addServletClass("/*", RestEchoService.class.getCanonicalName());
141 server.waitedStart(5000);
143 assertTrue(HttpServletServer.factory.get(5658).isAlive());
145 String response = http(HttpServletServer.factory.get(5658), "http://localhost:5658/junit/echo/hello");
146 assertTrue("hello".equals(response));
148 HttpServletServer.factory.destroy();
149 assertTrue(HttpServletServer.factory.inventory().size() == 0);
153 public void testMultiServiceClass() throws Exception {
154 logger.info("-- testMultiServiceClass() --");
156 String randomName = UUID.randomUUID().toString();
158 HttpServletServer server = HttpServletServer.factory.build(randomName, "localhost", 5648, "/", false, true);
159 server.addServletClass("/*", RestEchoService.class.getCanonicalName());
160 server.addServletClass("/*", RestEndpoints.class.getCanonicalName());
161 server.waitedStart(5000);
163 assertTrue(HttpServletServer.factory.get(5648).isAlive());
165 String response = http(HttpServletServer.factory.get(5648), "http://localhost:5648/junit/echo/hello");
166 assertTrue("hello".equals(response));
168 response = http(HttpServletServer.factory.get(5648), "http://localhost:5648/junit/endpoints/http/servers");
169 assertTrue(response.contains(randomName));
171 HttpServletServer.factory.destroy();
172 assertTrue(HttpServletServer.factory.inventory().size() == 0);
176 * performs an http request
178 * @throws MalformedURLException
179 * @throws IOException
180 * @throws InterruptedException
182 protected String http(HttpServletServer server, String aUrl)
183 throws MalformedURLException, IOException, InterruptedException {
184 URL url = new URL(aUrl);
185 String response = null;
186 int numRetries = 1, maxNumberRetries = 5;
187 while (numRetries <= maxNumberRetries) {
189 response = response(url);
191 } catch (ConnectException e) {
192 logger.warn("http server {} @ {} ({}) - cannot connect yet ..", server, aUrl, numRetries, e);
194 Thread.sleep(10000L);
195 } catch (Exception e) {
208 * @throws IOException
210 protected String response(URL url) throws IOException {
211 String response = "";
212 try (BufferedReader ioReader = new BufferedReader(new InputStreamReader(url.openStream()))) {
214 while ((line = ioReader.readLine()) != null) {