Created a new simplified API for creating policies
[policy/api.git] / main / src / test / java / org / onap / policy / api / main / rest / TestApiRestServer.java
1 /*-
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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  *
19  * SPDX-License-Identifier: Apache-2.0
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.policy.api.main.rest;
24
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertFalse;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertTrue;
29 import static org.junit.Assert.fail;
30
31 import java.lang.reflect.Constructor;
32 import java.lang.reflect.Modifier;
33 import java.security.SecureRandom;
34 import java.security.cert.X509Certificate;
35 import java.util.Base64;
36 import java.util.Properties;
37
38 import javax.net.ssl.SSLContext;
39 import javax.net.ssl.TrustManager;
40 import javax.net.ssl.X509TrustManager;
41 import javax.ws.rs.client.Client;
42 import javax.ws.rs.client.ClientBuilder;
43 import javax.ws.rs.client.Entity;
44 import javax.ws.rs.client.Invocation;
45 import javax.ws.rs.client.WebTarget;
46 import javax.ws.rs.core.Response;
47 import org.glassfish.jersey.client.ClientConfig;
48 import org.glassfish.jersey.client.ClientProperties;
49 import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
50 import org.junit.After;
51 import org.junit.Test;
52 import org.onap.policy.api.main.exception.PolicyApiException;
53 import org.onap.policy.api.main.parameters.ApiParameterGroup;
54 import org.onap.policy.api.main.parameters.CommonTestData;
55 import org.onap.policy.api.main.rest.provider.PolicyProvider;
56 import org.onap.policy.api.main.rest.provider.PolicyTypeProvider;
57 import org.onap.policy.api.main.startstop.Main;
58 import org.onap.policy.common.endpoints.http.server.RestServer;
59 import org.onap.policy.common.endpoints.http.server.YamlMessageBodyHandler;
60 import org.onap.policy.common.endpoints.parameters.RestServerParameters;
61 import org.onap.policy.common.endpoints.report.HealthCheckReport;
62 import org.onap.policy.common.gson.GsonMessageBodyHandler;
63 import org.onap.policy.common.parameters.ParameterService;
64 import org.onap.policy.common.utils.coder.StandardCoder;
65 import org.onap.policy.common.utils.coder.StandardYamlCoder;
66 import org.onap.policy.common.utils.network.NetworkUtil;
67 import org.onap.policy.common.utils.resources.ResourceUtils;
68 import org.onap.policy.models.base.PfModelException;
69 import org.onap.policy.models.errors.concepts.ErrorResponse;
70 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
71 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
72 import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
73 import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
74 import org.slf4j.Logger;
75 import org.slf4j.LoggerFactory;
76
77 /**
78  * Class to perform unit test of {@link ApiRestServer}.
79  *
80  * @author Chenfei Gao (cgao@research.att.com)
81  */
82 public class TestApiRestServer {
83
84     private static final Logger LOGGER = LoggerFactory.getLogger(TestApiRestServer.class);
85     private static final String NOT_ALIVE = "not alive";
86     private static final String ALIVE = "alive";
87     private static final String SELF = "self";
88     private static final String NAME = "Policy API";
89     private static final String APP_JSON = "application/json";
90     private static final String APP_YAML = "application/yaml";
91
92     private static final String HEALTHCHECK_ENDPOINT = "healthcheck";
93     private static final String STATISTICS_ENDPOINT = "statistics";
94
95     private static final String POLICYTYPES = "policytypes";
96     private static final String POLICYTYPES_TCA = "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app";
97     private static final String POLICYTYPES_COLLECTOR =
98             "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server";
99     private static final String POLICYTYPES_TCA_VERSION =
100             "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0";
101     private static final String POLICYTYPES_TCA_LATEST =
102             "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/latest";
103     private static final String POLICYTYPES_COLLECTOR_VERSION =
104             "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server/versions/1.0.0";
105     private static final String POLICYTYPES_COLLECTOR_LATEST =
106             "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server/versions/latest";
107
108     private static final String POLICYTYPES_TCA_POLICIES =
109             "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies";
110     private static final String POLICYTYPES_TCA_POLICIES_VCPE =
111             "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca";
112     private static final String POLICYTYPES_TCA_POLICIES_VCPE_VERSION = "policytypes/"
113             + "onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/1.0.0";
114     private static final String POLICYTYPES_TCA_POLICIES_VCPE_LATEST = "policytypes/"
115             + "onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/latest";
116     private static final String POLICYTYPES_TCA_POLICIES_VCPE_DEPLOYED = "policytypes/"
117             + "onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/deployed";
118
119     private static final String GUARD_POLICIES = "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies";
120     private static final String GUARD_POLICIES_VDNS_FL_LATEST =
121             "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.frequency.scaleout"
122                     + "/versions/latest";
123     private static final String GUARD_POLICIES_VDNS_FL_DEPLOYED =
124             "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.frequency.scaleout"
125                     + "/versions/deployed";
126     private static final String GUARD_POLICIES_VDNS_MINMAX_LATEST =
127             "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.minmax.scaleout"
128                     + "/versions/latest";
129     private static final String GUARD_POLICIES_VDNS_FL_VERSION = "policytypes/"
130             + "onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.frequency.scaleout/versions/1";
131     private static final String GUARD_POLICIES_VDNS_MINMAX_VERSION =
132             "policytypes/" + "onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.minmax.scaleout/versions/1";
133
134     private static final String OPS_POLICIES =
135             "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies";
136     private static final String OPS_POLICIES_VCPE_LATEST =
137             "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.restart"
138                     + "/versions/latest";
139     private static final String OPS_POLICIES_VCPE_DEPLOYED =
140             "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.restart"
141                     + "/versions/deployed";
142     private static final String OPS_POLICIES_VDNS_LATEST =
143             "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.scaleout"
144                     + "/versions/latest";
145     private static final String OPS_POLICIES_VFIREWALL_LATEST =
146             "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.modifyconfig"
147                     + "/versions/latest";
148     private static final String OPS_POLICIES_VCPE_VERSION = "policytypes/"
149             + "onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.restart/versions/1";
150     private static final String OPS_POLICIES_VDNS_VERSION = "policytypes/"
151             + "onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.scaleout/versions/1";
152     private static final String OPS_POLICIES_VFIREWALL_VERSION = "policytypes/"
153             + "onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.modifyconfig/versions/1";
154     private static final String POLICIES = "policies";
155
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();
158     private Main main;
159     private RestServer restServer;
160     private StandardCoder standardCoder = new StandardCoder();
161     private StandardYamlCoder standardYamlCoder = new StandardYamlCoder();
162     private int port;
163
164     // @formatter:off
165     private String[] toscaPolicyResourceNames = {
166         "policies/vCPE.policy.monitoring.input.tosca.json",
167         "policies/vCPE.policy.monitoring.input.tosca.yaml",
168         "policies/vDNS.policy.monitoring.input.tosca.json",
169         "policies/vDNS.policy.monitoring.input.tosca.yaml",
170         "policies/vFirewall.policy.monitoring.input.tosca.json",
171         "policies/vFirewall.policy.monitoring.input.tosca.yaml"
172     };
173
174     private String[] toscaPoliciesResourceNames = {
175         "policies/vCPE.policies.optimization.input.tosca.json",
176         "policies/vCPE.policies.optimization.input.tosca.yaml"
177     };
178
179     private String[] toscaPolicyTypeResourceNames = {
180         "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml",
181         "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml",
182         "policytypes/onap.policies.Optimization.yaml",
183         "policytypes/onap.policies.controlloop.Operational.yaml",
184         "policytypes/onap.policies.controlloop.guard.Blacklist.yaml",
185         "policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml",
186         "policytypes/onap.policies.controlloop.guard.MinMax.yaml",
187         "policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml",
188         "policytypes/onap.policies.optimization.AffinityPolicy.yaml",
189         "policytypes/onap.policies.optimization.DistancePolicy.yaml",
190         "policytypes/onap.policies.optimization.HpaPolicy.yaml",
191         "policytypes/onap.policies.optimization.OptimizationPolicy.yaml",
192         "policytypes/onap.policies.optimization.PciPolicy.yaml",
193         "policytypes/onap.policies.optimization.QueryPolicy.yaml",
194         "policytypes/onap.policies.optimization.SubscriberPolicy.yaml",
195         "policytypes/onap.policies.optimization.Vim_fit.yaml",
196         "policytypes/onap.policies.optimization.VnfPolicy.yaml"
197     };
198
199     private String[] legacyGuardPolicyResourceNames = {
200         "policies/vDNS.policy.guard.frequency.input.json",
201         "policies/vDNS.policy.guard.minmax.input.json"
202     };
203
204     private String[] legacyOperationalPolicyResourceNames = {
205         "policies/vCPE.policy.operational.input.json",
206         "policies/vDNS.policy.operational.input.json",
207         "policies/vFirewall.policy.operational.input.json"
208     };
209
210     private static PolicyModelsProviderParameters providerParams;
211     private static ApiParameterGroup apiParamGroup;
212     private static PolicyProvider policyProvider;
213     private static PolicyTypeProvider policyTypeProvider;
214
215     // @formatter:on
216
217     /**
218      * Initializes parameters.
219      *
220      * @throws PfModelException the PfModel parsing exception
221      */
222     private void setupParameters() throws PfModelException {
223
224         standardCoder = new StandardCoder();
225         providerParams = new PolicyModelsProviderParameters();
226         providerParams.setDatabaseDriver("org.h2.Driver");
227         providerParams.setDatabaseUrl("jdbc:h2:mem:testdb");
228         providerParams.setDatabaseUser("policy");
229         providerParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
230         providerParams.setPersistenceUnit("ToscaConceptTest");
231         apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams);
232         ParameterService.register(apiParamGroup, true);
233         policyTypeProvider = new PolicyTypeProvider();
234         policyProvider = new PolicyProvider();
235     }
236
237     /**
238      * Method for cleanup after each test.
239      */
240     @After
241     public void teardown() throws Exception {
242         if (policyTypeProvider != null) {
243             policyTypeProvider.close();
244         }
245         if (policyProvider != null) {
246             policyProvider.close();
247         }
248         if (main != null) {
249             stopApiService(main);
250         } else if (restServer != null) {
251             restServer.stop();
252         }
253     }
254
255     @Test
256     public void testApiStatisticsConstructorIsPrivate() {
257
258         try {
259             final Constructor<ApiStatisticsManager> constructor = ApiStatisticsManager.class.getDeclaredConstructor();
260             assertTrue(Modifier.isPrivate(constructor.getModifiers()));
261             constructor.setAccessible(true);
262             constructor.newInstance();
263         } catch (final Exception exp) {
264             assertTrue(exp.getCause().toString().contains("Instantiation of the class is not allowed"));
265         }
266     }
267
268     @Test
269     public void testCreatePolicyTypes() {
270         try {
271             main = startApiService(true);
272             for (String resrcName : toscaPolicyTypeResourceNames) {
273                 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
274                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
275                 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
276                 assertNotNull(response);
277                 assertFalse(response.getPolicyTypes().isEmpty());
278             }
279         } catch (Exception exp) {
280             fail("Test should not throw an exception");
281         }
282     }
283
284     @Test
285     public void testCreatePolicies() {
286         try {
287             main = startApiService(true);
288             for (String resrcName : toscaPolicyResourceNames) {
289                 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
290                 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
291                 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
292                 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
293                         error.getErrorMessage());
294             }
295         } catch (Exception exp) {
296             fail("Test should not throw an exception");
297         }
298     }
299
300     @Test
301     public void testCreatePoliciesPersistent() throws Exception {
302         setupParameters(); // setup DB
303         main = startApiService(true);
304         for (String resrcName : toscaPolicyResourceNames) {
305             Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
306             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
307             ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
308             assertNotNull(response);
309             assertFalse(response.getToscaTopologyTemplate().getPolicies().isEmpty());
310         }
311     }
312
313     @Test
314     public void testSimpleCreatePolicies() throws Exception {
315         main = startApiService(true);
316         for (String resrcName : toscaPoliciesResourceNames) {
317             Response rawResponse = createResource(POLICIES, resrcName, true);
318             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
319             ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
320             assertEquals("policy type onap.policies.optimization.AffinityPolicy:0.0.0 for "
321                 + "policy OSDF_CASABLANCA.Affinity_vCPE_1:1.0.0 does not exist", error.getErrorMessage());
322         }
323     }
324
325     @Test
326     public void testSimpleCreatePoliciesPersistent() throws Exception {
327         setupParameters(); // setup DB
328         main = startApiService(true);
329         for (String resrcName : toscaPoliciesResourceNames) {
330             Response rawResponse = createResource(POLICIES, resrcName, true);
331             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
332             ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
333             assertNotNull(response);
334             assertFalse(response.getToscaTopologyTemplate().getPolicies().isEmpty());
335         }
336     }
337
338     @Test
339     public void testCreateGuardPolicies() {
340         try {
341             main = startApiService(true);
342             for (String resrcName : legacyGuardPolicyResourceNames) {
343                 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
344                 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
345             }
346         } catch (Exception exp) {
347             fail("Test should not throw an exception");
348         }
349     }
350
351     @Test
352     public void testCreateGuardPoliciesPersistent() {
353         try {
354             setupParameters(); // setup DB
355             main = startApiService(true);
356             for (String resrcName : legacyGuardPolicyResourceNames) {
357                 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
358                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
359             }
360         } catch (Exception exp) {
361             fail("Test should not throw an exception");
362         }
363     }
364
365     @Test
366     public void testCreateOperationalPolicies() {
367         try {
368             main = startApiService(true);
369             for (String resrcName : legacyOperationalPolicyResourceNames) {
370                 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
371                 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
372             }
373         } catch (Exception exp) {
374             fail("Test should not throw an exception");
375         }
376     }
377
378     @Test
379     public void testCreateOperationalPoliciesPersistent() {
380         try {
381             setupParameters(); // setup DB
382             main = startApiService(true);
383             for (String resrcName : legacyOperationalPolicyResourceNames) {
384                 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
385                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
386             }
387         } catch (Exception exp) {
388             fail("Test should not throw an exception");
389         }
390     }
391
392     @Test
393     public void testHttpsCreatePolicyTypes() {
394         try {
395             main = startApiService(false);
396             for (String resrcName : toscaPolicyTypeResourceNames) {
397                 Response rawResponse = createResource(POLICYTYPES, resrcName, false);
398                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
399                 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
400                 assertNotNull(response);
401                 assertFalse(response.getPolicyTypes().isEmpty());
402             }
403         } catch (Exception exp) {
404             fail("Test should not throw an exception");
405         }
406     }
407
408     @Test
409     public void testHttpsCreatePolicies() {
410         try {
411             main = startApiService(false);
412             for (String resrcName : toscaPolicyResourceNames) {
413                 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, false);
414                 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
415                 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
416                 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
417                         error.getErrorMessage());
418             }
419         } catch (Exception exp) {
420             fail("Test should not throw an exception");
421         }
422     }
423
424     @Test
425     public void testHttpsCreatePoliciesPersistent() throws Exception {
426         setupParameters(); // setup DB
427         main = startApiService(false);
428         for (String resrcName : toscaPolicyResourceNames) {
429             Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, false);
430             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
431             ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
432             assertNotNull(response);
433             assertFalse(response.getToscaTopologyTemplate().getPolicies().isEmpty());
434         }
435     }
436
437     @Test
438     public void testHttpsSimpleCreatePolicies() throws Exception {
439         main = startApiService(false);
440         for (String resrcName : toscaPoliciesResourceNames) {
441             Response rawResponse = createResource(POLICIES, resrcName, false);
442             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
443             ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
444             assertEquals("policy type onap.policies.optimization.AffinityPolicy:0.0.0 for "
445                 + "policy OSDF_CASABLANCA.Affinity_vCPE_1:1.0.0 does not exist", error.getErrorMessage());
446         }
447     }
448
449     @Test
450     public void testHttpsSimpleCreatePoliciesPersistent() throws Exception {
451         setupParameters(); // setup DB
452         main = startApiService(false);
453         for (String resrcName : toscaPoliciesResourceNames) {
454             Response rawResponse = createResource(POLICIES, resrcName, false);
455             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
456             ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
457             assertNotNull(response);
458             assertFalse(response.getToscaTopologyTemplate().getPolicies().isEmpty());
459         }
460     }
461
462     @Test
463     public void testHttpsCreateGuardPolicies() {
464         try {
465             main = startApiService(false);
466             for (String resrcName : legacyGuardPolicyResourceNames) {
467                 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, false);
468                 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
469             }
470         } catch (Exception exp) {
471             fail("Test should not throw an exception");
472         }
473     }
474
475     @Test
476     public void testHttpsCreateOperationalPolicies() {
477         try {
478             main = startApiService(false);
479             for (String resrcName : legacyOperationalPolicyResourceNames) {
480                 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, false);
481                 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
482             }
483         } catch (Exception exp) {
484             fail("Test should not throw an exception");
485         }
486     }
487
488     @Test
489     public void testHealthCheckSuccessJson() {
490         testHealthCheckSuccess(APP_JSON);
491     }
492
493     @Test
494     public void testHealthCheckSuccessYaml() {
495         testHealthCheckSuccess(APP_YAML);
496     }
497
498
499
500     private void testHealthCheckSuccess(String mediaType) {
501
502         try {
503             main = startApiService(true);
504             final Invocation.Builder invocationBuilder = sendHttpRequest(HEALTHCHECK_ENDPOINT, mediaType);
505             final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
506             validateHealthCheckReport(NAME, SELF, true, 200, ALIVE, report);
507         } catch (final Exception exp) {
508             LOGGER.error("testHealthCheckSuccess failed", exp);
509             fail("Test should not throw an exception");
510         }
511     }
512
513     @Test
514     public void testHealthCheckFailureJson() {
515         testHealthCheckFailure(APP_JSON);
516     }
517
518     @Test
519     public void testHealthCheckFailureYaml() {
520         testHealthCheckFailure(APP_YAML);
521     }
522
523     private void testHealthCheckFailure(String mediaType) {
524         try {
525             port = NetworkUtil.allocPort();
526             final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false, port);
527             restServerParams.setName(CommonTestData.API_GROUP_NAME);
528             restServer = new RestServer(restServerParams, null, ApiRestController.class);
529
530             restServer.start();
531             final Invocation.Builder invocationBuilder = sendHttpRequest(HEALTHCHECK_ENDPOINT, mediaType);
532             final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
533             validateHealthCheckReport(NAME, SELF, false, 500, NOT_ALIVE, report);
534             assertTrue(restServer.isAlive());
535             assertTrue(restServer.toString().startsWith("RestServer [servers="));
536         } catch (Exception exp) {
537             fail("Test should not throw an exception");
538         }
539     }
540
541     @Test
542     public void testHttpsHealthCheckSuccessJson() {
543         testHttpsHealthCheckSuccess(APP_JSON);
544     }
545
546     @Test
547     public void testHttpsHealthCheckSuccessYaml() {
548         testHttpsHealthCheckSuccess(APP_YAML);
549     }
550
551     private void testHttpsHealthCheckSuccess(String mediaType) {
552         try {
553             main = startApiService(false);
554             final Invocation.Builder invocationBuilder = sendHttpsRequest(HEALTHCHECK_ENDPOINT, mediaType);
555             final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
556             validateHealthCheckReport(NAME, SELF, true, 200, ALIVE, report);
557         } catch (Exception exp) {
558             fail("Test should not throw an exception");
559         }
560     }
561
562     @Test
563     public void testApiStatistics_200_Json() {
564         testApiStatistics_200(APP_JSON);
565     }
566
567     @Test
568     public void testApiStatistics_200_Yaml() {
569         testApiStatistics_200(APP_YAML);
570     }
571
572     private void testApiStatistics_200(String mediaType) {
573         try {
574             main = startApiService(true);
575             Invocation.Builder invocationBuilder = sendHttpRequest(STATISTICS_ENDPOINT, mediaType);
576             StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
577             validateStatisticsReport(report, 200);
578             updateApiStatistics();
579             invocationBuilder = sendHttpRequest(STATISTICS_ENDPOINT, mediaType);
580             report = invocationBuilder.get(StatisticsReport.class);
581             validateStatisticsReport(report, 200);
582             ApiStatisticsManager.resetAllStatistics();
583         } catch (Exception exp) {
584             fail("Test should not throw an exception");
585         }
586     }
587
588     @Test
589     public void testHttpsApiStatisticsJson() {
590         testHttpsApiStatistics(APP_JSON);
591     }
592
593     @Test
594     public void testHttpsApiStatisticsYaml() {
595         testHttpsApiStatistics(APP_YAML);
596     }
597
598     private void testHttpsApiStatistics(String mediaType) {
599         try {
600             main = startApiService(false);
601             final Invocation.Builder invocationBuilder = sendHttpsRequest(STATISTICS_ENDPOINT, mediaType);
602             final StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
603             validateStatisticsReport(report, 200);
604         } catch (Exception exp) {
605             fail("Test should not throw an exception");
606         }
607     }
608
609     @Test
610     public void testApiStatistics_500_Json() {
611         testApiStatistics_500(APP_JSON);
612     }
613
614     @Test
615     public void testApiStatistics_500_Yaml() {
616         testApiStatistics_500(APP_YAML);
617     }
618
619
620     private void testApiStatistics_500(String mediaType) {
621         try {
622             port = NetworkUtil.allocPort();
623             final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false, port);
624             restServerParams.setName(CommonTestData.API_GROUP_NAME);
625             restServer = new RestServer(restServerParams, null, ApiRestController.class);
626
627             restServer.start();
628             final Invocation.Builder invocationBuilder = sendHttpRequest(STATISTICS_ENDPOINT, mediaType);
629             final StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
630             validateStatisticsReport(report, 500);
631             ApiStatisticsManager.resetAllStatistics();
632         } catch (Exception exp) {
633             fail("Test should not throw an exception");
634         }
635     }
636
637
638     @Test
639     public void testReadPolicyTypesJson() {
640         testReadPolicyTypes(APP_JSON);
641     }
642
643     @Test
644     public void testReadPolicyTypesYaml() {
645         testReadPolicyTypes(APP_YAML);
646     }
647
648     private void testReadPolicyTypes(String mediaType) {
649         try {
650             main = startApiService(true);
651             Response rawResponse = readResource(POLICYTYPES, true, mediaType);
652             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
653             ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
654             assertTrue(response.getPolicyTypes().isEmpty());
655
656             rawResponse = readResource(POLICYTYPES_TCA, true, mediaType);
657             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
658             ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
659             assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:null does not exist",
660                     error.getErrorMessage());
661
662             rawResponse = readResource(POLICYTYPES_TCA_VERSION, true, mediaType);
663             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
664             error = rawResponse.readEntity(ErrorResponse.class);
665             assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
666                     error.getErrorMessage());
667
668             rawResponse = readResource(POLICYTYPES_TCA_LATEST, true, mediaType);
669             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
670             error = rawResponse.readEntity(ErrorResponse.class);
671             assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:null does not exist",
672                     error.getErrorMessage());
673
674             rawResponse = readResource(POLICYTYPES_COLLECTOR, true, mediaType);
675             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
676             error = rawResponse.readEntity(ErrorResponse.class);
677             assertEquals("policy type with ID "
678                     + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:null does not exist",
679                     error.getErrorMessage());
680
681             rawResponse = readResource(POLICYTYPES_COLLECTOR_VERSION, true, mediaType);
682             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
683             error = rawResponse.readEntity(ErrorResponse.class);
684             assertEquals("policy type with ID "
685                     + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:1.0.0 does not exist",
686                     error.getErrorMessage());
687
688             rawResponse = readResource(POLICYTYPES_COLLECTOR_LATEST, true, mediaType);
689             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
690             error = rawResponse.readEntity(ErrorResponse.class);
691             assertEquals("policy type with ID "
692                     + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:null does not exist",
693                     error.getErrorMessage());
694         } catch (Exception exp) {
695             fail("Test should not throw an exception");
696         }
697     }
698
699     @Test
700     public void testReadPolicyTypesPersistentJson() {
701         testReadPolicyTypesPersistent(APP_JSON);
702     }
703
704     @Test
705     public void testReadPolicyTypesPersistentYaml() {
706         testReadPolicyTypesPersistent(APP_YAML);
707     }
708
709     private void testReadPolicyTypesPersistent(String mediaType) {
710         try {
711             setupParameters();
712             main = startApiService(true);
713             for (String resrcName : toscaPolicyTypeResourceNames) {
714                 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
715                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
716                 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
717                 assertNotNull(response);
718                 assertFalse(response.getPolicyTypes().isEmpty());
719             }
720
721             for (String resrcName : toscaPolicyResourceNames) {
722                 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
723                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
724             }
725
726             Response rawResponse = readResource(POLICYTYPES_TCA, true, mediaType);
727             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
728
729             rawResponse = readResource(POLICYTYPES_TCA_VERSION, true, mediaType);
730             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
731
732
733             rawResponse = readResource(POLICYTYPES_TCA_LATEST, true, mediaType);
734             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
735
736
737             rawResponse = readResource(POLICYTYPES_COLLECTOR, true, mediaType);
738             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
739
740
741             rawResponse = readResource(POLICYTYPES_COLLECTOR_VERSION, true, mediaType);
742             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
743
744
745             rawResponse = readResource(POLICYTYPES_COLLECTOR_LATEST, true, mediaType);
746             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
747         } catch (Exception exp) {
748             fail("Test should not throw an exception");
749         }
750     }
751
752     @Test
753     public void testDeletePolicyTypeJson() {
754         testDeletePolicyType(APP_JSON);
755     }
756
757     @Test
758     public void testDeletePolicyTypeYaml() {
759         testDeletePolicyType(APP_YAML);
760     }
761
762     private void testDeletePolicyType(String mediaType) {
763         try {
764             main = startApiService(true);
765             Response rawResponse = deleteResource(POLICYTYPES_TCA_VERSION, true, mediaType);
766             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
767             ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
768             assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
769                     error.getErrorMessage());
770
771             rawResponse = deleteResource(POLICYTYPES_COLLECTOR_VERSION, true, mediaType);
772             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
773             error = rawResponse.readEntity(ErrorResponse.class);
774             assertEquals("policy type with ID "
775                     + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:1.0.0 does not exist",
776                     error.getErrorMessage());
777         } catch (Exception exp) {
778             fail("Test should not throw an exception");
779         }
780     }
781
782     @Test
783     public void testDeletePolicyTypePersistentJson() {
784         testDeletePolicyTypePersistent(APP_JSON);
785     }
786
787     @Test
788     public void testDeletePolicyTypePersistentYaml() {
789         testDeletePolicyTypePersistent(APP_YAML);
790     }
791
792     private void testDeletePolicyTypePersistent(String mediaType) {
793         try {
794             setupParameters(); // setup DB
795             main = startApiService(true);// create policy types
796             for (String resrcName : toscaPolicyTypeResourceNames) {
797                 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
798                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
799                 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
800                 assertNotNull(response);
801                 assertFalse(response.getPolicyTypes().isEmpty());
802             }
803             Response rawResponse = deleteResource(POLICYTYPES_TCA_VERSION, true, mediaType);
804             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
805         } catch (Exception exp) {
806             fail("Test should not throw an exception");
807         }
808     }
809
810
811     @Test
812     public void testReadPoliciesJson() {
813         testReadPolicies(APP_JSON);
814     }
815
816     @Test
817     public void testReadPoliciesYaml() {
818         testReadPolicies(APP_YAML);
819     }
820
821     private void testReadPolicies(String mediaType) {
822         try {
823             main = startApiService(true);
824             Response rawResponse = readResource(POLICYTYPES_TCA_POLICIES, true, mediaType);
825             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
826             ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
827             assertEquals(
828                     "policy with ID null:null and "
829                             + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
830                     error.getErrorMessage());
831
832             rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE, true, mediaType);
833             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
834             error = rawResponse.readEntity(ErrorResponse.class);
835             assertEquals(
836                     "policy with ID onap.restart.tca:null and "
837                             + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
838                     error.getErrorMessage());
839
840             rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true, mediaType);
841             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
842             error = rawResponse.readEntity(ErrorResponse.class);
843             assertEquals(
844                     "policy with ID onap.restart.tca:1.0.0 and "
845                             + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
846                     error.getErrorMessage());
847
848             rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_LATEST, true, mediaType);
849             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
850             error = rawResponse.readEntity(ErrorResponse.class);
851             assertEquals(
852                     "policy with ID onap.restart.tca:null and "
853                             + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
854                     error.getErrorMessage());
855         } catch (Exception exp) {
856             fail("Test should not throw an exception");
857         }
858     }
859
860     @Test
861     public void testReadPoliciesPersistentJson() {
862         testReadPoliciesPersistent(APP_JSON);
863     }
864
865     @Test
866     public void testReadPoliciesPersistentYaml() {
867         testReadPoliciesPersistent(APP_YAML);
868     }
869
870     private void testReadPoliciesPersistent(String mediaType) {
871         try {
872             setupParameters();
873             main = startApiService(true);
874             for (String resrcName : toscaPolicyTypeResourceNames) {
875                 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
876                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
877                 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
878                 assertNotNull(response);
879                 assertFalse(response.getPolicyTypes().isEmpty());
880             }
881
882             for (String resrcName : toscaPolicyResourceNames) {
883                 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
884                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
885             }
886
887             Response rawResponse;
888             rawResponse = readResource(POLICYTYPES_TCA, true, mediaType);
889             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
890
891             rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE, true, mediaType);
892             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
893
894             rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true, mediaType);
895             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
896
897             rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_LATEST, true, mediaType);
898             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
899         } catch (Exception exp) {
900             fail("Test should not throw an exception");
901         }
902     }
903
904     @Test
905     public void testDeletePoliciesJson() {
906         testDeletePolicies(APP_JSON);
907     }
908
909     @Test
910     public void testDeletePoliciesYaml() {
911         testDeletePolicies(APP_YAML);
912     }
913
914     private void testDeletePolicies(String mediaType) {
915         try {
916             main = startApiService(true);
917             Response rawResponse = deleteResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true, mediaType);
918             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
919             ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
920             assertEquals(
921                     "policy with ID onap.restart.tca:1.0.0 and "
922                             + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
923                     error.getErrorMessage());
924         } catch (Exception exp) {
925             fail("Test should not throw an exception");
926         }
927     }
928
929     @Test
930     public void testDeletePolicyVersionJson() {
931         testDeletePolicyVersion(APP_JSON);
932     }
933
934     @Test
935     public void testDeletePolicyVersionYaml() {
936         testDeletePolicyVersion(APP_YAML);
937     }
938
939     private void testDeletePolicyVersion(String mediaType) {
940         try {
941             setupParameters(); // setup DB
942             main = startApiService(true);// create policy types
943             for (String resrcName : toscaPolicyTypeResourceNames) {
944                 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
945                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
946                 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
947                 assertNotNull(response);
948                 assertFalse(response.getPolicyTypes().isEmpty());
949             }
950             for (String resrcName : toscaPolicyResourceNames) {
951                 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
952                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
953             }
954             Response rawResponse = deleteResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true, mediaType);
955             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
956         } catch (Exception exp) {
957             fail("Test should not throw an exception");
958         }
959     }
960
961     @Test
962     public void testGetAllVersionOfPolicyJson() {
963         testGetAllVersionOfPolicy(APP_JSON);
964     }
965
966     @Test
967     public void testGetAllVersionOfPolicyYaml() {
968         testGetAllVersionOfPolicy(APP_YAML);
969     }
970
971     private void testGetAllVersionOfPolicy(String mediaType) {
972         try {
973             setupParameters(); // setup DB
974             main = startApiService(true);// create policy types
975             for (String resrcName : toscaPolicyTypeResourceNames) {
976                 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
977                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
978                 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
979                 assertNotNull(response);
980                 assertFalse(response.getPolicyTypes().isEmpty());
981             }
982             for (String resrcName : toscaPolicyResourceNames) {
983                 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
984                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
985             }
986             Response rawResponse = readResource(POLICYTYPES_TCA_POLICIES, true, mediaType);
987             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
988         } catch (Exception exp) {
989             fail("Test should not throw an exception");
990         }
991     }
992
993
994     @Test
995     public void testReadGuardPoliciesJson() {
996         testReadGuardPolicies(APP_JSON);
997     }
998
999     @Test
1000     public void testReadGuardPoliciesYaml() {
1001         testReadGuardPolicies(APP_YAML);
1002     }
1003
1004     private void testReadGuardPolicies(String mediaType) {
1005         try {
1006             main = startApiService(true);
1007             Response rawResponse = readResource(GUARD_POLICIES_VDNS_FL_LATEST, true, mediaType);
1008             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1009             ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
1010             assertEquals("no policy found for policy: guard.frequency.scaleout:null", error.getErrorMessage());
1011
1012             rawResponse = readResource(GUARD_POLICIES_VDNS_FL_VERSION, true, mediaType);
1013             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1014             error = rawResponse.readEntity(ErrorResponse.class);
1015             assertEquals("no policy found for policy: guard.frequency.scaleout:1", error.getErrorMessage());
1016
1017             rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_LATEST, true, mediaType);
1018             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1019             error = rawResponse.readEntity(ErrorResponse.class);
1020             assertEquals("no policy found for policy: guard.minmax.scaleout:null", error.getErrorMessage());
1021
1022             rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_VERSION, true, mediaType);
1023             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1024             error = rawResponse.readEntity(ErrorResponse.class);
1025             assertEquals("no policy found for policy: guard.minmax.scaleout:1", error.getErrorMessage());
1026         } catch (Exception exp) {
1027             fail("Test should not throw an exception");
1028         }
1029     }
1030
1031     @Test
1032     public void testReadGuardPoliciesPersistentJson() {
1033         testReadGuardPoliciesPersistent(APP_JSON);
1034     }
1035
1036     @Test
1037     public void testReadGuardPoliciesPersistentYaml() {
1038         testReadGuardPoliciesPersistent(APP_YAML);
1039     }
1040
1041     private void testReadGuardPoliciesPersistent(String mediaType) {
1042         try {
1043             setupParameters(); // setup DB
1044             main = startApiService(true);
1045             for (String resrcName : legacyGuardPolicyResourceNames) {
1046                 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
1047                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1048             }
1049
1050             Response rawResponse = readResource(GUARD_POLICIES_VDNS_FL_LATEST, true, mediaType);
1051             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1052
1053
1054             rawResponse = readResource(GUARD_POLICIES_VDNS_FL_VERSION, true, mediaType);
1055             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1056
1057             rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_LATEST, true, mediaType);
1058             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1059
1060
1061             rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_VERSION, true, mediaType);
1062             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1063         } catch (Exception exp) {
1064             fail("Test should not throw an exception");
1065         }
1066     }
1067
1068
1069     @Test
1070     public void testReadOperationalPoliciesJson() {
1071         testReadOperationalPolicies(APP_JSON);
1072     }
1073
1074     @Test
1075     public void testReadOperationalPoliciesYaml() {
1076         testReadOperationalPolicies(APP_YAML);
1077     }
1078
1079     private void testReadOperationalPolicies(String mediaType) {
1080         try {
1081             main = startApiService(true);
1082             Response rawResponse = readResource(OPS_POLICIES_VCPE_LATEST, true, mediaType);
1083             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1084             ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
1085             assertEquals("no policy found for policy: operational.restart:null", error.getErrorMessage());
1086
1087             rawResponse = readResource(OPS_POLICIES_VCPE_VERSION, true, mediaType);
1088             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1089             error = rawResponse.readEntity(ErrorResponse.class);
1090             assertEquals("no policy found for policy: operational.restart:1", error.getErrorMessage());
1091
1092             rawResponse = readResource(OPS_POLICIES_VDNS_LATEST, true, mediaType);
1093             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1094             error = rawResponse.readEntity(ErrorResponse.class);
1095             assertEquals("no policy found for policy: operational.scaleout:null", error.getErrorMessage());
1096
1097             rawResponse = readResource(OPS_POLICIES_VDNS_VERSION, true, mediaType);
1098             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1099             error = rawResponse.readEntity(ErrorResponse.class);
1100             assertEquals("no policy found for policy: operational.scaleout:1", error.getErrorMessage());
1101
1102             rawResponse = readResource(OPS_POLICIES_VFIREWALL_LATEST, true, mediaType);
1103             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1104             error = rawResponse.readEntity(ErrorResponse.class);
1105             assertEquals("no policy found for policy: operational.modifyconfig:null", error.getErrorMessage());
1106
1107             rawResponse = readResource(OPS_POLICIES_VFIREWALL_VERSION, true, mediaType);
1108             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1109             error = rawResponse.readEntity(ErrorResponse.class);
1110             assertEquals("no policy found for policy: operational.modifyconfig:1", error.getErrorMessage());
1111         } catch (Exception exp) {
1112             fail("Test should not throw an exception");
1113         }
1114     }
1115
1116     @Test
1117     public void testReadOperationalPoliciesPersistentJson() {
1118         testReadOperationalPoliciesPersistent(APP_JSON);
1119     }
1120
1121     @Test
1122     public void testReadOperationalPoliciesPersistentYaml() {
1123         testReadOperationalPoliciesPersistent(APP_YAML);
1124     }
1125
1126     private void testReadOperationalPoliciesPersistent(String mediaType) {
1127         try {
1128             setupParameters(); // setup DB
1129             main = startApiService(true);
1130             for (String resrcName : legacyOperationalPolicyResourceNames) {
1131                 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
1132                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1133             }
1134
1135             Response rawResponse = readResource(OPS_POLICIES_VCPE_LATEST, true, mediaType);
1136             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1137
1138
1139             rawResponse = readResource(OPS_POLICIES_VCPE_VERSION, true, mediaType);
1140             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1141
1142
1143             rawResponse = readResource(OPS_POLICIES_VDNS_LATEST, true, mediaType);
1144             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1145
1146
1147             rawResponse = readResource(OPS_POLICIES_VDNS_VERSION, true, mediaType);
1148             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1149
1150
1151             rawResponse = readResource(OPS_POLICIES_VFIREWALL_LATEST, true, mediaType);
1152             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1153
1154
1155             rawResponse = readResource(OPS_POLICIES_VFIREWALL_VERSION, true, mediaType);
1156             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1157         } catch (Exception exp) {
1158             fail("Test should not throw an exception");
1159         }
1160     }
1161
1162     @Test
1163     public void testDeleteGuardPolicyJson() {
1164         testDeleteGuardPolicy(APP_JSON);
1165     }
1166
1167     @Test
1168     public void testDeleteGuardPolicyYaml() {
1169         testDeleteGuardPolicy(APP_YAML);
1170     }
1171
1172     private void testDeleteGuardPolicy(String mediaType) {
1173         try {
1174             main = startApiService(true);
1175             Response rawResponse = deleteResource(GUARD_POLICIES_VDNS_FL_VERSION, true, mediaType);
1176             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1177             ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
1178             assertEquals("no policy found for policy: guard.frequency.scaleout:1", error.getErrorMessage());
1179         } catch (Exception exp) {
1180             fail("Test should not throw an exception");
1181         }
1182     }
1183
1184     @Test
1185     public void testDeleteGuardPolicyPersistentJson() {
1186         testDeleteGuardPolicyPersistent(APP_JSON);
1187     }
1188
1189     @Test
1190     public void testDeleteGuardPolicyPersistentYaml() {
1191         testDeleteGuardPolicyPersistent(APP_YAML);
1192     }
1193
1194     private void testDeleteGuardPolicyPersistent(String mediaType) {
1195         try {
1196             setupParameters(); // setup DB
1197             main = startApiService(true);
1198
1199             for (String resrcName : legacyGuardPolicyResourceNames) {
1200                 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
1201                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1202             }
1203
1204             Response rawResponse = deleteResource(GUARD_POLICIES_VDNS_FL_VERSION, true, mediaType);
1205             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1206         } catch (Exception exp) {
1207             fail("Test should not throw an exception");
1208         }
1209     }
1210
1211     @Test
1212     public void testGetDeployedVersionsOfGuardPolicyJson() {
1213         testGetDeployedVersionsOfGuardPolicy(APP_JSON);
1214     }
1215
1216     @Test
1217     public void testGetDeployedVersionsOfGuardPolicyYaml() {
1218         testGetDeployedVersionsOfGuardPolicy(APP_YAML);
1219     }
1220
1221     private void testGetDeployedVersionsOfGuardPolicy(String mediaType) {
1222         try {
1223             main = startApiService(true);
1224             Response rawResponse = readResource(GUARD_POLICIES_VDNS_FL_DEPLOYED, true, mediaType);
1225             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
1226         } catch (Exception exp) {
1227             fail("Test should not throw an exception");
1228         }
1229     }
1230
1231     @Test
1232     public void testDeleteOperationalPolicyJson() {
1233         testDeleteOperationalPolicy(APP_JSON);
1234     }
1235
1236     @Test
1237     public void testDeleteOperationalPolicyYaml() {
1238         testDeleteOperationalPolicy(APP_YAML);
1239     }
1240
1241     private void testDeleteOperationalPolicy(String mediaType) {
1242         try {
1243             main = startApiService(true);
1244             Response rawResponse = deleteResource(OPS_POLICIES_VCPE_VERSION, true, mediaType);
1245             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1246             ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
1247             assertEquals("no policy found for policy: operational.restart:1", error.getErrorMessage());
1248         } catch (Exception exp) {
1249             fail("Test should not throw an exception");
1250         }
1251     }
1252
1253     @Test
1254     public void testDeleteOperationalPolicyPersistentJson() {
1255         testDeleteOperationalPolicyPersistent(APP_JSON);
1256     }
1257
1258     @Test
1259     public void testDeleteOperationalPolicyPersistentYaml() {
1260         testDeleteOperationalPolicyPersistent(APP_YAML);
1261     }
1262
1263     private void testDeleteOperationalPolicyPersistent(String mediaType) {
1264         try {
1265             setupParameters(); // setup DB
1266             main = startApiService(true);
1267             for (String resrcName : legacyOperationalPolicyResourceNames) {
1268                 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
1269                 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1270             }
1271             Response rawResponse = deleteResource(OPS_POLICIES_VCPE_VERSION, true, mediaType);
1272             assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1273         } catch (Exception exp) {
1274             fail("Test should not throw an exception");
1275         }
1276     }
1277
1278
1279     @Test
1280     public void testGetDeployedVersionsOfPolicyJson() {
1281         testGetDeployedVersionsOfPolicy(APP_JSON);
1282     }
1283
1284     @Test
1285     public void testGetDeployedVersionsOfPolicyYaml() {
1286         testGetDeployedVersionsOfPolicy(APP_YAML);
1287     }
1288
1289     private void testGetDeployedVersionsOfPolicy(String mediaType) {
1290         try {
1291             main = startApiService(true);
1292             Response rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_DEPLOYED, true, mediaType);
1293             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
1294         } catch (Exception exp) {
1295             fail("Test should not throw an exception");
1296         }
1297     }
1298
1299     @Test
1300     public void testGetLatestVersionOfOperationalPolicyJson() {
1301         testGetLatestVersionOfOperationalPolicy(APP_JSON);
1302     }
1303
1304     @Test
1305     public void testGetLatestVersionOfOperationalPolicyYaml() {
1306         testGetLatestVersionOfOperationalPolicy(APP_YAML);
1307     }
1308
1309     private void testGetLatestVersionOfOperationalPolicy(String mediaType) {
1310         try {
1311             main = startApiService(true);
1312             Response rawResponse = readResource(OPS_POLICIES_VDNS_LATEST, true, mediaType);
1313             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1314         } catch (Exception exp) {
1315             fail("Test should not throw an exception");
1316         }
1317     }
1318
1319     @Test
1320     public void testGetSpecificVersionOfOperationalPolicyJson() {
1321         testGetSpecificVersionOfOperationalPolicy(APP_JSON);
1322     }
1323
1324     @Test
1325     public void testGetSpecificVersionOfOperationalPolicyYaml() {
1326         testGetSpecificVersionOfOperationalPolicy(APP_YAML);
1327     }
1328
1329     private void testGetSpecificVersionOfOperationalPolicy(String mediaType) {
1330         try {
1331             main = startApiService(true);
1332             Response rawResponse = readResource(OPS_POLICIES_VDNS_VERSION, true, mediaType);
1333             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1334         } catch (Exception exp) {
1335             fail("Test should not throw an exception");
1336         }
1337     }
1338
1339     @Test
1340     public void testGetDeployedVersionsOfOperationalPolicyJson() {
1341         testGetDeployedVersionsOfOperationalPolicy(APP_JSON);
1342     }
1343
1344     @Test
1345     public void testGetDeployedVersionsOfOperationalPolicyYaml() {
1346         testGetDeployedVersionsOfOperationalPolicy(APP_YAML);
1347     }
1348
1349     private void testGetDeployedVersionsOfOperationalPolicy(String mediaType) {
1350         try {
1351             main = startApiService(true);
1352             Response rawResponse = readResource(OPS_POLICIES_VCPE_DEPLOYED, true, mediaType);
1353             assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
1354         } catch (Exception exp) {
1355             fail("Test should not throw an exception");
1356         }
1357     }
1358
1359     @Test
1360     public void testDeleteSpecificVersionOfOperationalPolicyJson() {
1361         testDeleteSpecificVersionOfOperationalPolicy(APP_JSON);
1362     }
1363
1364     @Test
1365     public void testDeleteSpecificVersionOfOperationalPolicyYaml() {
1366         testDeleteSpecificVersionOfOperationalPolicy(APP_YAML);
1367     }
1368
1369     private void testDeleteSpecificVersionOfOperationalPolicy(String mediaType) {
1370         try {
1371             main = startApiService(true);
1372             Response rawResponse = deleteResource(OPS_POLICIES_VDNS_VERSION, true, mediaType);
1373             assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1374         } catch (Exception exp) {
1375             fail("Test should not throw an exception");
1376         }
1377     }
1378
1379     private Response createResource(String endpoint, String resourceName, boolean http)
1380             throws Exception {
1381
1382         String mediaType = APP_JSON; // default media type
1383         ToscaServiceTemplate rawServiceTemplate = new ToscaServiceTemplate();
1384         if (resourceName.endsWith(".json")) {
1385             rawServiceTemplate = standardCoder.decode(
1386                     ResourceUtils.getResourceAsString(resourceName), ToscaServiceTemplate.class);
1387         } else if (resourceName.endsWith(".yaml") || resourceName.endsWith(".yml")) {
1388             mediaType = APP_YAML;
1389             rawServiceTemplate = standardYamlCoder.decode(
1390                     ResourceUtils.getResourceAsString(resourceName), ToscaServiceTemplate.class);
1391         }
1392
1393         final Invocation.Builder invocationBuilder;
1394
1395         if (http) {
1396             invocationBuilder = sendHttpRequest(endpoint, mediaType);
1397         } else {
1398             invocationBuilder = sendHttpsRequest(endpoint, mediaType);
1399         }
1400
1401         Entity<ToscaServiceTemplate> entity = Entity.entity(rawServiceTemplate, mediaType);
1402         return invocationBuilder.post(entity);
1403     }
1404
1405     private Response createGuardPolicy(String endpoint, String resourceName, boolean http)
1406             throws Exception {
1407
1408         String mediaType = APP_JSON; // default media type
1409         LegacyGuardPolicyInput rawGuardPolicy = new LegacyGuardPolicyInput();
1410         if (resourceName.endsWith(".json")) {
1411             rawGuardPolicy = standardCoder.decode(
1412                     ResourceUtils.getResourceAsString(resourceName), LegacyGuardPolicyInput.class);
1413         } else if (resourceName.endsWith(".yaml") || resourceName.endsWith(".yml")) {
1414             mediaType = APP_YAML;
1415             rawGuardPolicy = standardYamlCoder.decode(
1416                     ResourceUtils.getResourceAsString(resourceName), LegacyGuardPolicyInput.class);
1417         }
1418
1419         final Invocation.Builder invocationBuilder;
1420
1421         if (http) {
1422             invocationBuilder = sendHttpRequest(endpoint, mediaType);
1423         } else {
1424             invocationBuilder = sendHttpsRequest(endpoint, mediaType);
1425         }
1426
1427         Entity<LegacyGuardPolicyInput> entity = Entity.entity(rawGuardPolicy, mediaType);
1428         return invocationBuilder.post(entity);
1429     }
1430
1431     private Response createOperationalPolicy(String endpoint, String resourceName, boolean http)
1432             throws Exception {
1433
1434         String mediaType = APP_JSON; // default media type
1435         LegacyOperationalPolicy rawOpsPolicy = new LegacyOperationalPolicy();
1436         if (resourceName.endsWith(".json")) {
1437             rawOpsPolicy = standardCoder.decode(
1438                     ResourceUtils.getResourceAsString(resourceName), LegacyOperationalPolicy.class);
1439         } else if (resourceName.endsWith(".yaml") || resourceName.endsWith(".yml")) {
1440             mediaType = APP_YAML;
1441             rawOpsPolicy = standardYamlCoder.decode(
1442                     ResourceUtils.getResourceAsString(resourceName), LegacyOperationalPolicy.class);
1443         }
1444
1445         final Invocation.Builder invocationBuilder;
1446
1447         if (http) {
1448             invocationBuilder = sendHttpRequest(endpoint, mediaType);
1449         } else {
1450             invocationBuilder = sendHttpsRequest(endpoint, mediaType);
1451         }
1452
1453         Entity<LegacyOperationalPolicy> entity = Entity.entity(rawOpsPolicy, mediaType);
1454         return invocationBuilder.post(entity);
1455     }
1456
1457     private Response readResource(String endpoint, boolean http, String mediaType) throws Exception {
1458
1459         final Invocation.Builder invocationBuilder;
1460
1461         if (http) {
1462             invocationBuilder = sendHttpRequest(endpoint, mediaType);
1463         } else {
1464             invocationBuilder = sendHttpsRequest(endpoint, mediaType);
1465         }
1466
1467         return invocationBuilder.get();
1468
1469     }
1470
1471     private Response deleteResource(String endpoint, boolean http, String mediaType) throws Exception {
1472
1473         final Invocation.Builder invocationBuilder;
1474
1475         if (http) {
1476             invocationBuilder = sendHttpRequest(endpoint, mediaType);
1477         } else {
1478             invocationBuilder = sendHttpsRequest(endpoint, mediaType);
1479         }
1480
1481         return invocationBuilder.delete();
1482     }
1483
1484     private Main startApiService(final boolean http) throws Exception {
1485         port = NetworkUtil.allocPort();
1486
1487         final String[] apiConfigParameters = new String[2];
1488         if (http) {
1489             COMMON_TEST_DATA.makeParameters("src/test/resources/parameters/ApiConfigParameters.json",
1490                     "src/test/resources/parameters/ApiConfigParametersXXX.json", port);
1491             apiConfigParameters[0] = "-c";
1492             apiConfigParameters[1] = "src/test/resources/parameters/ApiConfigParametersXXX.json";
1493         } else {
1494             final Properties systemProps = System.getProperties();
1495             systemProps.put("javax.net.ssl.keyStore", KEYSTORE);
1496             systemProps.put("javax.net.ssl.keyStorePassword", "Pol1cy_0nap");
1497             System.setProperties(systemProps);
1498             COMMON_TEST_DATA.makeParameters("src/test/resources/parameters/ApiConfigParameters_Https.json",
1499                     "src/test/resources/parameters/ApiConfigParameters_HttpsXXX.json", port);
1500             apiConfigParameters[0] = "-c";
1501             apiConfigParameters[1] = "src/test/resources/parameters/ApiConfigParameters_HttpsXXX.json";
1502         }
1503         return new Main(apiConfigParameters);
1504     }
1505
1506     private void stopApiService(final Main main) throws PolicyApiException {
1507
1508         main.shutdown();
1509     }
1510
1511     private Invocation.Builder sendHttpRequest(final String endpoint, String mediaType) throws Exception {
1512
1513         final ClientConfig clientConfig = new ClientConfig();
1514
1515         final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
1516         clientConfig.register(feature);
1517
1518         final Client client = ClientBuilder.newClient(clientConfig);
1519
1520         client.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, "true");
1521         if (APP_JSON.equalsIgnoreCase(mediaType)) {
1522             client.register(GsonMessageBodyHandler.class);
1523         } else if (APP_YAML.equalsIgnoreCase(mediaType)) {
1524             client.register(YamlMessageBodyHandler.class);
1525         }
1526
1527         final WebTarget webTarget = client.target("http://localhost:" + port + "/policy/api/v1/" + endpoint);
1528
1529         final Invocation.Builder invocationBuilder = webTarget.request(mediaType);
1530
1531         if (!NetworkUtil.isTcpPortOpen("localhost", port, 60, 1000L)) {
1532             throw new IllegalStateException("cannot connect to port " + port);
1533         }
1534         return invocationBuilder;
1535     }
1536
1537     private Invocation.Builder sendHttpsRequest(final String endpoint, String mediaType) throws Exception {
1538
1539         final TrustManager[] noopTrustManager = new TrustManager[] { new X509TrustManager() {
1540
1541             @Override
1542             public X509Certificate[] getAcceptedIssuers() {
1543                 return new X509Certificate[0];
1544             }
1545
1546             @Override
1547             public void checkClientTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {}
1548
1549             @Override
1550             public void checkServerTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {}
1551         } };
1552
1553         final SSLContext sc = SSLContext.getInstance("TLSv1.2");
1554         sc.init(null, noopTrustManager, new SecureRandom());
1555         final ClientBuilder clientBuilder =
1556                 ClientBuilder.newBuilder().sslContext(sc).hostnameVerifier((host, session) -> true);
1557         final Client client = clientBuilder.build();
1558         final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
1559         client.register(feature);
1560
1561         client.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, "true");
1562         if (APP_JSON.equalsIgnoreCase(mediaType)) {
1563             client.register(GsonMessageBodyHandler.class);
1564         } else if (APP_YAML.equalsIgnoreCase(mediaType)) {
1565             client.register(YamlMessageBodyHandler.class);
1566         }
1567
1568         final WebTarget webTarget = client.target("https://localhost:" + port + "/policy/api/v1/" + endpoint);
1569
1570         final Invocation.Builder invocationBuilder = webTarget.request(mediaType);
1571
1572         if (!NetworkUtil.isTcpPortOpen("localhost", port, 60, 1000L)) {
1573             throw new IllegalStateException("cannot connect to port " + port);
1574         }
1575         return invocationBuilder;
1576     }
1577
1578     private void updateApiStatistics() {
1579
1580         ApiStatisticsManager.updateTotalApiCallCount();
1581         ApiStatisticsManager.updateApiCallSuccessCount();
1582         ApiStatisticsManager.updateApiCallFailureCount();
1583         ApiStatisticsManager.updateTotalPolicyGetCount();
1584         ApiStatisticsManager.updateTotalPolicyPostCount();
1585         ApiStatisticsManager.updateTotalPolicyTypeGetCount();
1586         ApiStatisticsManager.updateTotalPolicyTypePostCount();
1587         ApiStatisticsManager.updatePolicyGetSuccessCount();
1588         ApiStatisticsManager.updatePolicyGetFailureCount();
1589         ApiStatisticsManager.updatePolicyPostSuccessCount();
1590         ApiStatisticsManager.updatePolicyPostFailureCount();
1591         ApiStatisticsManager.updatePolicyTypeGetSuccessCount();
1592         ApiStatisticsManager.updatePolicyTypeGetFailureCount();
1593         ApiStatisticsManager.updatePolicyTypePostSuccessCount();
1594         ApiStatisticsManager.updatePolicyTypePostFailureCount();
1595     }
1596
1597     private void validateStatisticsReport(final StatisticsReport report, final int code) {
1598
1599         assertEquals(code, report.getCode());
1600     }
1601
1602     private void validateHealthCheckReport(final String name, final String url, final boolean healthy, final int code,
1603             final String message, final HealthCheckReport report) {
1604
1605         assertEquals(name, report.getName());
1606         assertEquals(url, report.getUrl());
1607         assertEquals(healthy, report.isHealthy());
1608         assertEquals(code, report.getCode());
1609         assertEquals(message, report.getMessage());
1610     }
1611 }