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;
31 @RunWith(PowerMockRunner.class)
32 @PrepareForTest({ConfigUtil.class})
33 public class RouteUtilTest {
36 public void test_getPrefixedKey() {
37 Assert.assertEquals("msb:routing:test:v1", RouteUtil.getPrefixedKey("", "test", "v1"));
38 Assert.assertEquals("msb:5656:test:v1", RouteUtil.getPrefixedKey("5656", "test", "v1"));
43 public void test_getPrefixedKey4Host() {
44 Assert.assertEquals("msb:host:test:v1", RouteUtil.getPrefixedKey4Host("test", "v1"));
51 public void test_checkRouteWay() {
53 RouteUtil.checkRouteWay("ipp");
54 } catch (Exception e) {
55 Assert.assertTrue(e instanceof UnprocessableEntityException);
61 public void test_checkServiceNameAndVersion() {
63 RouteUtil.checkServiceNameAndVersion("", "v1");
64 } catch (Exception e) {
65 Assert.assertTrue(e instanceof UnprocessableEntityException);
69 RouteUtil.checkServiceNameAndVersion("test", "ve1");
70 } catch (Exception e) {
71 Assert.assertTrue(e instanceof UnprocessableEntityException);
76 public void test_checkServiceStatus() {
78 RouteUtil.checkServiceStatus("2");
79 } catch (Exception e) {
80 Assert.assertTrue(e instanceof UnprocessableEntityException);
85 public void test_checkRouterInfoFormat() {
86 RouteInfo routeInfo = new RouteInfo();
89 RouteUtil.checkRouterInfoFormat(routeInfo);
90 } catch (Exception e) {
91 Assert.assertTrue(e instanceof UnprocessableEntityException);
96 public void test_checkMicroServiceInfoFormat() {
97 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
100 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "");
101 } catch (Exception e) {
102 Assert.assertTrue(e instanceof UnprocessableEntityException);
107 public void test_checkMicroServiceInfoFormat_ip() {
108 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
109 microServiceInfo.setServiceName("name");
110 microServiceInfo.setProtocol("REST");
111 Set<Node> nodeSet = new HashSet<>();
112 nodeSet.add(new Node("10.74.148.88.22", "8080"));
113 microServiceInfo.setNodes(nodeSet);
116 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "");
117 } catch (Exception e) {
118 Assert.assertTrue(e instanceof UnprocessableEntityException);
123 public void test_checkMicroServiceInfoFormat_port() {
124 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
125 microServiceInfo.setServiceName("name");
126 microServiceInfo.setProtocol("REST");
127 Set<Node> nodeSet = new HashSet<>();
128 nodeSet.add(new Node("10.74.148.88.22", "808770"));
129 microServiceInfo.setNodes(nodeSet);
132 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "");
133 } catch (Exception e) {
134 Assert.assertTrue(e instanceof UnprocessableEntityException);
139 public void test_checkMicroServiceInfoFormat_version() {
140 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
141 microServiceInfo.setServiceName("name");
142 microServiceInfo.setProtocol("REST");
143 Set<Node> nodeSet = new HashSet<>();
144 nodeSet.add(new Node("", "8089"));
145 microServiceInfo.setNodes(nodeSet);
146 microServiceInfo.setVersion("cv2");
149 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "10.74.55.36");
150 } catch (Exception e) {
151 Assert.assertTrue(e instanceof UnprocessableEntityException);
156 public void test_checkMicroServiceInfoFormat_url() {
157 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
158 microServiceInfo.setServiceName("name");
159 microServiceInfo.setProtocol("REST");
160 Set<Node> nodeSet = new HashSet<>();
161 nodeSet.add(new Node("", "8089"));
162 microServiceInfo.setNodes(nodeSet);
163 microServiceInfo.setVersion("v2");
164 microServiceInfo.setUrl("url");
167 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "10.74.55.36");
168 } catch (Exception e) {
169 Assert.assertTrue(e instanceof UnprocessableEntityException);
174 public void test_checkMicroServiceInfoFormat_protocol() {
175 MicroServiceFullInfo microServiceInfo = new MicroServiceFullInfo();
176 microServiceInfo.setServiceName("name");
177 microServiceInfo.setProtocol("REST2");
178 Set<Node> nodeSet = new HashSet<>();
179 nodeSet.add(new Node("", "8089"));
180 microServiceInfo.setNodes(nodeSet);
181 microServiceInfo.setVersion("v2");
182 microServiceInfo.setUrl("/url");
185 RouteUtil.checkMicroServiceInfoFormat(microServiceInfo, "10.74.55.36");
186 } catch (Exception e) {
187 Assert.assertTrue(e instanceof UnprocessableEntityException);
192 public void test_getAPIRedisPrefixedKey() {
193 Assert.assertEquals("msb:20081:api:testApi:v1",
194 RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost", "20081", "ip"));
195 Assert.assertEquals("msb:routing:api:testApi:v1",
196 RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost", "", "ip"));
197 Assert.assertEquals("msb:host:testHost:api:testApi:v1",
198 RouteUtil.getAPIRedisPrefixedKey("testApi", "v1", "testHost", "20081", "domain"));
202 public void test_getRedisPrefixedKey() {
203 Assert.assertEquals("msb:20081:custom:/testName/v1", RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE,
204 "/testName/v1", "testHost", "20081", "ip"));
205 Assert.assertEquals("msb:routing:custom:/testName/v1",
206 RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, "/testName/v1", "testHost", "", "ip"));
207 Assert.assertEquals("msb:host:testHost:custom:/testName/v1", RouteUtil
208 .getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, "/testName/v1", "testHost", "20081", "domain"));
210 Assert.assertEquals("msb:20081:iui:testName",
211 RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE, "testName", "testHost", "20081", "ip"));
212 Assert.assertEquals("msb:routing:iui:testName",
213 RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE, "testName", "testHost", "", "ip"));
214 Assert.assertEquals("msb:host:testHost:iui:testName",
215 RouteUtil.getRedisPrefixedKey(RouteUtil.IUIROUTE, "testName", "testHost", "20081", "domain"));
219 public void test_getMutiRedisKey() {
220 Assert.assertEquals("msb:[^h]*:api:*", RouteUtil.getMutiRedisKey(RouteUtil.APIROUTE, "ip"));
221 Assert.assertEquals("msb:[^h]*:iui:*", RouteUtil.getMutiRedisKey(RouteUtil.IUIROUTE, "ip"));
222 Assert.assertEquals("msb:[^h]*:custom:*", RouteUtil.getMutiRedisKey(RouteUtil.CUSTOMROUTE, "ip"));
224 Assert.assertEquals("msb:host:*:api:*", RouteUtil.getMutiRedisKey(RouteUtil.APIROUTE, "domain"));
225 Assert.assertEquals("msb:host:*:iui:*", RouteUtil.getMutiRedisKey(RouteUtil.IUIROUTE, "domain"));
226 Assert.assertEquals("msb:host:*:custom:*", RouteUtil.getMutiRedisKey(RouteUtil.CUSTOMROUTE, "domain"));
230 public void test_getRouteNameByns() {
231 Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName", "", ""));
232 Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName-ns", "", "ns"));
233 Assert.assertEquals("serviceName-ns", RouteUtil.getRouteNameByns("serviceName-ns-ns", "", "ns"));
234 Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName", "", "default"));
235 Assert.assertEquals("serviceName", RouteUtil.getRouteNameByns("serviceName-v1-ns", "v1", "ns"));
239 public void test_getVisualRangeByRouter() {
240 Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0|1"));
241 Assert.assertEquals("1", RouteUtil.getVisualRangeByRouter("1"));
242 Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0"));
248 public void test_getVisualRangeByRouter_muti() {
249 PowerMockito.mockStatic(System.class);
250 PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val,visualRange:0|1");
251 ConfigUtil.getInstance().initRouteLabelsMatches();
252 Assert.assertEquals("0", RouteUtil.getVisualRangeByRouter("0|1"));
256 public void test_checkRouterInfoFormat_url() {
257 RouteInfo routeInfo = new RouteInfo();
258 routeInfo.setServiceName("name");
259 routeInfo.setUrl("url");
260 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")});
263 RouteUtil.checkRouterInfoFormat(routeInfo);
264 } catch (Exception e) {
265 Assert.assertTrue(e instanceof UnprocessableEntityException);
270 public void test_checkRouterInfoFormat_visualRangeRange() {
271 RouteInfo routeInfo = new RouteInfo();
272 routeInfo.setServiceName("name");
273 routeInfo.setUrl("/url");
274 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")});
275 routeInfo.setVisualRange("2");
278 RouteUtil.checkRouterInfoFormat(routeInfo);
279 } catch (Exception e) {
280 Assert.assertTrue(e instanceof UnprocessableEntityException);
286 public void test_checkRouterInfoFormat_controlRangeMatches() {
287 RouteInfo routeInfo = new RouteInfo();
288 routeInfo.setServiceName("name");
289 routeInfo.setUrl("/url");
290 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")});
291 routeInfo.setVisualRange("0");
292 routeInfo.setControl("3");
295 RouteUtil.checkRouterInfoFormat(routeInfo);
296 } catch (Exception e) {
297 Assert.assertTrue(e instanceof UnprocessableEntityException);
302 public void test_checkRouterInfoFormat_statusRangeMatches() {
303 RouteInfo routeInfo = new RouteInfo();
304 routeInfo.setServiceName("name");
305 routeInfo.setUrl("/url");
306 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")});
307 routeInfo.setVisualRange("0");
308 routeInfo.setControl("0");
309 routeInfo.setStatus("3");
312 RouteUtil.checkRouterInfoFormat(routeInfo);
313 } catch (Exception e) {
314 Assert.assertTrue(e instanceof UnprocessableEntityException);
320 public void test_checkRouterInfoFormat_useOwnUpstreamRangeMatches() {
321 RouteInfo routeInfo = new RouteInfo();
322 routeInfo.setServiceName("name");
323 routeInfo.setUrl("/url");
324 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88", "8080")});
325 routeInfo.setVisualRange("0");
326 routeInfo.setControl("0");
327 routeInfo.setStatus("0");
328 routeInfo.setUseOwnUpstream("3");
331 RouteUtil.checkRouterInfoFormat(routeInfo);
332 } catch (Exception e) {
333 Assert.assertTrue(e instanceof UnprocessableEntityException);
338 public void test_checkRouterInfoFormat_ip() {
339 RouteInfo routeInfo = new RouteInfo();
340 routeInfo.setServiceName("name");
341 routeInfo.setUrl("/url");
342 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88.6", "8080")});
343 routeInfo.setVisualRange("0");
344 routeInfo.setControl("0");
345 routeInfo.setStatus("0");
346 routeInfo.setUseOwnUpstream("1");
349 RouteUtil.checkRouterInfoFormat(routeInfo);
350 } catch (Exception e) {
351 Assert.assertTrue(e instanceof UnprocessableEntityException);
357 public void test_checkRouterInfoFormat_port() {
358 RouteInfo routeInfo = new RouteInfo();
359 routeInfo.setServiceName("name");
360 routeInfo.setUrl("/url");
361 routeInfo.setServers(new RouteServer[] {new RouteServer("10.74.148.88.6", "757577")});
362 routeInfo.setVisualRange("0");
363 routeInfo.setControl("0");
364 routeInfo.setStatus("0");
365 routeInfo.setUseOwnUpstream("1");
368 RouteUtil.checkRouterInfoFormat(routeInfo);
369 } catch (Exception e) {
370 Assert.assertTrue(e instanceof UnprocessableEntityException);