Remove Class: HttpsUtils & MicroserviceBusRest
[holmes/common.git] / holmes-actions / src / test / java / org / onap / holmes / common / config / MicroServiceConfigTest.java
1 /**\r
2  * Copyright 2017-2020 ZTE Corporation.\r
3  * <p>\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  * <p>\r
8  * http://www.apache.org/licenses/LICENSE-2.0\r
9  * <p>\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package org.onap.holmes.common.config;\r
18 \r
19 import org.apache.commons.lang3.StringUtils;\r
20 import org.easymock.EasyMock;\r
21 import org.junit.Ignore;\r
22 import org.junit.Test;\r
23 import org.junit.runner.RunWith;\r
24 import org.powermock.api.easymock.PowerMock;\r
25 import org.powermock.core.classloader.annotations.PowerMockIgnore;\r
26 import org.powermock.core.classloader.annotations.PrepareForTest;\r
27 import org.powermock.modules.junit4.PowerMockRunner;\r
28 import org.powermock.reflect.internal.WhiteboxImpl;\r
29 \r
30 import static org.hamcrest.core.Is.is;\r
31 import static org.hamcrest.core.IsEqual.equalTo;\r
32 import static org.hamcrest.core.IsNull.nullValue;\r
33 import static org.junit.Assert.assertThat;\r
34 import static org.onap.holmes.common.config.MicroServiceConfig.*;\r
35 \r
36 @PrepareForTest(MicroServiceConfig.class)\r
37 @PowerMockIgnore({"javax.ws.*"})\r
38 @RunWith(PowerMockRunner.class)\r
39 public class MicroServiceConfigTest {\r
40 \r
41     private static String ACTUAL_HOSTNAME = System.getenv(HOSTNAME);\r
42 \r
43     @Test\r
44     public void getMsbServerAddrTest() {\r
45         System.setProperty(MSB_IAG_SERVICE_HOST, "test");\r
46         System.setProperty(MSB_IAG_SERVICE_PORT, "443");\r
47         assertThat("http://test:443", equalTo(getMsbServerAddrWithHttpPrefix()));\r
48         System.clearProperty(MicroServiceConfig.MSB_IAG_SERVICE_PORT);\r
49         System.clearProperty(MicroServiceConfig.MSB_IAG_SERVICE_HOST);\r
50     }\r
51 \r
52     @Test\r
53     public void getMsbServerIpTest() {\r
54         System.setProperty(MSB_IAG_SERVICE_HOST, "10.54.23.79");\r
55         System.setProperty(MSB_IAG_SERVICE_PORT, "443");\r
56         System.setProperty(HOSTNAME, "rule-mgmt");\r
57         PowerMock.mockStaticPartial(MicroServiceConfig.class, "getServiceConfigInfoFromCBS", String.class);\r
58         EasyMock.expect(MicroServiceConfig.getServiceConfigInfoFromCBS(System.getProperty(HOSTNAME)))\r
59                 .andReturn("{\"msb.hostname\": \"10.54.23.79:443\"}").times(2);\r
60         PowerMock.replayAll();\r
61         assertThat("10.54.23.79", equalTo(getMsbIpAndPort()[0]));\r
62         assertThat("443", equalTo(getMsbIpAndPort()[1]));\r
63         System.clearProperty(MicroServiceConfig.HOSTNAME);\r
64         System.clearProperty(MicroServiceConfig.MSB_IAG_SERVICE_PORT);\r
65         System.clearProperty(MicroServiceConfig.MSB_IAG_SERVICE_HOST);\r
66     }\r
67 \r
68     @Test\r
69     public void getServiceIpTest() {\r
70         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
71         String hostname = String.format("http://%s", ip);\r
72         System.setProperty(HOSTNAME, hostname);\r
73         assertThat(ip, equalTo(getMicroServiceIpAndPort()[0]));\r
74         assertThat("80", equalTo(getMicroServiceIpAndPort()[1]));\r
75         System.clearProperty(HOSTNAME);\r
76     }\r
77 \r
78     @Test\r
79     public void getConsulAddrInfoTest() {\r
80         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
81         assertThat("http://127.0.0.1:8500/v1/catalog/service/", equalTo(getConsulAddrInfo()));\r
82         System.clearProperty(CONSUL_HOST);\r
83     }\r
84 \r
85     @Test\r
86     public void getConfigBindingServiceAddrInfoTest_consul_not_exist() throws Exception {\r
87         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
88         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
89         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
90                 .andThrow(new RuntimeException("Invalid URL."));\r
91 \r
92         PowerMock.replayAll();\r
93 \r
94         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE))\r
95                 , is(nullValue()));\r
96 \r
97         PowerMock.verifyAll();\r
98         System.clearProperty(CONFIG_BINDING_SERVICE);\r
99     }\r
100 \r
101     @Test\r
102     public void getServiceAddrInfoFromDcaeConsulByHostName_consul_exists() throws Exception {\r
103         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
104         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
105         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
106                 .andReturn("[{\"ServiceAddress\": \"127.0.0.2\", \"ServicePort\": \"8080\"}]");\r
107         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
108 \r
109         PowerMock.replayAll();\r
110 \r
111         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE)),\r
112                 equalTo("http://127.0.0.2:8080"));\r
113 \r
114         PowerMock.verifyAll();\r
115 \r
116         System.clearProperty(CONSUL_HOST);\r
117         System.clearProperty(CONFIG_BINDING_SERVICE);\r
118     }\r
119 \r
120     @Test\r
121     public void getConfigBindingServiceAddrInfoTest_consul_return_empty_array() throws Exception {\r
122         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
123         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
124         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
125                 .andReturn("[]");\r
126         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
127 \r
128         PowerMock.replayAll();\r
129 \r
130         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE)),\r
131                 is(nullValue()));\r
132 \r
133         PowerMock.verifyAll();\r
134 \r
135         System.clearProperty(CONSUL_HOST);\r
136         System.clearProperty(CONFIG_BINDING_SERVICE);\r
137     }\r
138 \r
139     @Test\r
140     public void getConfigBindingServiceAddrInfoTest_consul_exists_property_not_exist() throws Exception {\r
141         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
142         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
143         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
144                 .andReturn("[{\"ServiceAddress\": \"127.0.0.2\"}]");\r
145         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
146 \r
147         PowerMock.replayAll();\r
148 \r
149         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE)),\r
150                 is(nullValue()));\r
151 \r
152         PowerMock.verifyAll();\r
153 \r
154         System.clearProperty(CONSUL_HOST);\r
155         System.clearProperty(CONFIG_BINDING_SERVICE);\r
156     }\r
157 \r
158     @Test\r
159     public void getServiceAddrInfoFromCBS_consul_not_exist() throws Exception {\r
160         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
161         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
162                 .andThrow(new RuntimeException("Invalid URL.")).times(2);\r
163 \r
164         PowerMock.replayAll();\r
165 \r
166         assertThat(getServiceConfigInfoFromCBS(HOSTNAME), is(nullValue()));\r
167 \r
168         PowerMock.verifyAll();\r
169     }\r
170 \r
171     @Test\r
172     public void getServiceAddrInfoFromDcaeConsulByHostName_consul_exists_service_not_exist() throws Exception {\r
173         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
174         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
175                 .andReturn("[]");\r
176 \r
177         PowerMock.replayAll();\r
178         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(HOSTNAME), is(nullValue()));\r
179         PowerMock.verifyAll();\r
180     }\r
181 \r
182     @Ignore\r
183     public void getMsbAddrInfo_msb_registered() throws Exception {\r
184         System.setProperty(MSB_IAG_SERVICE_HOST, "10.74.5.8");\r
185         System.setProperty(MSB_IAG_SERVICE_PORT, "1545");\r
186         System.setProperty(HOSTNAME, "rule-mgmt");\r
187         PowerMock.mockStaticPartial(MicroServiceConfig.class, "getServiceConfigInfoFromCBS", String.class);\r
188         EasyMock.expect(MicroServiceConfig.getServiceConfigInfoFromCBS(System.getProperty(HOSTNAME)))\r
189                 .andReturn("{\"msb.hostname\": \"127.0.0.3:5432\"}");\r
190 \r
191         PowerMock.replayAll();\r
192         String[] msbInfo = getMsbIpAndPort();\r
193         PowerMock.verifyAll();\r
194 \r
195         assertThat(msbInfo[0], equalTo("127.0.0.3"));\r
196         assertThat(msbInfo[1], equalTo("5432"));\r
197 \r
198         System.clearProperty(HOSTNAME);\r
199         System.clearProperty(MSB_IAG_SERVICE_PORT);\r
200         System.clearProperty(MSB_IAG_SERVICE_HOST);\r
201     }\r
202 \r
203     @Ignore\r
204     public void getMsbAddrInfo_msb_not_registered() throws Exception {\r
205         System.setProperty(MSB_IAG_SERVICE_HOST, "10.74.5.8");\r
206         System.setProperty(MSB_IAG_SERVICE_PORT, "1545");\r
207         System.setProperty(HOSTNAME, "rule-mgmt");\r
208         PowerMock.mockStaticPartial(MicroServiceConfig.class, "getServiceConfigInfoFromCBS", String.class);\r
209         EasyMock.expect(MicroServiceConfig.getServiceConfigInfoFromCBS(System.getProperty(HOSTNAME)))\r
210                 .andReturn("{}");\r
211 \r
212         PowerMock.replayAll();\r
213         String[] msbInfo = getMsbIpAndPort();\r
214         PowerMock.verifyAll();\r
215 \r
216         assertThat(msbInfo[0], equalTo("10.74.5.8"));\r
217         assertThat(msbInfo[1], equalTo("1545"));\r
218 \r
219         System.clearProperty(HOSTNAME);\r
220         System.clearProperty(MSB_IAG_SERVICE_PORT);\r
221         System.clearProperty(MSB_IAG_SERVICE_HOST);\r
222     }\r
223 \r
224     @Test\r
225     public void getMicroServiceIpAndPort_service_registered_to_consul() throws Exception {\r
226         System.setProperty(HOSTNAME, "rule-mgmt");\r
227         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
228         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
229                 .andReturn("[{\"ServiceAddress\": \"127.0.0.3\", \"ServicePort\": \"5432\"}]");\r
230 \r
231         PowerMock.replayAll();\r
232         String[] msbInfo = getMicroServiceIpAndPort();\r
233         PowerMock.verifyAll();\r
234 \r
235         assertThat(msbInfo[0], equalTo("127.0.0.3"));\r
236         assertThat(msbInfo[1], equalTo("5432"));\r
237 \r
238         System.clearProperty(HOSTNAME);\r
239     }\r
240 \r
241     @Test\r
242     public void getMicroServiceIpAndPort_service_not_registered_to_consul() throws Exception {\r
243         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
244         String port = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "1545" : "80";\r
245         String hostname = String.format("http://%s:%s", ip, port);\r
246         System.setProperty(HOSTNAME, hostname);\r
247         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
248         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
249                 .andReturn("[]");\r
250 \r
251         PowerMock.replayAll();\r
252         String[] msbInfo = getMicroServiceIpAndPort();\r
253         PowerMock.verifyAll();\r
254 \r
255         assertThat(msbInfo[0], equalTo(ip));\r
256         assertThat(msbInfo[1], equalTo(port));\r
257 \r
258         System.clearProperty(HOSTNAME);\r
259     }\r
260 \r
261     @Test\r
262     public void getMicroServiceIpAndPort_service_not_registered_full_addr() throws Exception {\r
263         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
264         String port = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "1545" : "80";\r
265         String hostname = String.format("http://%s:%s", ip, port);\r
266         System.setProperty(HOSTNAME, hostname);\r
267         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
268         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
269                 .andReturn("{}");\r
270 \r
271         PowerMock.replayAll();\r
272         String[] msbInfo = getMicroServiceIpAndPort();\r
273         PowerMock.verifyAll();\r
274 \r
275         assertThat(msbInfo[0], equalTo(ip));\r
276         assertThat(msbInfo[1], equalTo(port));\r
277 \r
278         System.clearProperty(HOSTNAME);\r
279     }\r
280 \r
281     @Test\r
282     public void getMicroServiceIpAndPort_service_not_registered_no_port() throws Exception {\r
283         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
284         String hostname = String.format("http://%s", ip);\r
285         System.setProperty(HOSTNAME, hostname);\r
286         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
287         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
288                 .andReturn("{}");\r
289 \r
290         PowerMock.replayAll();\r
291         String[] msbInfo = getMicroServiceIpAndPort();\r
292         PowerMock.verifyAll();\r
293 \r
294         assertThat(msbInfo[0], equalTo(ip));\r
295         assertThat(msbInfo[1], equalTo("80"));\r
296 \r
297         System.clearProperty(HOSTNAME);\r
298     }\r
299 \r
300     @Test\r
301     public void getMicroServiceIpAndPort_service_not_registered_only_ip() throws Exception {\r
302         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
303         String hostname = String.format("http://%s", ip);\r
304         System.setProperty(HOSTNAME, hostname);\r
305         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
306         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
307                 .andReturn("{}");\r
308 \r
309         PowerMock.replayAll();\r
310         String[] msbInfo = getMicroServiceIpAndPort();\r
311         PowerMock.verifyAll();\r
312 \r
313         assertThat(msbInfo[0], equalTo(ip));\r
314         assertThat(msbInfo[1], equalTo("80"));\r
315 \r
316         System.clearProperty(HOSTNAME);\r
317     }\r
318 \r
319     @Test\r
320     public void getMicroServiceIpAndPort_service_not_registered_full_addr_https() throws Exception {\r
321         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
322         String port = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "1545" : "80";\r
323         String hostname = String.format("http://%s:%s", ip, port);\r
324         System.setProperty(HOSTNAME, hostname);\r
325         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
326         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
327                 .andReturn("[]");\r
328 \r
329         PowerMock.replayAll();\r
330         String[] msbInfo = getMicroServiceIpAndPort();\r
331         PowerMock.verifyAll();\r
332 \r
333         assertThat(msbInfo[0], equalTo(ip));\r
334         assertThat(msbInfo[1], equalTo(port));\r
335 \r
336         System.clearProperty(HOSTNAME);\r
337     }\r
338 }