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;
37 import org.powermock.core.classloader.annotations.PowerMockIgnore;
38 import com.orbitz.consul.model.health.ImmutableNode;
40 @RunWith(PowerMockRunner.class)
41 @PrepareForTest({ConfigUtil.class})
42 @PowerMockIgnore("jdk.internal.reflect.*")
43 public class ServiceFilterTest {
48 public void test_isNeedNotifyByNameSpace() {
50 PowerMockito.mockStatic(System.class);
52 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("all");
53 ConfigUtil.getInstance().initRouteNameSpaceMatches();
54 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test")); // namespaceMatches:all
56 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("default");
57 ConfigUtil.getInstance().initRouteNameSpaceMatches();
58 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test"));// namespaceMatches:default
59 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace(""));// namespaceMatches:default
60 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("default"));// namespaceMatches:default
63 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("!default");
64 ConfigUtil.getInstance().initRouteNameSpaceMatches();
65 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test"));// namespaceMatches:!default
66 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace(""));// namespaceMatches:!default
68 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("ns|ns2");
69 ConfigUtil.getInstance().initRouteNameSpaceMatches();
70 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns"));
71 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns2"));
72 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns3"));
73 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace(""));
76 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("!ns&!ns2");
77 ConfigUtil.getInstance().initRouteNameSpaceMatches();
78 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns"));
79 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns2"));
80 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns3"));
85 * @Test public void test_isNeedNotifyByVisualRange(){
87 * Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByVisualRange("0"));
88 * Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByVisualRange("1"));
89 * Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByVisualRange("0|1")); }
93 public void test_isNeedNotifyByProtocol() {
94 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByProtocol("HTTP"));
95 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByProtocol("UI"));
96 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByProtocol("REST"));
97 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByProtocol("TCP"));
101 public void test_isNeedNotifyByNetwork_plane_typeMatches() {
103 PowerMockito.mockStatic(System.class);
104 PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("network_plane_type:network");
105 ConfigUtil.getInstance().initRouteLabelsMatches();
106 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net"));
107 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("network"));
109 PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("network_plane_type:net1|net2");
110 ConfigUtil.getInstance().initRouteLabelsMatches();
111 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net"));
112 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net1"));
113 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net2"));
118 public void test_isNeedNotifyByRouteLabels() {
119 Map<String, String> labelMap = new HashMap<String, String>();
120 labelMap.put("lab1", "val1");
122 PowerMockito.mockStatic(System.class);
123 PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val,visualRange:1");
124 ConfigUtil.getInstance().initRouteLabelsMatches();
125 Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByRouteLabels(labelMap));
127 PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val1");
128 ConfigUtil.getInstance().initRouteLabelsMatches();
129 Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByRouteLabels(labelMap));
134 public void test_isFilterService() {
135 PowerMockito.mockStatic(System.class);
136 PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("ns1");
137 ConfigUtil.getInstance().initRouteNameSpaceMatches();
139 PowerMockito.when(System.getenv("ROUTE_LABELS"))
140 .thenReturn("visualRange:0,network_plane_type:net,customLabel:custom|custom2");
141 ConfigUtil.getInstance().initRouteLabelsMatches();
143 List<String> tagList = new ArrayList<String>();
144 tagList.add("\"base\":{\"protocol\":\"REST\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
145 tagList.add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net\",\"customLabel\":\"custom\"}");
146 tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
147 Assert.assertTrue(ServiceFilter.getInstance().isFilterService(tagList));
150 tagList.add("\"base\":{\"protocol\":\"TCP\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
151 Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
154 tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
155 tagList.add("\"ns\":{\"namespace\":\"ns2\"}");
156 Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
159 tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
160 tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
161 tagList.add("\"labels\":{\"visualRange\":\"1\",\"network_plane_type\":\"net\",\"customLabel\":\"custom\"}");
162 Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
165 tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
166 tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
167 tagList.add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net2\",\"customLabel\":\"custom\"}");
168 Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
171 tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
172 tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
173 tagList.add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net\",\"customLabel\":\"custom3\"}");
174 Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
179 public void test_transMicroServiceInfoFromConsul() {
180 List<String> tagList = new ArrayList<String>();
181 tagList.add("\"base\":{\"protocol\":\"REST\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
182 tagList.add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net\",\"customLabel\":\"custom\"}");
183 tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
185 Service service = ImmutableService.builder().id("id").port(8686).address("10.74.165.246").service("msbtest")
186 .addAllTags(tagList).createIndex(0).modifyIndex(0).build();
187 ServiceHealth serviceHealth = ImmutableServiceHealth.builder().service(service)
188 .node(ImmutableNode.builder().node("server").address("192.168.1.98").build()).build();
189 List<ServiceHealth> serviceHealthList = new ArrayList<ServiceHealth>();
190 serviceHealthList.add(serviceHealth);
192 Map<String, MicroServiceFullInfo> serviceMap =
193 ServiceFilter.getInstance().transMicroServiceInfoFromConsul(serviceHealthList);
194 Assert.assertTrue(serviceMap.containsKey("v1"));
196 MicroServiceFullInfo microService = new MicroServiceFullInfo();
197 microService.setServiceName("msbtest");
198 microService.setVersion("v1");
199 microService.setUrl("/api/msbtest/v1");
200 microService.setProtocol("REST");
201 microService.setVisualRange("0");
202 microService.setNamespace("ns1");
204 Set<Node> nodes = new HashSet<Node>();
205 nodes.add(new Node("10.74.165.246", "8686"));
206 microService.setNodes(nodes);
210 Assert.assertEquals(microService, serviceMap.get("v1"));