1 /*******************************************************************************
2 * Copyright 2016-2017 ZTE, Inc. and others.
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software distributed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11 * or implied. See the License for the specific language governing permissions and limitations under
13 ******************************************************************************/
14 package org.onap.msb.apiroute.wrapper.util;
16 import java.util.HashSet;
19 import org.junit.Assert;
20 import org.junit.Test;
21 import org.junit.runner.RunWith;
22 import org.onap.msb.apiroute.api.MicroServiceFullInfo;
23 import org.onap.msb.apiroute.api.Node;
24 import org.onap.msb.apiroute.api.RouteInfo;
25 import org.onap.msb.apiroute.api.RouteServer;
26 import org.onap.msb.apiroute.api.exception.UnprocessableEntityException;
27 import org.powermock.api.mockito.PowerMockito;
28 import org.powermock.core.classloader.annotations.PrepareForTest;
29 import org.powermock.modules.junit4.PowerMockRunner;
30 import org.powermock.core.classloader.annotations.PowerMockIgnore;
32 @RunWith(PowerMockRunner.class)
33 @PrepareForTest({ConfigUtil.class})
34 @PowerMockIgnore("jdk.internal.reflect.*")
35 public class RouteUtilTest {
38 public void test_getPrefixedKey() {
39 Assert.assertEquals("msb:routing:test:v1", RouteUtil.getPrefixedKey("", "test", "v1"));
40 Assert.assertEquals("msb:5656:test:v1", RouteUtil.getPrefixedKey("5656", "test", "v1"));
45 public void test_getPrefixedKey4Host() {
46 Assert.assertEquals("msb:host:test:v1", RouteUtil.getPrefixedKey4Host("test", "v1"));
53 public void test_checkRouteWay() {
55 RouteUtil.checkRouteWay("ipp");
56 } catch (Exception e) {
57 Assert.assertTrue(e instanceof UnprocessableEntityException);
63 public void test_checkServiceNameAndVersion() {
65 RouteUtil.checkServiceNameAndVersion("", "v1");
66 } catch (Exception e) {
67 Assert.assertTrue(e instanceof UnprocessableEntityException);
71 RouteUtil.checkServiceNameAndVersion("test", "ve1");
72 } catch (Exception e) {
73 Assert.assertTrue(e instanceof UnprocessableEntityException);
78 public void test_checkServiceStatus() {
80 RouteUtil.checkServiceStatus("2");
81 } catch (Exception e) {
82 Assert.assertTrue(e instanceof UnprocessableEntityException);
87 public void test_checkRouterInfoFormat() {
88 RouteInfo routeInfo = new RouteInfo();
91 RouteUtil.checkRouterInfoFormat(routeInfo);
92 } catch (Exception e) {
93 Assert.assertTrue(e instanceof UnprocessableEntityException);
98 public void test_checkMicroServiceInfoFormat() {
99 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
102 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "");
103 } catch (Exception e) {
104 Assert.assertTrue(e instanceof UnprocessableEntityException);
109 public void test_checkMicroServiceInfoFormat_ip() {
110 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
111 microServiceInfo.setServiceName("name");
112 microServiceInfo.setProtocol("REST");
113 Set<Node> nodeSet = new HashSet<>();
114 nodeSet.add(new Node("10.74.148.88.22", "8080"));
115 microServiceInfo.setNodes(nodeSet);
118 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "");
119 } catch (Exception e) {
120 Assert.assertTrue(e instanceof UnprocessableEntityException);
125 public void test_checkMicroServiceInfoFormat_port() {
126 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
127 microServiceInfo.setServiceName("name");
128 microServiceInfo.setProtocol("REST");
129 Set<Node> nodeSet = new HashSet<>();
130 nodeSet.add(new Node("10.74.148.88.22", "808770"));
131 microServiceInfo.setNodes(nodeSet);
134 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "");
135 } catch (Exception e) {
136 Assert.assertTrue(e instanceof UnprocessableEntityException);
141 public void test_checkMicroServiceInfoFormat_version() {
142 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
143 microServiceInfo.setServiceName("name");
144 microServiceInfo.setProtocol("REST");
145 Set<Node> nodeSet = new HashSet<>();
146 nodeSet.add(new Node("", "8089"));
147 microServiceInfo.setNodes(nodeSet);
148 microServiceInfo.setVersion("cv2");
151 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "10.74.55.36");
152 } catch (Exception e) {
153 Assert.assertTrue(e instanceof UnprocessableEntityException);
158 public void test_checkMicroServiceInfoFormat_url() {
159 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
160 microServiceInfo.setServiceName("name");
161 microServiceInfo.setProtocol("REST");
162 Set<Node> nodeSet = new HashSet<>();
163 nodeSet.add(new Node("", "8089"));
164 microServiceInfo.setNodes(nodeSet);
165 microServiceInfo.setVersion("v2");
166 microServiceInfo.setUrl("url");
169 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "10.74.55.36");
170 } catch (Exception e) {
171 Assert.assertTrue(e instanceof UnprocessableEntityException);
176 public void test_checkMicroServiceInfoFormat_protocol() {
177 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
178 microServiceInfo.setServiceName("name");
179 microServiceInfo.setProtocol("REST2");
180 Set<Node> nodeSet = new HashSet<>();
181 nodeSet.add(new Node("", "8089"));
182 microServiceInfo.setNodes(nodeSet);
183 microServiceInfo.setVersion("v2");
184 microServiceInfo.setUrl("/url");
187 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "10.74.55.36");
188 } catch (Exception e) {
189 Assert.assertTrue(e instanceof UnprocessableEntityException);
194 public void test_getAPIRedisPrefixedKey() {
195 Assert.assertEquals("msb:20081:api:testApi:v1",
196 RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost", "20081", "ip"));
197 Assert.assertEquals("msb:routing:api:testApi:v1",
198 RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost", "", "ip"));
199 Assert.assertEquals("msb:host:testHost:api:testApi:v1",
200 RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost", "20081", "domain"));
204 public void test_getRedisPrefixedKey() {
205 Assert.assertEquals("msb:20081:custom:/testName/v1", RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE,
206 "/testName/v1", "testHost", "20081", "ip"));
207 Assert.assertEquals("msb:routing:custom:/testName/v1",
208 RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, "/testName/v1", "testHost", "", "ip"));
209 Assert.assertEquals("msb:host:testHost:custom:/testName/v1", RouteUtil
210 .getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, "/testName/v1", "testHost", "20081", "domain"));
212 Assert.assertEquals("msb:20081:iui:testName",
213 RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE, "testName", "testHost", "20081", "ip"));
214 Assert.assertEquals("msb:routing:iui:testName",
215 RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE, "testName", "testHost", "", "ip"));
216 Assert.assertEquals("msb:host:testHost:iui:testName",
217 RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE, "testName", "testHost", "20081", "domain"));
221 public void test_getMutiRedisKey() {
222 Assert.assertEquals("msb:[^h]*:api:*", RouteUtil.getMutiRedisKey(RouteUtil.APIROUTE, "ip"));
223 Assert.assertEquals("msb:[^h]*:iui:*", RouteUtil.getMutiRedisKey(RouteUtil.IUIROUTE, "ip"));
224 Assert.assertEquals("msb:[^h]*:custom:*", RouteUtil.getMutiRedisKey(RouteUtil.CUSTOMROUTE, "ip"));
226 Assert.assertEquals("msb:host:*:api:*", RouteUtil.getMutiRedisKey(RouteUtil.APIROUTE, "domain"));
227 Assert.assertEquals("msb:host:*:iui:*", RouteUtil.getMutiRedisKey(RouteUtil.IUIROUTE, "domain"));
228 Assert.assertEquals("msb:host:*:custom:*", RouteUtil.getMutiRedisKey(RouteUtil.CUSTOMROUTE, "domain"));
232 public void test_getRouteNameByns() {
233 Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName", "", ""));
234 Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName-ns", "", "ns"));
235 Assert.assertEquals("serviceName-ns", RouteUtil.getRouteNameByns("serviceName-ns-ns", "", "ns"));
236 Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName", "", "default"));
237 Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName-v1-ns", "v1", "ns"));
241 public void test_getVisualRangeByRouter() {
242 Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0|1"));
243 Assert.assertEquals("1", RouteUtil.getVisualRangeByRouter("1"));
244 Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0"));
250 public void test_getVisualRangeByRouter_muti() {
251 PowerMockito.mockStatic(System.class);
252 PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val,visualRange:0|1");
253 ConfigUtil.getInstance().initRouteLabelsMatches();
254 Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0|1"));
258 public void test_checkRouterInfoFormat_url() {
259 RouteInfo routeInfo = new RouteInfo();
260 routeInfo.setServiceName("name");
261 routeInfo.setUrl("url");
262 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")});
265 RouteUtil.checkRouterInfoFormat(routeInfo);
266 } catch (Exception e) {
267 Assert.assertTrue(e instanceof UnprocessableEntityException);
272 public void test_checkRouterInfoFormat_visualRangeRange() {
273 RouteInfo routeInfo = new RouteInfo();
274 routeInfo.setServiceName("name");
275 routeInfo.setUrl("/url");
276 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")});
277 routeInfo.setVisualRange("2");
280 RouteUtil.checkRouterInfoFormat(routeInfo);
281 } catch (Exception e) {
282 Assert.assertTrue(e instanceof UnprocessableEntityException);
288 public void test_checkRouterInfoFormat_controlRangeMatches() {
289 RouteInfo routeInfo = new RouteInfo();
290 routeInfo.setServiceName("name");
291 routeInfo.setUrl("/url");
292 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")});
293 routeInfo.setVisualRange("0");
294 routeInfo.setControl("3");
297 RouteUtil.checkRouterInfoFormat(routeInfo);
298 } catch (Exception e) {
299 Assert.assertTrue(e instanceof UnprocessableEntityException);
304 public void test_checkRouterInfoFormat_statusRangeMatches() {
305 RouteInfo routeInfo = new RouteInfo();
306 routeInfo.setServiceName("name");
307 routeInfo.setUrl("/url");
308 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")});
309 routeInfo.setVisualRange("0");
310 routeInfo.setControl("0");
311 routeInfo.setStatus("3");
314 RouteUtil.checkRouterInfoFormat(routeInfo);
315 } catch (Exception e) {
316 Assert.assertTrue(e instanceof UnprocessableEntityException);
322 public void test_checkRouterInfoFormat_useOwnUpstreamRangeMatches() {
323 RouteInfo routeInfo = new RouteInfo();
324 routeInfo.setServiceName("name");
325 routeInfo.setUrl("/url");
326 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")});
327 routeInfo.setVisualRange("0");
328 routeInfo.setControl("0");
329 routeInfo.setStatus("0");
330 routeInfo.setUseOwnUpstream("3");
333 RouteUtil.checkRouterInfoFormat(routeInfo);
334 } catch (Exception e) {
335 Assert.assertTrue(e instanceof UnprocessableEntityException);
340 public void test_checkRouterInfoFormat_ip() {
341 RouteInfo routeInfo = new RouteInfo();
342 routeInfo.setServiceName("name");
343 routeInfo.setUrl("/url");
344 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88.6", "8080")});
345 routeInfo.setVisualRange("0");
346 routeInfo.setControl("0");
347 routeInfo.setStatus("0");
348 routeInfo.setUseOwnUpstream("1");
351 RouteUtil.checkRouterInfoFormat(routeInfo);
352 } catch (Exception e) {
353 Assert.assertTrue(e instanceof UnprocessableEntityException);
359 public void test_checkRouterInfoFormat_port() {
360 RouteInfo routeInfo = new RouteInfo();
361 routeInfo.setServiceName("name");
362 routeInfo.setUrl("/url");
363 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88.6", "757577")});
364 routeInfo.setVisualRange("0");
365 routeInfo.setControl("0");
366 routeInfo.setStatus("0");
367 routeInfo.setUseOwnUpstream("1");
370 RouteUtil.checkRouterInfoFormat(routeInfo);
371 } catch (Exception e) {
372 Assert.assertTrue(e instanceof UnprocessableEntityException);