57590147e1dd5fb08965d62166dde8d848084ba9
[msb/apigateway.git] / apiroute / apiroute-service / src / test / java / org / onap / msb / apiroute / wrapper / util / ServiceFilterTest.java
1 /*******************************************************************************
2  * Copyright 2016-2017 ZTE, Inc. and others.
3  * 
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
6  * 
7  * http://www.apache.org/licenses/LICENSE-2.0
8  * 
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
12  * the License.
13  ******************************************************************************/
14 package org.onap.msb.apiroute.wrapper.util;
15
16 import java.util.ArrayList;
17 import java.util.HashMap;
18 import java.util.HashSet;
19 import java.util.List;
20 import java.util.Map;
21 import java.util.Set;
22
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
38 import com.orbitz.consul.model.health.ImmutableNode;
39
40 @RunWith(PowerMockRunner.class)
41 @PrepareForTest({ConfigUtil.class})
42 public class ServiceFilterTest {
43
44
45
46     @Test
47     public void test_isNeedNotifyByNameSpace() {
48
49         PowerMockito.mockStatic(System.class);
50
51         PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("all");
52         ConfigUtil.getInstance().initRouteNameSpaceMatches();
53         Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test")); // namespaceMatches:all
54
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
60
61
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
66
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(""));
73
74
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"));
80
81     }
82
83     /*
84      * @Test public void test_isNeedNotifyByVisualRange(){
85      * 
86      * Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByVisualRange("0"));
87      * Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByVisualRange("1"));
88      * Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByVisualRange("0|1")); }
89      */
90
91     @Test
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"));
97     }
98
99     @Test
100     public void test_isNeedNotifyByNetwork_plane_typeMatches() {
101
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"));
107
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"));
113
114     }
115
116     @Test
117     public void test_isNeedNotifyByRouteLabels() {
118         Map<String, String> labelMap = new HashMap<String, String>();
119         labelMap.put("lab1", "val1");
120
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));
125
126         PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val1");
127         ConfigUtil.getInstance().initRouteLabelsMatches();
128         Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByRouteLabels(labelMap));
129
130     }
131
132     @Test
133     public void test_isFilterService() {
134         PowerMockito.mockStatic(System.class);
135         PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("ns1");
136         ConfigUtil.getInstance().initRouteNameSpaceMatches();
137
138         PowerMockito.when(System.getenv("ROUTE_LABELS"))
139                         .thenReturn("visualRange:0,network_plane_type:net,customLabel:custom|custom2");
140         ConfigUtil.getInstance().initRouteLabelsMatches();
141
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));
147
148         tagList.clear();
149         tagList.add("\"base\":{\"protocol\":\"TCP\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
150         Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
151
152         tagList.clear();
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));
156
157         tagList.clear();
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));
162
163         tagList.clear();
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));
168
169         tagList.clear();
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));
174
175     }
176
177     @Test
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\"}");
183
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);
190
191         Map<String, MicroServiceFullInfo> serviceMap =
192                         ServiceFilter.getInstance().transMicroServiceInfoFromConsul(serviceHealthList);
193         Assert.assertTrue(serviceMap.containsKey("v1"));
194
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");
202
203         Set<Node> nodes = new HashSet<Node>();
204         nodes.add(new Node("10.74.165.246", "8686"));
205         microService.setNodes(nodes);
206
207
208
209         Assert.assertEquals(microService, serviceMap.get("v1"));
210
211
212     }
213
214
215
216 }