Fixed the UT issued caused by the maven plugin change
[holmes/common.git] / holmes-actions / src / test / java / org / onap / holmes / common / config / MicroServiceConfigTest.java
1 /**\r
2  * Copyright 2017 ZTE Corporation.\r
3  *\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  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\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.Rule;\r
23 import org.junit.Test;\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.rule.PowerMockRule;\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 public class MicroServiceConfigTest {\r
39 \r
40     private static String ACTUAL_HOSTNAME = System.getenv(HOSTNAME);\r
41 \r
42     @Rule\r
43     public PowerMockRule powerMockRule = new PowerMockRule();\r
44 \r
45     @Test\r
46     public void getMsbServerAddrTest() {\r
47         System.setProperty(MSB_ADDR, "test:80");\r
48         assertThat("http://test:80", equalTo(getMsbServerAddrWithHttpPrefix()));\r
49         System.clearProperty(MicroServiceConfig.MSB_ADDR);\r
50     }\r
51 \r
52     @Test\r
53     public void getMsbServerIpTest() {\r
54         System.setProperty(MSB_ADDR, "10.54.23.79:80");\r
55         System.setProperty(HOSTNAME, "rule-mgmt");\r
56         PowerMock.mockStaticPartial(MicroServiceConfig.class, "getServiceConfigInfoFromCBS", String.class);\r
57         EasyMock.expect(MicroServiceConfig.getServiceConfigInfoFromCBS(System.getProperty(HOSTNAME)))\r
58                 .andReturn("{\"msb.hostname\": \"10.54.23.79:80\"}").times(2);\r
59         PowerMock.replayAll();\r
60         assertThat("10.54.23.79", equalTo(getMsbIpAndPort()[0]));\r
61         assertThat("80", equalTo(getMsbIpAndPort()[1]));\r
62         System.clearProperty(MicroServiceConfig.HOSTNAME);\r
63         System.clearProperty(MSB_ADDR);\r
64     }\r
65 \r
66     @Test\r
67     public void getServiceIpTest() {\r
68         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
69         String hostname = String.format("http://%s", ip);\r
70         System.setProperty(HOSTNAME, hostname);\r
71         assertThat(ip, equalTo(getMicroServiceIpAndPort()[0]));\r
72         assertThat("80", equalTo(getMicroServiceIpAndPort()[1]));\r
73         System.clearProperty(HOSTNAME);\r
74     }\r
75 \r
76     @Test\r
77     public void getConsulAddrInfoTest() {\r
78         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
79         assertThat("http://127.0.0.1:8500/v1/catalog/service/", equalTo(getConsulAddrInfo()));\r
80         System.clearProperty(CONSUL_HOST);\r
81     }\r
82 \r
83     @Test\r
84     public void getConfigBindingServiceAddrInfoTest_consul_not_exist() throws Exception {\r
85         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
86         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
87         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
88                 .andThrow(new RuntimeException("Invalid URL."));\r
89 \r
90         PowerMock.replayAll();\r
91 \r
92         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE))\r
93                 , is(nullValue()));\r
94 \r
95         PowerMock.verifyAll();\r
96         System.clearProperty(CONFIG_BINDING_SERVICE);\r
97     }\r
98 \r
99     @Test\r
100     public void getServiceAddrInfoFromDcaeConsulByHostName_consul_exists() throws Exception {\r
101         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
102         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
103         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
104                 .andReturn("[{\"ServiceAddress\": \"127.0.0.2\", \"ServicePort\": \"8080\"}]");\r
105         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
106 \r
107         PowerMock.replayAll();\r
108 \r
109         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE)),\r
110                 equalTo("http://127.0.0.2:8080"));\r
111 \r
112         PowerMock.verifyAll();\r
113 \r
114         System.clearProperty(CONSUL_HOST);\r
115         System.clearProperty(CONFIG_BINDING_SERVICE);\r
116     }\r
117 \r
118     @Test\r
119     public void getConfigBindingServiceAddrInfoTest_consul_exists_propertie_not_exist() throws Exception {\r
120         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
121         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
122         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
123                 .andReturn("[{\"ServiceAddress\": \"127.0.0.2\"}]");\r
124         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
125 \r
126         PowerMock.replayAll();\r
127 \r
128         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE)),\r
129                 is(nullValue()));\r
130 \r
131         PowerMock.verifyAll();\r
132 \r
133         System.clearProperty(CONSUL_HOST);\r
134         System.clearProperty(CONFIG_BINDING_SERVICE);\r
135     }\r
136 \r
137     @Test\r
138     public void getServiceAddrInfoFromCBS_consul_not_exist() throws Exception {\r
139         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
140         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
141                 .andThrow(new RuntimeException("Invalid URL.")).times(2);\r
142 \r
143         PowerMock.replayAll();\r
144 \r
145         assertThat(getServiceConfigInfoFromCBS(HOSTNAME), is(nullValue()));\r
146 \r
147         PowerMock.verifyAll();\r
148     }\r
149 \r
150     @Test\r
151     public void getServiceAddrInfoFromDcaeConsulByHostName_consul_exists_service_not_exist() throws Exception {\r
152         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
153         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
154                 .andReturn("[]");\r
155 \r
156         PowerMock.replayAll();\r
157         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(HOSTNAME), is(nullValue()));\r
158         PowerMock.verifyAll();\r
159     }\r
160 \r
161     @Ignore\r
162     public void getMsbAddrInfo_msb_registered() throws Exception {\r
163         System.setProperty(MSB_ADDR, "10.74.5.8:1545");\r
164         System.setProperty(HOSTNAME, "rule-mgmt");\r
165         PowerMock.mockStaticPartial(MicroServiceConfig.class, "getServiceConfigInfoFromCBS", String.class);\r
166         EasyMock.expect(MicroServiceConfig.getServiceConfigInfoFromCBS(System.getProperty(HOSTNAME)))\r
167                 .andReturn("{\"msb.hostname\": \"127.0.0.3:5432\"}");\r
168 \r
169         PowerMock.replayAll();\r
170         String[] msbInfo = getMsbIpAndPort();\r
171         PowerMock.verifyAll();\r
172 \r
173         assertThat(msbInfo[0], equalTo("127.0.0.3"));\r
174         assertThat(msbInfo[1], equalTo("5432"));\r
175 \r
176         System.clearProperty(HOSTNAME);\r
177         System.clearProperty(MSB_ADDR);\r
178     }\r
179 \r
180     @Ignore\r
181     public void getMsbAddrInfo_msb_not_registered() throws Exception {\r
182         System.setProperty(MSB_ADDR, "10.74.5.8:1545");\r
183         System.setProperty(HOSTNAME, "rule-mgmt");\r
184         PowerMock.mockStaticPartial(MicroServiceConfig.class, "getServiceConfigInfoFromCBS", String.class);\r
185         EasyMock.expect(MicroServiceConfig.getServiceConfigInfoFromCBS(System.getProperty(HOSTNAME)))\r
186                 .andReturn("{}");\r
187 \r
188         PowerMock.replayAll();\r
189         String[] msbInfo = getMsbIpAndPort();\r
190         PowerMock.verifyAll();\r
191 \r
192         assertThat(msbInfo[0], equalTo("10.74.5.8"));\r
193         assertThat(msbInfo[1], equalTo("1545"));\r
194 \r
195         System.clearProperty(HOSTNAME);\r
196         System.clearProperty(MSB_ADDR);\r
197     }\r
198 \r
199     @Test\r
200     public void getMicroServiceIpAndPort_service_registered_to_consul() throws Exception {\r
201         System.setProperty(HOSTNAME, "rule-mgmt");\r
202         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
203         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
204                 .andReturn("[{\"ServiceAddress\": \"127.0.0.3\", \"ServicePort\": \"5432\"}]");\r
205 \r
206         PowerMock.replayAll();\r
207         String[] msbInfo = getMicroServiceIpAndPort();\r
208         PowerMock.verifyAll();\r
209 \r
210         assertThat(msbInfo[0], equalTo("127.0.0.3"));\r
211         assertThat(msbInfo[1], equalTo("5432"));\r
212 \r
213         System.clearProperty(HOSTNAME);\r
214     }\r
215 \r
216     @Test\r
217     public void getMicroServiceIpAndPort_service_not_registered_to_consul() throws Exception {\r
218         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
219         String port = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "1545" : "80";\r
220         String hostname = String.format("http://%s:%s", ip, port);\r
221         System.setProperty(HOSTNAME, hostname);\r
222         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
223         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
224                 .andReturn("[]");\r
225 \r
226         PowerMock.replayAll();\r
227         String[] msbInfo = getMicroServiceIpAndPort();\r
228         PowerMock.verifyAll();\r
229 \r
230         assertThat(msbInfo[0], equalTo(ip));\r
231         assertThat(msbInfo[1], equalTo(port));\r
232 \r
233         System.clearProperty(HOSTNAME);\r
234     }\r
235 \r
236     @Test\r
237     public void getMicroServiceIpAndPort_service_not_registered_full_addr() throws Exception {\r
238         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
239         String port = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "1545" : "80";\r
240         String hostname = String.format("http://%s:%s", ip, port);\r
241         System.setProperty(HOSTNAME, hostname);\r
242         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
243         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
244                 .andReturn("{}");\r
245 \r
246         PowerMock.replayAll();\r
247         String[] msbInfo = getMicroServiceIpAndPort();\r
248         PowerMock.verifyAll();\r
249 \r
250         assertThat(msbInfo[0], equalTo(ip));\r
251         assertThat(msbInfo[1], equalTo(port));\r
252 \r
253         System.clearProperty(MSB_ADDR);\r
254     }\r
255 \r
256     @Test\r
257     public void getMicroServiceIpAndPort_service_not_registered_no_port() throws Exception {\r
258         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
259         String hostname = String.format("http://%s", ip);\r
260         System.setProperty(HOSTNAME, hostname);\r
261         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
262         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
263                 .andReturn("{}");\r
264 \r
265         PowerMock.replayAll();\r
266         String[] msbInfo = getMicroServiceIpAndPort();\r
267         PowerMock.verifyAll();\r
268 \r
269         assertThat(msbInfo[0], equalTo(ip));\r
270         assertThat(msbInfo[1], equalTo("80"));\r
271 \r
272         System.clearProperty(MSB_ADDR);\r
273     }\r
274 \r
275     @Test\r
276     public void getMicroServiceIpAndPort_service_not_registered_only_ip() throws Exception {\r
277         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
278         String hostname = String.format("http://%s", ip);\r
279         System.setProperty(HOSTNAME, hostname);\r
280         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
281         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
282                 .andReturn("{}");\r
283 \r
284         PowerMock.replayAll();\r
285         String[] msbInfo = getMicroServiceIpAndPort();\r
286         PowerMock.verifyAll();\r
287 \r
288         assertThat(msbInfo[0], equalTo(ip));\r
289         assertThat(msbInfo[1], equalTo("80"));\r
290 \r
291         System.clearProperty(MSB_ADDR);\r
292     }\r
293 \r
294     @Test\r
295     public void getMicroServiceIpAndPort_service_not_registered_full_addr_https() throws Exception {\r
296         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
297         String port = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "1545" : "80";\r
298         String hostname = String.format("http://%s:%s", ip, port);\r
299         System.setProperty(HOSTNAME, hostname);\r
300         PowerMock.mockStaticPartial(MicroServiceConfig.class, "execQuery", String.class);\r
301         PowerMock.expectPrivate(MicroServiceConfig.class, "execQuery", EasyMock.anyObject())\r
302                 .andReturn("[]");\r
303 \r
304         PowerMock.replayAll();\r
305         String[] msbInfo = getMicroServiceIpAndPort();\r
306         PowerMock.verifyAll();\r
307 \r
308         assertThat(msbInfo[0], equalTo(ip));\r
309         assertThat(msbInfo[1], equalTo(port));\r
310 \r
311         System.clearProperty(MSB_ADDR);\r
312     }\r
313 \r
314     @Test\r
315     public void isValidIpAddress_with_port() throws Exception {\r
316         boolean res = WhiteboxImpl.invokeMethod(MicroServiceConfig.class, "isIpAddress", "10.75.13.21:90");\r
317         assertThat(res, is(true));\r
318     }\r
319 \r
320     @Test\r
321     public void isValidIpAddress_without_port() throws Exception {\r
322         boolean res = WhiteboxImpl.invokeMethod(MicroServiceConfig.class, "isIpAddress", "10.75.13.21");\r
323         assertThat(res, is(true));\r
324     }\r
325 \r
326     @Test\r
327     public void isValidIpAddress_with_port_with_http_prefix() throws Exception {\r
328         boolean res = WhiteboxImpl.invokeMethod(MicroServiceConfig.class, "isIpAddress", "http://10.75.13.21:90");\r
329         assertThat(res, is(true));\r
330     }\r
331 \r
332     @Test\r
333     public void isValidIpAddress_without_port_with_https_prefix() throws Exception {\r
334         boolean res = WhiteboxImpl.invokeMethod(MicroServiceConfig.class, "isIpAddress", "https://10.75.13.21");\r
335         assertThat(res, is(true));\r
336     }\r
337 \r
338     @Test\r
339     public void isValidIpAddress_invalid_ip_without_port() throws Exception {\r
340         boolean res = WhiteboxImpl.invokeMethod(MicroServiceConfig.class, "isIpAddress", "holmes-rule-mgmt");\r
341         assertThat(res, is(false));\r
342     }\r
343 \r
344     @Test\r
345     public void isValidIpAddress_invalid_ip_with_port() throws Exception {\r
346         boolean res = WhiteboxImpl.invokeMethod(MicroServiceConfig.class, "isIpAddress", "holmes-rule-mgmt:80");\r
347         assertThat(res, is(false));\r
348     }\r
349 \r
350     @Test\r
351     public void isValidIpAddress_invalid_ip_without_port_with_http_prefix() throws Exception {\r
352         boolean res = WhiteboxImpl.invokeMethod(MicroServiceConfig.class, "isIpAddress", "http://holmes-rule-mgmt");\r
353         assertThat(res, is(false));\r
354     }\r
355 \r
356     @Test\r
357     public void isValidIpAddress_invalid_ip_with_port_with_https_prefix() throws Exception {\r
358         boolean res = WhiteboxImpl.invokeMethod(MicroServiceConfig.class, "isIpAddress", "https://holmes-rule-mgmt:80");\r
359         assertThat(res, is(false));\r
360     }\r
361 }