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