Refactored AaiQuery4Ccvpn and related classes
[holmes/common.git] / holmes-actions / src / test / java / org / onap / holmes / common / config / MicroServiceConfigTest.java
1 /**\r
2  * Copyright 2017-2021 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.Before;\r
22 import org.junit.Ignore;\r
23 import org.junit.Test;\r
24 import org.junit.runner.RunWith;\r
25 import org.onap.holmes.common.utils.JerseyClient;\r
26 import org.powermock.api.easymock.PowerMock;\r
27 import org.powermock.core.classloader.annotations.PrepareForTest;\r
28 import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;\r
29 import org.powermock.modules.junit4.PowerMockRunner;\r
30 \r
31 import static org.easymock.EasyMock.anyString;\r
32 import static org.hamcrest.core.Is.is;\r
33 import static org.hamcrest.core.IsEqual.equalTo;\r
34 import static org.hamcrest.core.IsNull.nullValue;\r
35 import static org.junit.Assert.assertThat;\r
36 import static org.onap.holmes.common.config.MicroServiceConfig.*;\r
37 \r
38 @RunWith(PowerMockRunner.class)\r
39 @PrepareForTest({JerseyClient.class, MicroServiceConfig.class})\r
40 @SuppressStaticInitializationFor("org.onap.holmes.common.utils.JerseyClient")\r
41 public class MicroServiceConfigTest {\r
42 \r
43     private static String ACTUAL_HOSTNAME = System.getenv(HOSTNAME);\r
44 \r
45     @Before\r
46     public void before() {\r
47         PowerMock.mockStatic(JerseyClient.class);\r
48     }\r
49 \r
50     @Test\r
51     public void getMsbServerAddrTest() {\r
52         System.setProperty(MSB_IAG_SERVICE_HOST, "test");\r
53         System.setProperty(MSB_IAG_SERVICE_PORT, "443");\r
54         assertThat("http://test:443", equalTo(getMsbServerAddrWithHttpPrefix()));\r
55         System.clearProperty(MicroServiceConfig.MSB_IAG_SERVICE_PORT);\r
56         System.clearProperty(MicroServiceConfig.MSB_IAG_SERVICE_HOST);\r
57     }\r
58 \r
59     @Test\r
60     public void getMsbServerIpTest() {\r
61         System.setProperty(MSB_IAG_SERVICE_HOST, "10.54.23.79");\r
62         System.setProperty(MSB_IAG_SERVICE_PORT, "443");\r
63         System.setProperty(HOSTNAME, "rule-mgmt");\r
64         PowerMock.mockStaticPartial(MicroServiceConfig.class, "getServiceConfigInfoFromCBS", String.class);\r
65         EasyMock.expect(MicroServiceConfig.getServiceConfigInfoFromCBS(System.getProperty(HOSTNAME)))\r
66                 .andReturn("{\"msb.hostname\": \"10.54.23.79:443\"}").times(2);\r
67         PowerMock.replayAll();\r
68         assertThat("10.54.23.79", equalTo(getMsbIpAndPort()[0]));\r
69         assertThat("443", equalTo(getMsbIpAndPort()[1]));\r
70         System.clearProperty(MicroServiceConfig.HOSTNAME);\r
71         System.clearProperty(MicroServiceConfig.MSB_IAG_SERVICE_PORT);\r
72         System.clearProperty(MicroServiceConfig.MSB_IAG_SERVICE_HOST);\r
73     }\r
74 \r
75     @Test\r
76     public void getServiceIpTest() {\r
77         mockGet(null);\r
78 \r
79         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
80         String hostname = String.format("http://%s", ip);\r
81         System.setProperty(HOSTNAME, hostname);\r
82 \r
83         PowerMock.replayAll();\r
84         String ret[] = getMicroServiceIpAndPort();\r
85         PowerMock.verifyAll();\r
86 \r
87         assertThat(ip, equalTo(ret[0]));\r
88         assertThat("80", equalTo(ret[1]));\r
89         System.clearProperty(HOSTNAME);\r
90     }\r
91 \r
92 \r
93     @Test\r
94     public void getConsulAddrInfoTest() {\r
95         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
96         assertThat("http://127.0.0.1:8500/v1/catalog/service/", equalTo(getConsulAddrInfo()));\r
97         System.clearProperty(CONSUL_HOST);\r
98     }\r
99 \r
100     @Test\r
101     public void getConfigBindingServiceAddrInfoTest_consul_not_exist() throws Exception {\r
102         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
103 \r
104         mockGet(null);\r
105 \r
106         PowerMock.replayAll();\r
107 \r
108         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE))\r
109                 , is(nullValue()));\r
110 \r
111         PowerMock.verifyAll();\r
112         System.clearProperty(CONFIG_BINDING_SERVICE);\r
113     }\r
114 \r
115     @Test\r
116     public void getServiceAddrInfoFromDcaeConsulByHostName_consul_exists() throws Exception {\r
117         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
118         mockGet("[{\"ServiceAddress\": \"127.0.0.2\", \"ServicePort\": \"8080\"}]");\r
119         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
120 \r
121         PowerMock.replayAll();\r
122 \r
123         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE)),\r
124                 equalTo("http://127.0.0.2:8080"));\r
125 \r
126         PowerMock.verifyAll();\r
127 \r
128         System.clearProperty(CONSUL_HOST);\r
129         System.clearProperty(CONFIG_BINDING_SERVICE);\r
130     }\r
131 \r
132     @Test\r
133     public void getConfigBindingServiceAddrInfoTest_consul_return_empty_array() throws Exception {\r
134         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
135         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
136 \r
137         mockGet("[]");\r
138 \r
139         PowerMock.replayAll();\r
140 \r
141         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE)),\r
142                 is(nullValue()));\r
143 \r
144         PowerMock.verifyAll();\r
145 \r
146         System.clearProperty(CONSUL_HOST);\r
147         System.clearProperty(CONFIG_BINDING_SERVICE);\r
148     }\r
149 \r
150     @Test\r
151     public void getConfigBindingServiceAddrInfoTest_consul_exists_property_not_exist() throws Exception {\r
152         System.setProperty(CONFIG_BINDING_SERVICE, "config_binding_service");\r
153         System.setProperty(CONSUL_HOST, "127.0.0.1");\r
154 \r
155         mockGet("[{\"ServiceAddress\": \"127.0.0.2\"}]");\r
156 \r
157         PowerMock.replayAll();\r
158 \r
159         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(System.getProperty(CONFIG_BINDING_SERVICE)),\r
160                 is(nullValue()));\r
161 \r
162         PowerMock.verifyAll();\r
163 \r
164         System.clearProperty(CONSUL_HOST);\r
165         System.clearProperty(CONFIG_BINDING_SERVICE);\r
166     }\r
167 \r
168     @Test\r
169     public void getServiceAddrInfoFromCBS_consul_not_exist() {\r
170         mockGet(null);\r
171         mockGet(null);\r
172 \r
173         PowerMock.replayAll();\r
174 \r
175         assertThat(getServiceConfigInfoFromCBS(HOSTNAME), is(nullValue()));\r
176 \r
177         PowerMock.verifyAll();\r
178     }\r
179 \r
180     @Test\r
181     public void getServiceAddrInfoFromDcaeConsulByHostName_consul_exists_service_not_exist() throws Exception {\r
182         mockGet("[]");\r
183 \r
184         PowerMock.replayAll();\r
185 \r
186         assertThat(getServiceAddrInfoFromDcaeConsulByHostName(HOSTNAME), is(nullValue()));\r
187 \r
188         PowerMock.verifyAll();\r
189     }\r
190 \r
191     @Ignore\r
192     public void getMsbAddrInfo_msb_registered() throws Exception {\r
193         System.setProperty(MSB_IAG_SERVICE_HOST, "10.74.5.8");\r
194         System.setProperty(MSB_IAG_SERVICE_PORT, "1545");\r
195         System.setProperty(HOSTNAME, "rule-mgmt");\r
196         PowerMock.mockStaticPartial(MicroServiceConfig.class, "getServiceConfigInfoFromCBS", String.class);\r
197         EasyMock.expect(MicroServiceConfig.getServiceConfigInfoFromCBS(System.getProperty(HOSTNAME)))\r
198                 .andReturn("{\"msb.hostname\": \"127.0.0.3:5432\"}");\r
199 \r
200         PowerMock.replayAll();\r
201         String[] msbInfo = getMsbIpAndPort();\r
202         PowerMock.verifyAll();\r
203 \r
204         assertThat(msbInfo[0], equalTo("127.0.0.3"));\r
205         assertThat(msbInfo[1], equalTo("5432"));\r
206 \r
207         System.clearProperty(HOSTNAME);\r
208         System.clearProperty(MSB_IAG_SERVICE_PORT);\r
209         System.clearProperty(MSB_IAG_SERVICE_HOST);\r
210     }\r
211 \r
212     @Ignore\r
213     public void getMsbAddrInfo_msb_not_registered() throws Exception {\r
214         System.setProperty(MSB_IAG_SERVICE_HOST, "10.74.5.8");\r
215         System.setProperty(MSB_IAG_SERVICE_PORT, "1545");\r
216         System.setProperty(HOSTNAME, "rule-mgmt");\r
217         PowerMock.mockStaticPartial(MicroServiceConfig.class, "getServiceConfigInfoFromCBS", String.class);\r
218         EasyMock.expect(MicroServiceConfig.getServiceConfigInfoFromCBS(System.getProperty(HOSTNAME)))\r
219                 .andReturn("{}");\r
220 \r
221         PowerMock.replayAll();\r
222         String[] msbInfo = getMsbIpAndPort();\r
223         PowerMock.verifyAll();\r
224 \r
225         assertThat(msbInfo[0], equalTo("10.74.5.8"));\r
226         assertThat(msbInfo[1], equalTo("1545"));\r
227 \r
228         System.clearProperty(HOSTNAME);\r
229         System.clearProperty(MSB_IAG_SERVICE_PORT);\r
230         System.clearProperty(MSB_IAG_SERVICE_HOST);\r
231     }\r
232 \r
233     @Test\r
234     public void getMicroServiceIpAndPort_service_registered_to_consul() throws Exception {\r
235         System.setProperty(HOSTNAME, "rule-mgmt");\r
236 \r
237         mockGet("[{\"ServiceAddress\": \"127.0.0.3\", \"ServicePort\": \"5432\"}]");\r
238 \r
239         PowerMock.replayAll();\r
240         String[] msbInfo = getMicroServiceIpAndPort();\r
241         PowerMock.verifyAll();\r
242 \r
243         assertThat(msbInfo[0], equalTo("127.0.0.3"));\r
244         assertThat(msbInfo[1], equalTo("5432"));\r
245 \r
246         System.clearProperty(HOSTNAME);\r
247     }\r
248 \r
249     @Test\r
250     public void getMicroServiceIpAndPort_service_not_registered_to_consul() throws Exception {\r
251         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
252         String port = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "1545" : "80";\r
253         String hostname = String.format("http://%s:%s", ip, port);\r
254         System.setProperty(HOSTNAME, hostname);\r
255 \r
256         mockGet("[]");\r
257 \r
258         PowerMock.replayAll();\r
259         String[] msbInfo = getMicroServiceIpAndPort();\r
260         PowerMock.verifyAll();\r
261 \r
262         assertThat(msbInfo[0], equalTo(ip));\r
263         assertThat(msbInfo[1], equalTo(port));\r
264 \r
265         System.clearProperty(HOSTNAME);\r
266     }\r
267 \r
268     @Test\r
269     public void getMicroServiceIpAndPort_service_not_registered_full_addr() throws Exception {\r
270         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
271         String port = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "1545" : "80";\r
272         String hostname = String.format("http://%s:%s", ip, port);\r
273         System.setProperty(HOSTNAME, hostname);\r
274 \r
275         mockGet("{}");\r
276 \r
277         PowerMock.replayAll();\r
278         String[] msbInfo = getMicroServiceIpAndPort();\r
279         PowerMock.verifyAll();\r
280 \r
281         assertThat(msbInfo[0], equalTo(ip));\r
282         assertThat(msbInfo[1], equalTo(port));\r
283 \r
284         System.clearProperty(HOSTNAME);\r
285     }\r
286 \r
287     @Test\r
288     public void getMicroServiceIpAndPort_service_not_registered_no_port() throws Exception {\r
289         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
290         String hostname = String.format("http://%s", ip);\r
291         System.setProperty(HOSTNAME, hostname);\r
292 \r
293         mockGet("{}");\r
294 \r
295         PowerMock.replayAll();\r
296         String[] msbInfo = getMicroServiceIpAndPort();\r
297         PowerMock.verifyAll();\r
298 \r
299         assertThat(msbInfo[0], equalTo(ip));\r
300         assertThat(msbInfo[1], equalTo("80"));\r
301 \r
302         System.clearProperty(HOSTNAME);\r
303     }\r
304 \r
305     @Test\r
306     public void getMicroServiceIpAndPort_service_not_registered_only_ip() throws Exception {\r
307         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
308         String hostname = String.format("http://%s", ip);\r
309         System.setProperty(HOSTNAME, hostname);\r
310 \r
311         mockGet("{}");\r
312 \r
313         PowerMock.replayAll();\r
314         String[] msbInfo = getMicroServiceIpAndPort();\r
315         PowerMock.verifyAll();\r
316 \r
317         assertThat(msbInfo[0], equalTo(ip));\r
318         assertThat(msbInfo[1], equalTo("80"));\r
319 \r
320         System.clearProperty(HOSTNAME);\r
321     }\r
322 \r
323     @Test\r
324     public void getMicroServiceIpAndPort_service_not_registered_full_addr_https() throws Exception {\r
325         String ip = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "10.74.5.8" : ACTUAL_HOSTNAME;\r
326         String port = StringUtils.isEmpty(ACTUAL_HOSTNAME) ? "1545" : "80";\r
327         String hostname = String.format("http://%s:%s", ip, port);\r
328         System.setProperty(HOSTNAME, hostname);\r
329 \r
330         mockGet("[]");\r
331 \r
332         PowerMock.replayAll();\r
333         String[] msbInfo = getMicroServiceIpAndPort();\r
334         PowerMock.verifyAll();\r
335 \r
336         assertThat(msbInfo[0], equalTo(ip));\r
337         assertThat(msbInfo[1], equalTo(port));\r
338 \r
339         System.clearProperty(HOSTNAME);\r
340     }\r
341 \r
342     private void mockGet(String ret) {\r
343         JerseyClient client = PowerMock.createMock(JerseyClient.class);\r
344         EasyMock.expect(JerseyClient.newInstance()).andReturn(client);\r
345         EasyMock.expect(client.get(anyString())).andReturn(ret);\r
346     }\r
347 }