eca42fea93ccebc57daff8b5feea20b63e64b443
[policy/clamp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * Copyright (C) 2022-2023 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.clamp.acm.participant.a1pms.utils;
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 MockServerRest that manages test servers for REST requests for the test.
30  */
31 public class MockServerRest implements AutoCloseable {
32     private static final String HOST = "localhost";
33     private HttpServletServer restServer;
34     private int restServerPort = 0;
35
36     /**
37      * Instantiates a new REST simulator.
38      */
39     public MockServerRest(int restServerPort) {
40         this.restServerPort = restServerPort;
41         restServer = HttpServletServerFactoryInstance.getServerFactory().build("MockRestEndpoint", false, HOST,
42                 restServerPort, false, "/", false, false);
43         restServer.addServletClass(null, MockRestEndpoint.class.getName());
44         restServer.setSerializationProvider(GsonMessageBodyHandler.class.getName());
45         restServer.start();
46     }
47
48     /**
49      * Validate the Rest server.
50      * @throws InterruptedException if is not alive
51      */
52     public void validate() throws InterruptedException {
53         if (!NetworkUtil.isTcpPortOpen(HOST, restServerPort, 50, 200L)) {
54             throw new IllegalStateException("port " + restServerPort + " is still not in use");
55         }
56     }
57
58     @Override
59     public void close() throws Exception {
60         if (restServer != null) {
61             restServer.stop();
62             restServer = null;
63         }
64     }
65 }