1d9d56a4a15b2edc1aa8705ce32ac0082aaf2ca0
[policy/apex-pdp.git] / examples / examples-acm / src / main / java / org / onap / policy / apex / examples / acm / AcmTestServerDmaap.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * Copyright (C) 2022 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.examples.acm;
22
23 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
24 import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
25 import org.onap.policy.common.gson.GsonMessageBodyHandler;
26 import org.onap.policy.common.utils.network.NetworkUtil;
27
28 /**
29  * The Class AcmTestServerDmaap that manages test servers for REST requests for the test.
30  */
31 public class AcmTestServerDmaap implements AutoCloseable {
32     private static final String HOST = "localhost";
33     private HttpServletServer restServer;
34     private int restServerPort = 3904;
35
36     /**
37      * Instantiates a new REST simulator for DMaaP requests.
38      */
39     public AcmTestServerDmaap() {
40         restServer = HttpServletServerFactoryInstance.getServerFactory().build("AcmTestRestDmaapEndpoint", false, HOST,
41                 restServerPort, "/", false, false);
42         restServer.addServletClass(null, AcmTestRestDmaapEndpoint.class.getName());
43         restServer.setSerializationProvider(GsonMessageBodyHandler.class.getName());
44         restServer.start();
45     }
46
47     /**
48      * Validate the Rest server.
49      * @throws InterruptedException if is not alive
50      */
51     public void validate() throws InterruptedException {
52         if (!NetworkUtil.isTcpPortOpen(HOST, restServerPort, 50, 200L)) {
53             throw new IllegalStateException("port " + restServerPort + " is still not in use");
54         }
55     }
56
57     @Override
58     public void close() throws Exception {
59         if (restServer != null) {
60             restServer.stop();
61             restServer = null;
62         }
63     }
64 }