2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 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.drools.server.restful.test;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
26 import java.io.IOException;
27 import java.util.Properties;
29 import org.junit.AfterClass;
30 import org.junit.BeforeClass;
31 import org.junit.Test;
32 import org.onap.policy.drools.properties.PolicyProperties;
33 import org.onap.policy.drools.system.PolicyEngine;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
36 import org.apache.http.HttpEntity;
37 import org.apache.http.client.ClientProtocolException;
38 import org.apache.http.client.methods.CloseableHttpResponse;
39 import org.apache.http.client.methods.HttpGet;
40 import org.apache.http.impl.client.CloseableHttpClient;
41 import org.apache.http.impl.client.HttpClients;
42 import org.apache.http.util.EntityUtils;
44 public class RestManagerTest {
47 public static final int DEFAULT_TELEMETRY_PORT = 9698;
48 private static final String HOST = "localhost";
49 private static final String REST_MANAGER_PATH = "/policy/pdp";
50 private static final String HOST_URL = "http://" + HOST + ":" + DEFAULT_TELEMETRY_PORT + REST_MANAGER_PATH;
51 private static final String FOO_CONTROLLER = "foo-controller";
52 private static CloseableHttpClient client;
54 private static final Logger logger = LoggerFactory.getLogger(RestManagerTest.class);
57 public static void setUp() {
58 /* override default port */
59 final Properties engineProps = PolicyEngine.manager.defaultTelemetryConfig();
60 engineProps.put(PolicyProperties.PROPERTY_HTTP_SERVER_SERVICES + "."
61 + PolicyEngine.TELEMETRY_SERVER_DEFAULT_NAME + PolicyProperties.PROPERTY_HTTP_PORT_SUFFIX,
62 "" + DEFAULT_TELEMETRY_PORT);
63 PolicyEngine.manager.configure(engineProps);
64 PolicyEngine.manager.start();
66 client = HttpClients.createDefault();
71 public static void tearDown() {
72 PolicyEngine.manager.shutdown();
78 public void GETTest() throws ClientProtocolException, IOException, InterruptedException {
79 assertTrue(PolicyEngine.manager.isAlive());
82 CloseableHttpResponse response;
85 httpGet = new HttpGet(HOST_URL + "/engine");
86 response = client.execute(httpGet);
87 logger.info("/engine response code: {}", response.getStatusLine().getStatusCode());
88 assertEquals(200, response.getStatusLine().getStatusCode());
89 httpGet.releaseConnection();
91 httpGet = new HttpGet(HOST_URL + "/engine/features");
92 response = client.execute(httpGet);
93 logger.info("/engine/features response code: {}", response.getStatusLine().getStatusCode());
94 assertEquals(200, response.getStatusLine().getStatusCode());
95 httpGet.releaseConnection();
97 httpGet = new HttpGet(HOST_URL + "/engine/features/inventory");
98 response = client.execute(httpGet);
99 logger.info("/engine/features/inventory response code: {}", response.getStatusLine().getStatusCode());
100 assertEquals(200, response.getStatusLine().getStatusCode());
101 httpGet.releaseConnection();
103 httpGet = new HttpGet(HOST_URL + "/engine/features/foobar");
104 response = client.execute(httpGet);
105 logger.info("/engine/features/foobar response code: {}",response.getStatusLine().getStatusCode());
106 assertEquals(404, response.getStatusLine().getStatusCode());
107 httpGet.releaseConnection();
109 httpGet = new HttpGet(HOST_URL + "/engine/inputs");
110 response = client.execute(httpGet);
111 logger.info("/engine/inputs response code: {}",response.getStatusLine().getStatusCode());
112 assertEquals(200, response.getStatusLine().getStatusCode());
113 httpGet.releaseConnection();
115 httpGet = new HttpGet(HOST_URL + "/engine/properties");
116 response = client.execute(httpGet);
117 logger.info("/engine/properties response code: {}",response.getStatusLine().getStatusCode());
118 assertEquals(200, response.getStatusLine().getStatusCode());
119 httpGet.releaseConnection();
121 httpGet = new HttpGet(HOST_URL + "/engine/environment");
122 response = client.execute(httpGet);
123 logger.info("/engine/environment response code: {}",response.getStatusLine().getStatusCode());
124 assertEquals(200, response.getStatusLine().getStatusCode());
125 httpGet.releaseConnection();
127 PolicyEngine.manager.setEnvironmentProperty("foo", "bar");
128 httpGet = new HttpGet(HOST_URL + "/engine/environment/foo");
129 response = client.execute(httpGet);
130 responseBody = getResponseBody(response);
131 logger.info("/engine/environment/foo response code: {}",response.getStatusLine().getStatusCode());
132 logger.info("/engine/environment/foo response body: {}",responseBody);
133 assertEquals(200, response.getStatusLine().getStatusCode());
134 assertEquals("bar", responseBody);
135 httpGet.releaseConnection();
138 httpGet = new HttpGet(HOST_URL + "/engine/switches");
139 response = client.execute(httpGet);
140 logger.info("/engine/switches response code: {}",response.getStatusLine().getStatusCode());
141 assertEquals(200, response.getStatusLine().getStatusCode());
142 httpGet.releaseConnection();
145 Properties controllerProps = new Properties();
146 PolicyEngine.manager.createPolicyController(FOO_CONTROLLER, controllerProps);
147 httpGet = new HttpGet(HOST_URL + "/engine/controllers");
148 response = client.execute(httpGet);
149 responseBody = getResponseBody(response);
150 logger.info("/engine/controllers response code: {}",response.getStatusLine().getStatusCode());
151 logger.info("/engine/controllers response body: {}",responseBody);
152 assertEquals(200, response.getStatusLine().getStatusCode());
153 assertEquals("[\"" + FOO_CONTROLLER +"\"]", responseBody);
154 httpGet.releaseConnection();
157 httpGet = new HttpGet(HOST_URL + "/engine/controllers/inventory");
158 response = client.execute(httpGet);
159 logger.info("/engine/controllers/inventory response code: {}",response.getStatusLine().getStatusCode());
160 assertEquals(200, response.getStatusLine().getStatusCode());
161 httpGet.releaseConnection();
164 httpGet = new HttpGet(HOST_URL + "/engine/controllers/features");
165 response = client.execute(httpGet);
166 logger.info("/engine/controllers/features response code: {}",response.getStatusLine().getStatusCode());
167 assertEquals(200, response.getStatusLine().getStatusCode());
168 httpGet.releaseConnection();
171 httpGet = new HttpGet(HOST_URL + "/engine/controllers/features/inventory");
172 response = client.execute(httpGet);
173 logger.info("/engine/controllers/features/inventory response code: {}",response.getStatusLine().getStatusCode());
174 assertEquals(200, response.getStatusLine().getStatusCode());
175 httpGet.releaseConnection();
178 httpGet = new HttpGet(HOST_URL + "/engine/controllers/features/dummy");
179 response = client.execute(httpGet);
180 logger.info("/engine/controllers/features/dummy response code: {}",response.getStatusLine().getStatusCode());
181 assertEquals(404, response.getStatusLine().getStatusCode());
182 httpGet.releaseConnection();
185 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER);
186 response = client.execute(httpGet);
187 logger.info("/engine/controllers/ response code: {}",response.getStatusLine().getStatusCode());
188 assertEquals(200, response.getStatusLine().getStatusCode());
189 httpGet.releaseConnection();
191 httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller");
192 response = client.execute(httpGet);
193 logger.info("/engine/controllers/nonexistantcontroller response code: {}",response.getStatusLine().getStatusCode());
194 assertEquals(404, response.getStatusLine().getStatusCode());
195 httpGet.releaseConnection();
198 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/properties");
199 response = client.execute(httpGet);
200 responseBody = getResponseBody(response);
201 logger.info("/engine/controllers/contoller/properties response code: {}", response.getStatusLine().getStatusCode());
202 logger.info("/engine/controllers/contoller/properties response code: {}", responseBody);
203 assertEquals(200, response.getStatusLine().getStatusCode());
204 assertEquals("{}", responseBody);
205 httpGet.releaseConnection();
207 httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller/properties");
208 response = client.execute(httpGet);
209 logger.info("/engine/controllers/nonexistantcontroller/properties response code: {}",response.getStatusLine().getStatusCode());
210 assertEquals(404, response.getStatusLine().getStatusCode());
211 httpGet.releaseConnection();
214 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/inputs");
215 response = client.execute(httpGet);
216 logger.info("/engine/controllers/controller/inputs response code: {}",response.getStatusLine().getStatusCode());
217 assertEquals(200, response.getStatusLine().getStatusCode());
218 httpGet.releaseConnection();
220 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/switches");
221 response = client.execute(httpGet);
222 logger.info("/engine/controllers/controller/switches response code: {}",response.getStatusLine().getStatusCode());
223 assertEquals(200, response.getStatusLine().getStatusCode());
224 httpGet.releaseConnection();
226 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/drools");
227 response = client.execute(httpGet);
228 logger.info("/engine/controllers/controller/drools response code: {}",response.getStatusLine().getStatusCode());
229 assertEquals(200, response.getStatusLine().getStatusCode());
230 httpGet.releaseConnection();
232 httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller/drools");
233 response = client.execute(httpGet);
234 logger.info("/engine/controllers/nonexistantcontroller/drools response code: {}",response.getStatusLine().getStatusCode());
235 assertEquals(404, response.getStatusLine().getStatusCode());
236 httpGet.releaseConnection();
239 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/drools/facts");
240 response = client.execute(httpGet);
241 logger.info("/engine/controllers/controller/drools/facts response code: {}",response.getStatusLine().getStatusCode());
242 assertEquals(200, response.getStatusLine().getStatusCode());
243 httpGet.releaseConnection();
245 httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller/drools/facts");
246 response = client.execute(httpGet);
247 logger.info("/engine/controllers/nonexistantcontroller/drools/facts response code: {}",response.getStatusLine().getStatusCode());
248 assertEquals(404, response.getStatusLine().getStatusCode());
249 httpGet.releaseConnection();
251 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/drools/facts/dummy");
252 response = client.execute(httpGet);
253 logger.info("/engine/controllers/controller/drools/facts/fact response code: {}",response.getStatusLine().getStatusCode());
254 assertEquals(200, response.getStatusLine().getStatusCode());
255 httpGet.releaseConnection();
258 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/drools/facts/dummy/dummy");
259 response = client.execute(httpGet);
260 logger.info("/engine/controllers/controller/drools/facts/fact response code: {}",response.getStatusLine().getStatusCode());
261 assertEquals(200, response.getStatusLine().getStatusCode());
262 httpGet.releaseConnection();
264 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/drools/facts/session/query/queriedEntity");
265 response = client.execute(httpGet);
266 logger.info("/engine/controllers/controller/drools/facts/session/query/queriedEntity response code: {}",response.getStatusLine().getStatusCode());
267 assertEquals(200, response.getStatusLine().getStatusCode());
268 httpGet.releaseConnection();
271 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders");
272 response = client.execute(httpGet);
273 logger.info("/engine/controllers/controller/decoders response code: {}",response.getStatusLine().getStatusCode());
274 assertEquals(200, response.getStatusLine().getStatusCode());
275 httpGet.releaseConnection();
277 httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller/decoders");
278 response = client.execute(httpGet);
279 logger.info("/engine/controllers/nonexistantcontroller/decoders response code: {}",response.getStatusLine().getStatusCode());
280 assertEquals(404, response.getStatusLine().getStatusCode());
281 httpGet.releaseConnection();
283 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/filters");
284 response = client.execute(httpGet);
285 logger.info("/engine/controllers/controllers/decoders/filters response code: {}",response.getStatusLine().getStatusCode());
286 assertEquals(200, response.getStatusLine().getStatusCode());
287 httpGet.releaseConnection();
289 httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller/decoders/filters");
290 response = client.execute(httpGet);
291 logger.info("engine/controllers/nonexistantcontroller/decoders/filters response code: {}",response.getStatusLine().getStatusCode());
292 assertEquals(404, response.getStatusLine().getStatusCode());
293 httpGet.releaseConnection();
296 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/topic");
297 response = client.execute(httpGet);
298 logger.info("/engine/controllers/controllers/decoders/topics response code: {}",response.getStatusLine().getStatusCode());
299 assertEquals(404, response.getStatusLine().getStatusCode());
300 httpGet.releaseConnection();
303 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/topic/filters");
304 response = client.execute(httpGet);
305 logger.info("/engine/controllers/controllers/decoders/topic/filters response code: {}",response.getStatusLine().getStatusCode());
306 assertEquals(404, response.getStatusLine().getStatusCode());
307 httpGet.releaseConnection();
309 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/topic/filters/factType");
310 response = client.execute(httpGet);
311 logger.info("/engine/controllers/controller/decoders/topic/filters/factType response code: {}",response.getStatusLine().getStatusCode());
312 assertEquals(404, response.getStatusLine().getStatusCode());
313 httpGet.releaseConnection();
315 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/topic/filters/factType/rules");
316 response = client.execute(httpGet);
317 logger.info("/engine/controllers/controllers/decoders/topic/filters/factType/rules response code: {}",response.getStatusLine().getStatusCode());
318 assertEquals(404, response.getStatusLine().getStatusCode());
319 httpGet.releaseConnection();
321 httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/topic/filters/factType/rules/ruleName");
322 response = client.execute(httpGet);
323 logger.info("/engine/controllers/controllers/decoders/topic/filters/factType/rules/ruleName response code: {}",response.getStatusLine().getStatusCode());
324 assertEquals(404, response.getStatusLine().getStatusCode());
325 httpGet.releaseConnection();
331 public String getResponseBody(CloseableHttpResponse response) {
335 entity = response.getEntity();
336 return EntityUtils.toString(entity);
338 } catch (IOException e) {