2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
4 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
5 * Modifications Copyright (C) 2019 Nordix Foundation.
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.
19 * SPDX-License-Identifier: Apache-2.0
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.api.main.rest;
25 import static org.assertj.core.api.Assertions.assertThatCode;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertFalse;
28 import static org.junit.Assert.assertNotNull;
29 import static org.junit.Assert.assertTrue;
30 import static org.junit.Assert.fail;
32 import java.io.IOException;
33 import java.lang.reflect.Constructor;
34 import java.lang.reflect.Modifier;
35 import java.security.SecureRandom;
36 import java.security.cert.X509Certificate;
37 import java.util.Base64;
38 import java.util.Properties;
40 import javax.net.ssl.SSLContext;
41 import javax.net.ssl.TrustManager;
42 import javax.net.ssl.X509TrustManager;
43 import javax.ws.rs.client.Client;
44 import javax.ws.rs.client.ClientBuilder;
45 import javax.ws.rs.client.Entity;
46 import javax.ws.rs.client.Invocation;
47 import javax.ws.rs.client.WebTarget;
48 import javax.ws.rs.core.MediaType;
49 import javax.ws.rs.core.Response;
51 import org.glassfish.jersey.client.ClientConfig;
52 import org.glassfish.jersey.client.ClientProperties;
53 import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
54 import org.junit.After;
55 import org.junit.Test;
56 import org.onap.policy.api.main.ApiTestSupportUtilities;
57 import org.onap.policy.api.main.exception.PolicyApiException;
58 import org.onap.policy.api.main.parameters.ApiParameterGroup;
59 import org.onap.policy.api.main.parameters.CommonTestData;
60 import org.onap.policy.api.main.rest.provider.PolicyProvider;
61 import org.onap.policy.api.main.rest.provider.PolicyTypeProvider;
62 import org.onap.policy.api.main.startstop.Main;
63 import org.onap.policy.common.endpoints.http.server.RestServer;
64 import org.onap.policy.common.endpoints.parameters.RestServerParameters;
65 import org.onap.policy.common.endpoints.report.HealthCheckReport;
66 import org.onap.policy.common.gson.GsonMessageBodyHandler;
67 import org.onap.policy.common.parameters.ParameterService;
68 import org.onap.policy.common.utils.coder.StandardCoder;
69 import org.onap.policy.common.utils.network.NetworkUtil;
70 import org.onap.policy.common.utils.resources.ResourceUtils;
71 import org.onap.policy.models.base.PfModelException;
72 import org.onap.policy.models.errors.concepts.ErrorResponse;
73 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
74 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
75 import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
76 import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
77 import org.slf4j.Logger;
78 import org.slf4j.LoggerFactory;
81 * Class to perform unit test of {@link ApiRestServer}.
83 * @author Chenfei Gao (cgao@research.att.com)
85 public class TestApiRestServer {
87 private static final Logger LOGGER = LoggerFactory.getLogger(TestApiRestServer.class);
88 private static final String NOT_ALIVE = "not alive";
89 private static final String ALIVE = "alive";
90 private static final String SELF = "self";
91 private static final String NAME = "Policy API";
93 private static final String HEALTHCHECK_ENDPOINT = "healthcheck";
94 private static final String STATISTICS_ENDPOINT = "statistics";
96 private static final String POLICYTYPES = "policytypes";
97 private static final String POLICYTYPES_TCA = "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app";
98 private static final String POLICYTYPES_COLLECTOR =
99 "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server";
100 private static final String POLICYTYPES_TCA_VERSION =
101 "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0";
102 private static final String POLICYTYPES_TCA_LATEST =
103 "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/latest";
104 private static final String POLICYTYPES_COLLECTOR_VERSION =
105 "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server/versions/1.0.0";
106 private static final String POLICYTYPES_COLLECTOR_LATEST =
107 "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server/versions/latest";
109 private static final String POLICYTYPES_TCA_POLICIES =
110 "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies";
111 private static final String POLICYTYPES_TCA_POLICIES_VCPE =
112 "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca";
113 private static final String POLICYTYPES_TCA_POLICIES_VCPE_VERSION = "policytypes/"
114 + "onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/1.0.0";
115 private static final String POLICYTYPES_TCA_POLICIES_VCPE_LATEST = "policytypes/"
116 + "onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/latest";
117 private static final String POLICYTYPES_TCA_POLICIES_VCPE_DEPLOYED = "policytypes/"
118 + "onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/deployed";
120 private static final String GUARD_POLICIES = "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies";
121 private static final String GUARD_POLICIES_VDNS_FL_LATEST =
122 "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.frequency.scaleout"
123 + "/versions/latest";
124 private static final String GUARD_POLICIES_VDNS_FL_DEPLOYED =
125 "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.frequency.scaleout"
126 + "/versions/deployed";
127 private static final String GUARD_POLICIES_VDNS_MINMAX_LATEST =
128 "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.minmax.scaleout"
129 + "/versions/latest";
130 private static final String GUARD_POLICIES_VDNS_FL_VERSION = "policytypes/"
131 + "onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.frequency.scaleout/versions/1";
132 private static final String GUARD_POLICIES_VDNS_MINMAX_VERSION =
133 "policytypes/" + "onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.minmax.scaleout/versions/1";
135 private static final String OPS_POLICIES =
136 "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies";
137 private static final String OPS_POLICIES_VCPE_LATEST =
138 "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.restart"
139 + "/versions/latest";
140 private static final String OPS_POLICIES_VCPE_DEPLOYED =
141 "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.restart"
142 + "/versions/deployed";
143 private static final String OPS_POLICIES_VDNS_LATEST =
144 "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.scaleout"
145 + "/versions/latest";
146 private static final String OPS_POLICIES_VFIREWALL_LATEST =
147 "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.modifyconfig"
148 + "/versions/latest";
149 private static final String OPS_POLICIES_VCPE_VERSION = "policytypes/"
150 + "onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.restart/versions/1";
151 private static final String OPS_POLICIES_VDNS_VERSION = "policytypes/"
152 + "onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.scaleout/versions/1";
153 private static final String OPS_POLICIES_VFIREWALL_VERSION = "policytypes/"
154 + "onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.modifyconfig/versions/1";
156 private static final String KEYSTORE = System.getProperty("user.dir") + "/src/test/resources/ssl/policy-keystore";
157 private static final CommonTestData COMMON_TEST_DATA = new CommonTestData();
159 private RestServer restServer;
160 private StandardCoder standardCoder = new StandardCoder();
164 private String[] toscaPolicyResourceNames = {
165 "policies/vCPE.policy.monitoring.input.tosca.json",
166 "policies/vDNS.policy.monitoring.input.tosca.json",
167 "policies/vFirewall.policy.monitoring.input.tosca.json",
170 private String[] toscaPolicyTypeResourceNames = {
171 "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml",
172 "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml"
175 private String[] legacyGuardPolicyResourceNames = {
176 "policies/vDNS.policy.guard.frequency.input.json",
177 "policies/vDNS.policy.guard.minmax.input.json",
180 private String[] legacyOperationalPolicyResourceNames = {
181 "policies/vCPE.policy.operational.input.json",
182 "policies/vDNS.policy.operational.input.json",
183 "policies/vFirewall.policy.operational.input.json"
185 private static PolicyModelsProviderParameters providerParams;
186 private static ApiParameterGroup apiParamGroup;
187 private static PolicyProvider policyProvider;
188 private static PolicyTypeProvider policyTypeProvider;
193 * Initializes parameters.
195 * @throws PfModelException the PfModel parsing exception
197 private void setupParameters() throws PfModelException {
199 standardCoder = new StandardCoder();
200 providerParams = new PolicyModelsProviderParameters();
201 providerParams.setDatabaseDriver("org.h2.Driver");
202 providerParams.setDatabaseUrl("jdbc:h2:mem:testdb");
203 providerParams.setDatabaseUser("policy");
204 providerParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
205 providerParams.setPersistenceUnit("ToscaConceptTest");
206 apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams);
207 ParameterService.register(apiParamGroup, true);
208 policyTypeProvider = new PolicyTypeProvider();
209 policyProvider = new PolicyProvider();
213 * Method for cleanup after each test.
216 public void teardown() throws Exception {
217 if (policyTypeProvider != null) {
218 policyTypeProvider.close();
220 if (policyProvider != null) {
221 policyProvider.close();
224 stopApiService(main);
225 } else if (restServer != null) {
231 public void testHealthCheckSuccess() {
234 main = startApiService(true);
235 final Invocation.Builder invocationBuilder = sendHttpRequest(HEALTHCHECK_ENDPOINT);
236 final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
237 validateHealthCheckReport(NAME, SELF, true, 200, ALIVE, report);
238 } catch (final Exception exp) {
239 LOGGER.error("testHealthCheckSuccess failed", exp);
240 fail("Test should not throw an exception");
245 public void testHealthCheckFailure() throws InterruptedException, IOException {
247 port = NetworkUtil.allocPort();
248 final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false, port);
249 restServerParams.setName(CommonTestData.API_GROUP_NAME);
250 restServer = new RestServer(restServerParams, null, ApiRestController.class);
253 final Invocation.Builder invocationBuilder = sendHttpRequest(HEALTHCHECK_ENDPOINT);
254 final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
255 validateHealthCheckReport(NAME, SELF, false, 500, NOT_ALIVE, report);
256 assertTrue(restServer.isAlive());
257 assertTrue(restServer.toString().startsWith("RestServer [servers="));
258 } catch (final Exception exp) {
259 LOGGER.error("testHealthCheckFailure failed", exp);
260 fail("Test should not throw an exception");
265 public void testHttpsHealthCheckSuccess() {
268 main = startApiService(false);
269 final Invocation.Builder invocationBuilder = sendHttpsRequest(HEALTHCHECK_ENDPOINT);
270 final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
271 validateHealthCheckReport(NAME, SELF, true, 200, ALIVE, report);
272 } catch (final Exception exp) {
273 LOGGER.error("testHttpsHealthCheckSuccess failed", exp);
274 fail("Test should not throw an exception");
279 public void testApiStatistics_200() {
282 main = startApiService(true);
283 Invocation.Builder invocationBuilder = sendHttpRequest(STATISTICS_ENDPOINT);
284 StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
285 validateStatisticsReport(report, 200);
286 updateApiStatistics();
287 invocationBuilder = sendHttpRequest(STATISTICS_ENDPOINT);
288 report = invocationBuilder.get(StatisticsReport.class);
289 validateStatisticsReport(report, 200);
290 ApiStatisticsManager.resetAllStatistics();
291 } catch (final Exception exp) {
292 LOGGER.error("testApiStatistics_200 failed", exp);
293 fail("Test should not throw an exception");
298 public void testApiStatistics_500() throws Exception {
300 port = NetworkUtil.allocPort();
301 final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false, port);
302 restServerParams.setName(CommonTestData.API_GROUP_NAME);
303 restServer = new RestServer(restServerParams, null, ApiRestController.class);
306 final Invocation.Builder invocationBuilder = sendHttpRequest(STATISTICS_ENDPOINT);
307 final StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
308 validateStatisticsReport(report, 500);
309 ApiStatisticsManager.resetAllStatistics();
310 } catch (final Exception exp) {
311 LOGGER.error("testApiStatistics_500 failed", exp);
312 fail("Test should not throw an exception");
317 public void testHttpsApiStatistics() {
320 main = startApiService(false);
321 final Invocation.Builder invocationBuilder = sendHttpsRequest(STATISTICS_ENDPOINT);
322 final StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
323 validateStatisticsReport(report, 200);
324 } catch (final Exception exp) {
325 LOGGER.error("testHttpsApiStatistics failed", exp);
326 fail("Test should not throw an exception");
331 public void testApiStatisticsConstructorIsPrivate() {
334 final Constructor<ApiStatisticsManager> constructor = ApiStatisticsManager.class.getDeclaredConstructor();
335 assertTrue(Modifier.isPrivate(constructor.getModifiers()));
336 constructor.setAccessible(true);
337 constructor.newInstance();
338 } catch (final Exception exp) {
339 assertTrue(exp.getCause().toString().contains("Instantiation of the class is not allowed"));
344 public void testCreatePolicyTypes() {
346 assertThatCode(() -> {
347 main = startApiService(true);
348 for (String resrcName : toscaPolicyTypeResourceNames) {
349 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
350 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
351 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
352 assertNotNull(response);
353 assertFalse(response.getPolicyTypes().isEmpty());
355 }).doesNotThrowAnyException();
359 public void testReadPolicyTypes() {
361 assertThatCode(() -> {
362 main = startApiService(true);
363 Response rawResponse = readResource(POLICYTYPES, true);
364 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
365 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
366 assertTrue(response.getPolicyTypes().isEmpty());
368 rawResponse = readResource(POLICYTYPES_TCA, true);
369 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
370 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
371 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:null does not exist",
372 error.getErrorMessage());
374 rawResponse = readResource(POLICYTYPES_TCA_VERSION, true);
375 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
376 error = rawResponse.readEntity(ErrorResponse.class);
377 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
378 error.getErrorMessage());
380 rawResponse = readResource(POLICYTYPES_TCA_LATEST, true);
381 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
382 error = rawResponse.readEntity(ErrorResponse.class);
383 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:null does not exist",
384 error.getErrorMessage());
386 rawResponse = readResource(POLICYTYPES_COLLECTOR, true);
387 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
388 error = rawResponse.readEntity(ErrorResponse.class);
389 assertEquals("policy type with ID "
390 + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:null does not exist",
391 error.getErrorMessage());
393 rawResponse = readResource(POLICYTYPES_COLLECTOR_VERSION, true);
394 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
395 error = rawResponse.readEntity(ErrorResponse.class);
396 assertEquals("policy type with ID "
397 + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:1.0.0 does not exist",
398 error.getErrorMessage());
400 rawResponse = readResource(POLICYTYPES_COLLECTOR_LATEST, true);
401 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
402 error = rawResponse.readEntity(ErrorResponse.class);
403 assertEquals("policy type with ID "
404 + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:null does not exist",
405 error.getErrorMessage());
406 }).doesNotThrowAnyException();
410 public void testReadPolicyTypesPersistent() throws Exception {
413 main = startApiService(true);
414 for (String resrcName : toscaPolicyTypeResourceNames) {
415 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
416 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
417 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
418 assertNotNull(response);
419 assertFalse(response.getPolicyTypes().isEmpty());
422 for (String resrcName : toscaPolicyResourceNames) {
423 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
424 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
427 Response rawResponse = readResource(POLICYTYPES_TCA, true);
428 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
430 rawResponse = readResource(POLICYTYPES_TCA_VERSION, true);
431 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
434 rawResponse = readResource(POLICYTYPES_TCA_LATEST, true);
435 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
438 rawResponse = readResource(POLICYTYPES_COLLECTOR, true);
439 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
442 rawResponse = readResource(POLICYTYPES_COLLECTOR_VERSION, true);
443 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
446 rawResponse = readResource(POLICYTYPES_COLLECTOR_LATEST, true);
447 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
452 public void testDeletePolicyType() {
454 assertThatCode(() -> {
455 main = startApiService(true);
456 Response rawResponse = deleteResource(POLICYTYPES_TCA_VERSION, true);
457 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
458 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
459 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
460 error.getErrorMessage());
462 rawResponse = deleteResource(POLICYTYPES_COLLECTOR_VERSION, true);
463 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
464 error = rawResponse.readEntity(ErrorResponse.class);
465 assertEquals("policy type with ID "
466 + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:1.0.0 does not exist",
467 error.getErrorMessage());
468 }).doesNotThrowAnyException();
472 public void testDeletePolicyTypePersistent() throws Exception {
474 setupParameters(); // setup DB
476 main = startApiService(true);// create policy types
477 for (String resrcName : toscaPolicyTypeResourceNames) {
478 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
479 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
480 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
481 assertNotNull(response);
482 assertFalse(response.getPolicyTypes().isEmpty());
484 Response rawResponse = deleteResource(POLICYTYPES_TCA_VERSION, true);
485 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
490 public void testCreatePolicies() {
492 assertThatCode(() -> {
493 main = startApiService(true);
494 for (String resrcName : toscaPolicyResourceNames) {
495 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
496 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
497 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
498 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
499 error.getErrorMessage());
501 }).doesNotThrowAnyException();
505 public void testReadPolicies() {
507 assertThatCode(() -> {
508 main = startApiService(true);
509 Response rawResponse = readResource(POLICYTYPES_TCA_POLICIES, true);
510 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
511 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
513 "policy with ID null:null and "
514 + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
515 error.getErrorMessage());
517 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE, true);
518 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
519 error = rawResponse.readEntity(ErrorResponse.class);
521 "policy with ID onap.restart.tca:null and "
522 + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
523 error.getErrorMessage());
525 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true);
526 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
527 error = rawResponse.readEntity(ErrorResponse.class);
529 "policy with ID onap.restart.tca:1.0.0 and "
530 + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
531 error.getErrorMessage());
533 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_LATEST, true);
534 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
535 error = rawResponse.readEntity(ErrorResponse.class);
537 "policy with ID onap.restart.tca:null and "
538 + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
539 error.getErrorMessage());
540 }).doesNotThrowAnyException();
544 public void testReadPoliciesPersistent() throws Exception {
547 main = startApiService(true);
548 for (String resrcName : toscaPolicyTypeResourceNames) {
549 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
550 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
551 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
552 assertNotNull(response);
553 assertFalse(response.getPolicyTypes().isEmpty());
556 for (String resrcName : toscaPolicyResourceNames) {
557 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
558 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
561 Response rawResponse;
562 rawResponse = readResource(POLICYTYPES_TCA, true);
563 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
565 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE, true);
566 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
568 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true);
569 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
571 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_LATEST, true);
572 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
577 public void testDeletePolicies() {
579 assertThatCode(() -> {
580 main = startApiService(true);
581 Response rawResponse = deleteResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true);
582 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
583 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
585 "policy with ID onap.restart.tca:1.0.0 and "
586 + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
587 error.getErrorMessage());
588 }).doesNotThrowAnyException();
592 public void testDeletePolicyVersion() throws Exception {
594 setupParameters(); // setup DB
596 main = startApiService(true);// create policy types
597 for (String resrcName : toscaPolicyTypeResourceNames) {
598 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
599 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
600 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
601 assertNotNull(response);
602 assertFalse(response.getPolicyTypes().isEmpty());
604 for (String resrcName : toscaPolicyResourceNames) {
605 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
606 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
608 Response rawResponse = deleteResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true);
609 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
613 public void testGetAllVersionOfPolicy() throws Exception {
615 setupParameters(); // setup DB
617 main = startApiService(true);// create policy types
618 for (String resrcName : toscaPolicyTypeResourceNames) {
619 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
620 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
621 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
622 assertNotNull(response);
623 assertFalse(response.getPolicyTypes().isEmpty());
625 for (String resrcName : toscaPolicyResourceNames) {
626 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
627 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
629 Response rawResponse = readResource(POLICYTYPES_TCA_POLICIES, true);
630 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
635 public void testCreateGuardPolicies() {
637 assertThatCode(() -> {
638 main = startApiService(true);
639 for (String resrcName : legacyGuardPolicyResourceNames) {
640 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
641 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
643 }).doesNotThrowAnyException();
647 public void testCreateGuardPolicies1() throws Exception {
649 setupParameters(); // setup DB
651 main = startApiService(true);
652 for (String resrcName : legacyGuardPolicyResourceNames) {
653 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
654 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
660 public void testCreateOperationalPolicies() {
662 assertThatCode(() -> {
663 main = startApiService(true);
664 for (String resrcName : legacyOperationalPolicyResourceNames) {
665 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
666 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
668 }).doesNotThrowAnyException();
672 public void testCreateOperationalPolicies1() throws Exception {
674 setupParameters(); // setup DB
676 main = startApiService(true);
677 for (String resrcName : legacyOperationalPolicyResourceNames) {
678 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
679 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
685 public void testReadGuardPolicies() {
687 assertThatCode(() -> {
688 main = startApiService(true);
689 Response rawResponse = readResource(GUARD_POLICIES_VDNS_FL_LATEST, true);
690 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
691 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
692 assertEquals("no policy found for policy: guard.frequency.scaleout:null", error.getErrorMessage());
694 rawResponse = readResource(GUARD_POLICIES_VDNS_FL_VERSION, true);
695 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
696 error = rawResponse.readEntity(ErrorResponse.class);
697 assertEquals("no policy found for policy: guard.frequency.scaleout:1", error.getErrorMessage());
699 rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_LATEST, true);
700 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
701 error = rawResponse.readEntity(ErrorResponse.class);
702 assertEquals("no policy found for policy: guard.minmax.scaleout:null", error.getErrorMessage());
704 rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_VERSION, true);
705 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
706 error = rawResponse.readEntity(ErrorResponse.class);
707 assertEquals("no policy found for policy: guard.minmax.scaleout:1", error.getErrorMessage());
708 }).doesNotThrowAnyException();
712 public void testReadGuardPolicies1() throws Exception {
714 setupParameters(); // setup DB
716 main = startApiService(true);
717 for (String resrcName : legacyGuardPolicyResourceNames) {
718 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
719 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
722 Response rawResponse = readResource(GUARD_POLICIES_VDNS_FL_LATEST, true);
723 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
726 rawResponse = readResource(GUARD_POLICIES_VDNS_FL_VERSION, true);
727 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
729 rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_LATEST, true);
730 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
733 rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_VERSION, true);
734 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
739 public void testReadOperationalPolicies() {
741 assertThatCode(() -> {
742 main = startApiService(true);
743 Response rawResponse = readResource(OPS_POLICIES_VCPE_LATEST, true);
744 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
745 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
746 assertEquals("no policy found for policy: operational.restart:null", error.getErrorMessage());
748 rawResponse = readResource(OPS_POLICIES_VCPE_VERSION, true);
749 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
750 error = rawResponse.readEntity(ErrorResponse.class);
751 assertEquals("no policy found for policy: operational.restart:1", error.getErrorMessage());
753 rawResponse = readResource(OPS_POLICIES_VDNS_LATEST, true);
754 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
755 error = rawResponse.readEntity(ErrorResponse.class);
756 assertEquals("no policy found for policy: operational.scaleout:null", error.getErrorMessage());
758 rawResponse = readResource(OPS_POLICIES_VDNS_VERSION, true);
759 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
760 error = rawResponse.readEntity(ErrorResponse.class);
761 assertEquals("no policy found for policy: operational.scaleout:1", error.getErrorMessage());
763 rawResponse = readResource(OPS_POLICIES_VFIREWALL_LATEST, true);
764 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
765 error = rawResponse.readEntity(ErrorResponse.class);
766 assertEquals("no policy found for policy: operational.modifyconfig:null", error.getErrorMessage());
768 rawResponse = readResource(OPS_POLICIES_VFIREWALL_VERSION, true);
769 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
770 error = rawResponse.readEntity(ErrorResponse.class);
771 assertEquals("no policy found for policy: operational.modifyconfig:1", error.getErrorMessage());
772 }).doesNotThrowAnyException();
776 public void testReadOperationalPolicies1() throws Exception {
778 setupParameters(); // setup DB
780 main = startApiService(true);
781 for (String resrcName : legacyOperationalPolicyResourceNames) {
782 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
783 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
786 Response rawResponse = readResource(OPS_POLICIES_VCPE_LATEST, true);
787 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
790 rawResponse = readResource(OPS_POLICIES_VCPE_VERSION, true);
791 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
794 rawResponse = readResource(OPS_POLICIES_VDNS_LATEST, true);
795 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
798 rawResponse = readResource(OPS_POLICIES_VDNS_VERSION, true);
799 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
802 rawResponse = readResource(OPS_POLICIES_VFIREWALL_LATEST, true);
803 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
806 rawResponse = readResource(OPS_POLICIES_VFIREWALL_VERSION, true);
807 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
813 public void testDeleteGuardPolicy() {
815 assertThatCode(() -> {
816 main = startApiService(true);
817 Response rawResponse = deleteResource(GUARD_POLICIES_VDNS_FL_VERSION, true);
818 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
819 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
820 assertEquals("no policy found for policy: guard.frequency.scaleout:1", error.getErrorMessage());
821 }).doesNotThrowAnyException();
825 public void testDeleteGuardPolicy1() throws Exception {
827 setupParameters(); // setup DB
828 main = startApiService(true);
830 for (String resrcName : legacyGuardPolicyResourceNames) {
831 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
832 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
835 Response rawResponse = deleteResource(GUARD_POLICIES_VDNS_FL_VERSION, true);
836 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
841 public void testGetDeployedVersionsOfGuardPolicy() {
842 assertThatCode(() -> {
843 main = startApiService(true);
844 Response rawResponse = readResource(GUARD_POLICIES_VDNS_FL_DEPLOYED, true);
845 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
846 }).doesNotThrowAnyException();
850 public void testDeleteOperationalPolicy() {
852 assertThatCode(() -> {
853 main = startApiService(true);
854 Response rawResponse = deleteResource(OPS_POLICIES_VCPE_VERSION, true);
855 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
856 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
857 assertEquals("no policy found for policy: operational.restart:1", error.getErrorMessage());
858 }).doesNotThrowAnyException();
862 public void testDeleteOperationalPolicy1() throws Exception {
864 setupParameters(); // setup DB
866 main = startApiService(true);
867 for (String resrcName : legacyOperationalPolicyResourceNames) {
868 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
869 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
871 Response rawResponse = deleteResource(OPS_POLICIES_VCPE_VERSION, true);
872 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
877 public void testHttpsCreatePolicyTypes() {
879 assertThatCode(() -> {
880 main = startApiService(false);
881 for (String resrcName : toscaPolicyTypeResourceNames) {
882 Response rawResponse = createResource(POLICYTYPES, resrcName, false);
883 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
884 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
885 assertNotNull(response);
886 assertFalse(response.getPolicyTypes().isEmpty());
888 }).doesNotThrowAnyException();
892 public void testHttpsCreatePolicies() {
894 assertThatCode(() -> {
895 main = startApiService(false);
896 for (String resrcName : toscaPolicyResourceNames) {
897 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, false);
898 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
899 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
900 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
901 error.getErrorMessage());
903 }).doesNotThrowAnyException();
907 public void testHttpsCreateGuardPolicies() {
909 assertThatCode(() -> {
910 main = startApiService(false);
911 for (String resrcName : legacyGuardPolicyResourceNames) {
912 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, false);
913 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
915 }).doesNotThrowAnyException();
919 public void testHttpsCreateOperationalPolicies() {
921 assertThatCode(() -> {
922 main = startApiService(false);
923 for (String resrcName : legacyOperationalPolicyResourceNames) {
924 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, false);
925 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
927 }).doesNotThrowAnyException();
931 public void testGetDeployedVersionsOfPolicy() {
932 assertThatCode(() -> {
933 main = startApiService(true);
934 Response rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_DEPLOYED, true);
935 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
936 }).doesNotThrowAnyException();
940 public void testGetLatestVersionOfOperationalPolicy() {
941 assertThatCode(() -> {
942 main = startApiService(true);
943 Response rawResponse = readResource(OPS_POLICIES_VDNS_LATEST, true);
944 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
945 }).doesNotThrowAnyException();
949 public void testGetSpecificVersionOfOperationalPolicy() {
950 assertThatCode(() -> {
951 main = startApiService(true);
952 Response rawResponse = readResource(OPS_POLICIES_VDNS_VERSION, true);
953 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
954 }).doesNotThrowAnyException();
958 public void testGetDeployedVersionsOfOperationalPolicy() {
959 assertThatCode(() -> {
960 main = startApiService(true);
961 Response rawResponse = readResource(OPS_POLICIES_VCPE_DEPLOYED, true);
962 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
963 }).doesNotThrowAnyException();
967 public void testDeleteSpecificVersionOfOperationalPolicy() {
968 assertThatCode(() -> {
969 main = startApiService(true);
970 Response rawResponse = deleteResource(OPS_POLICIES_VDNS_VERSION, true);
971 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
972 }).doesNotThrowAnyException();
975 private Response createResource(String endpoint, String resourceName, boolean http) throws Exception {
976 String serviceTamplateAsJson =
977 ApiTestSupportUtilities.yaml2Json(ResourceUtils.getResourceAsString(resourceName));
978 ToscaServiceTemplate rawServiceTemplate =
979 standardCoder.decode(serviceTamplateAsJson, ToscaServiceTemplate.class);
980 final Invocation.Builder invocationBuilder;
983 invocationBuilder = sendHttpRequest(endpoint);
985 invocationBuilder = sendHttpsRequest(endpoint);
988 Entity<ToscaServiceTemplate> entity = Entity.entity(rawServiceTemplate, MediaType.APPLICATION_JSON);
989 return invocationBuilder.post(entity);
992 private Response createGuardPolicy(String endpoint, String resourceName, boolean http) throws Exception {
994 LegacyGuardPolicyInput rawGuardPolicy =
995 standardCoder.decode(ResourceUtils.getResourceAsString(resourceName), LegacyGuardPolicyInput.class);
996 final Invocation.Builder invocationBuilder;
999 invocationBuilder = sendHttpRequest(endpoint);
1001 invocationBuilder = sendHttpsRequest(endpoint);
1004 Entity<LegacyGuardPolicyInput> entity = Entity.entity(rawGuardPolicy, MediaType.APPLICATION_JSON);
1005 return invocationBuilder.post(entity);
1008 private Response createOperationalPolicy(String endpoint, String resourceName, boolean http) throws Exception {
1010 LegacyOperationalPolicy rawOpsPolicy =
1011 standardCoder.decode(ResourceUtils.getResourceAsString(resourceName), LegacyOperationalPolicy.class);
1012 final Invocation.Builder invocationBuilder;
1015 invocationBuilder = sendHttpRequest(endpoint);
1017 invocationBuilder = sendHttpsRequest(endpoint);
1020 Entity<LegacyOperationalPolicy> entity = Entity.entity(rawOpsPolicy, MediaType.APPLICATION_JSON);
1021 return invocationBuilder.post(entity);
1024 private Response readResource(String endpoint, boolean http) throws Exception {
1026 final Invocation.Builder invocationBuilder;
1029 invocationBuilder = sendHttpRequest(endpoint);
1031 invocationBuilder = sendHttpsRequest(endpoint);
1034 return invocationBuilder.get();
1038 private Response deleteResource(String endpoint, boolean http) throws Exception {
1040 final Invocation.Builder invocationBuilder;
1043 invocationBuilder = sendHttpRequest(endpoint);
1045 invocationBuilder = sendHttpsRequest(endpoint);
1048 return invocationBuilder.delete();
1051 private Main startApiService(final boolean http) throws Exception {
1052 port = NetworkUtil.allocPort();
1054 final String[] apiConfigParameters = new String[2];
1056 COMMON_TEST_DATA.makeParameters("src/test/resources/parameters/ApiConfigParameters.json",
1057 "src/test/resources/parameters/ApiConfigParametersXXX.json", port);
1058 apiConfigParameters[0] = "-c";
1059 apiConfigParameters[1] = "src/test/resources/parameters/ApiConfigParametersXXX.json";
1061 final Properties systemProps = System.getProperties();
1062 systemProps.put("javax.net.ssl.keyStore", KEYSTORE);
1063 systemProps.put("javax.net.ssl.keyStorePassword", "Pol1cy_0nap");
1064 System.setProperties(systemProps);
1065 COMMON_TEST_DATA.makeParameters("src/test/resources/parameters/ApiConfigParameters_Https.json",
1066 "src/test/resources/parameters/ApiConfigParameters_HttpsXXX.json", port);
1067 apiConfigParameters[0] = "-c";
1068 apiConfigParameters[1] = "src/test/resources/parameters/ApiConfigParameters_HttpsXXX.json";
1070 return new Main(apiConfigParameters);
1073 private void stopApiService(final Main main) throws PolicyApiException {
1078 private Invocation.Builder sendHttpRequest(final String endpoint) throws Exception {
1080 final ClientConfig clientConfig = new ClientConfig();
1082 final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
1083 clientConfig.register(feature);
1085 final Client client = ClientBuilder.newClient(clientConfig);
1087 client.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, "true");
1088 client.register(GsonMessageBodyHandler.class);
1090 final WebTarget webTarget = client.target("http://localhost:" + port + "/policy/api/v1/" + endpoint);
1092 final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
1094 if (!NetworkUtil.isTcpPortOpen("localhost", port, 60, 1000L)) {
1095 throw new IllegalStateException("cannot connect to port " + port);
1097 return invocationBuilder;
1100 private Invocation.Builder sendHttpsRequest(final String endpoint) throws Exception {
1102 final TrustManager[] noopTrustManager = new TrustManager[] { new X509TrustManager() {
1105 public X509Certificate[] getAcceptedIssuers() {
1106 return new X509Certificate[0];
1110 public void checkClientTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {}
1113 public void checkServerTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {}
1116 final SSLContext sc = SSLContext.getInstance("TLSv1.2");
1117 sc.init(null, noopTrustManager, new SecureRandom());
1118 final ClientBuilder clientBuilder =
1119 ClientBuilder.newBuilder().sslContext(sc).hostnameVerifier((host, session) -> true);
1120 final Client client = clientBuilder.build();
1121 final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
1122 client.register(feature);
1124 client.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, "true");
1125 client.register(GsonMessageBodyHandler.class);
1127 final WebTarget webTarget = client.target("https://localhost:" + port + "/policy/api/v1/" + endpoint);
1129 final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
1131 if (!NetworkUtil.isTcpPortOpen("localhost", port, 60, 1000L)) {
1132 throw new IllegalStateException("cannot connect to port " + port);
1134 return invocationBuilder;
1137 private void updateApiStatistics() {
1139 ApiStatisticsManager.updateTotalApiCallCount();
1140 ApiStatisticsManager.updateApiCallSuccessCount();
1141 ApiStatisticsManager.updateApiCallFailureCount();
1142 ApiStatisticsManager.updateTotalPolicyGetCount();
1143 ApiStatisticsManager.updateTotalPolicyPostCount();
1144 ApiStatisticsManager.updateTotalPolicyTypeGetCount();
1145 ApiStatisticsManager.updateTotalPolicyTypePostCount();
1146 ApiStatisticsManager.updatePolicyGetSuccessCount();
1147 ApiStatisticsManager.updatePolicyGetFailureCount();
1148 ApiStatisticsManager.updatePolicyPostSuccessCount();
1149 ApiStatisticsManager.updatePolicyPostFailureCount();
1150 ApiStatisticsManager.updatePolicyTypeGetSuccessCount();
1151 ApiStatisticsManager.updatePolicyTypeGetFailureCount();
1152 ApiStatisticsManager.updatePolicyTypePostSuccessCount();
1153 ApiStatisticsManager.updatePolicyTypePostFailureCount();
1156 private void validateStatisticsReport(final StatisticsReport report, final int code) {
1158 assertEquals(code, report.getCode());
1161 private void validateHealthCheckReport(final String name, final String url, final boolean healthy, final int code,
1162 final String message, final HealthCheckReport report) {
1164 assertEquals(name, report.getName());
1165 assertEquals(url, report.getUrl());
1166 assertEquals(healthy, report.isHealthy());
1167 assertEquals(code, report.getCode());
1168 assertEquals(message, report.getMessage());