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.ArrayList;
17 import java.util.HashMap;
18 import java.util.HashSet;
19 import java.util.List;
23 import org.junit.Assert;
24 import org.junit.Test;
25 import org.junit.runner.RunWith;
26 import org.onap.msb.apiroute.api.MicroServiceFullInfo;
27 import org.onap.msb.apiroute.api.Node;
28 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ImmutableService;
29 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ImmutableServiceHealth;
30 import org.onap.msb.apiroute.wrapper.consulextend.model.health.Service;
31 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ServiceHealth;
32 import org.onap.msb.apiroute.wrapper.util.ConfigUtil;
33 import org.onap.msb.apiroute.wrapper.util.ServiceFilter;
34 import org.powermock.api.mockito.PowerMockito;
35 import org.powermock.core.classloader.annotations.PrepareForTest;
36 import org.powermock.modules.junit4.PowerMockRunner;
38 import com.orbitz.consul.model.health.ImmutableNode;
40 @RunWith(PowerMockRunner.class)
41 @PrepareForTest({ConfigUtil.class})
42 public class ServiceFilterTest {
47 public void test_isNeedNotifyByNameSpace() {
49 PowerMockito.mockStatic(System.class);
51 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("all");
52 ConfigUtil.getInstance().initRouteNameSpaceMatches();
53 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test")); // namespaceMatches:all
55 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("default");
56 ConfigUtil.getInstance().initRouteNameSpaceMatches();
57 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test"));// namespaceMatches:default
58 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace(""));// namespaceMatches:default
59 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("default"));// namespaceMatches:default
62 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("!default");
63 ConfigUtil.getInstance().initRouteNameSpaceMatches();
64 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test"));// namespaceMatches:!default
65 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace(""));// namespaceMatches:!default
67 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("ns|ns2");
68 ConfigUtil.getInstance().initRouteNameSpaceMatches();
69 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns"));
70 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns2"));
71 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns3"));
72 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace(""));
75 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("!ns&!ns2");
76 ConfigUtil.getInstance().initRouteNameSpaceMatches();
77 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns"));
78 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns2"));
79 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns3"));
84 * @Test public void test_isNeedNotifyByVisualRange(){
86 * Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByVisualRange("0"));
87 * Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByVisualRange("1"));
88 * Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByVisualRange("0|1")); }
92 public void test_isNeedNotifyByProtocol() {
93 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByProtocol("HTTP"));
94 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByProtocol("UI"));
95 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByProtocol("REST"));
96 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByProtocol("TCP"));
100 public void test_isNeedNotifyByNetwork_plane_typeMatches() {
102 PowerMockito.mockStatic(System.class);
103 PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("network_plane_type:network");
104 ConfigUtil.getInstance().initRouteLabelsMatches();
105 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net"));
106 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("network"));
108 PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("network_plane_type:net1|net2");
109 ConfigUtil.getInstance().initRouteLabelsMatches();
110 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net"));
111 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net1"));
112 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net2"));
117 public void test_isNeedNotifyByRouteLabels() {
118 Map<String, String> labelMap = new HashMap<String, String>();
119 labelMap.put("lab1", "val1");
121 PowerMockito.mockStatic(System.class);
122 PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val,visualRange:1");
123 ConfigUtil.getInstance().initRouteLabelsMatches();
124 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByRouteLabels(labelMap));
126 PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val1");
127 ConfigUtil.getInstance().initRouteLabelsMatches();
128 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByRouteLabels(labelMap));
133 public void test_isFilterService() {
134 PowerMockito.mockStatic(System.class);
135 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("ns1");
136 ConfigUtil.getInstance().initRouteNameSpaceMatches();
138 PowerMockito.when(System.getenv("ROUTE_LABELS"))
139 .thenReturn("visualRange:0,network_plane_type:net,customLabel:custom|custom2");
140 ConfigUtil.getInstance().initRouteLabelsMatches();
142 List<String> tagList = new ArrayList<String>();
143 tagList.add("\"base\":{\"protocol\":\"REST\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
144 tagList.add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net\",\"customLabel\":\"custom\"}");
145 tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
146 Assert.assertTrue(ServiceFilter.getInstance().isFilterService(tagList));
149 tagList.add("\"base\":{\"protocol\":\"TCP\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
150 Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
153 tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
154 tagList.add("\"ns\":{\"namespace\":\"ns2\"}");
155 Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
158 tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
159 tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
160 tagList.add("\"labels\":{\"visualRange\":\"1\",\"network_plane_type\":\"net\",\"customLabel\":\"custom\"}");
161 Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
164 tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
165 tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
166 tagList.add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net2\",\"customLabel\":\"custom\"}");
167 Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
170 tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
171 tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
172 tagList.add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net\",\"customLabel\":\"custom3\"}");
173 Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
178 public void test_transMicroServiceInfoFromConsul() {
179 List<String> tagList = new ArrayList<String>();
180 tagList.add("\"base\":{\"protocol\":\"REST\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
181 tagList.add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net\",\"customLabel\":\"custom\"}");
182 tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
184 Service service = ImmutableService.builder().id("id").port(8686).address("10.74.165.246").service("msbtest")
185 .addAllTags(tagList).createIndex(0).modifyIndex(0).build();
186 ServiceHealth serviceHealth = ImmutableServiceHealth.builder().service(service)
187 .node(ImmutableNode.builder().node("server").address("192.168.1.98").build()).build();
188 List<ServiceHealth> serviceHealthList = new ArrayList<ServiceHealth>();
189 serviceHealthList.add(serviceHealth);
191 Map<String, MicroServiceFullInfo> serviceMap =
192 ServiceFilter.getInstance().transMicroServiceInfoFromConsul(serviceHealthList);
193 Assert.assertTrue(serviceMap.containsKey("v1"));
195 MicroServiceFullInfo microService = new MicroServiceFullInfo();
196 microService.setServiceName("msbtest");
197 microService.setVersion("v1");
198 microService.setUrl("/api/msbtest/v1");
199 microService.setProtocol("REST");
200 microService.setVisualRange("0");
201 microService.setNamespace("ns1");
203 Set<Node> nodes = new HashSet<Node>();
204 nodes.add(new Node("10.74.165.246", "8686"));
205 microService.setNodes(nodes);
209 Assert.assertEquals(microService, serviceMap.get("v1"));