fix powermock issue
[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 import org.powermock.core.classloader.annotations.PowerMockIgnore;
38 import com.orbitz.consul.model.health.ImmutableNode;
39
40 @RunWith(PowerMockRunner.class)
41 @PrepareForTest({ConfigUtil.class})
42 @PowerMockIgnore("jdk.internal.reflect.*")
43 public class ServiceFilterTest {
44
45
46
47     @Test
48     public void test_isNeedNotifyByNameSpace() {
49
50         PowerMockito.mockStatic(System.class);
51
52         PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("all");
53         ConfigUtil.getInstance().initRouteNameSpaceMatches();
54         Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test")); // namespaceMatches:all
55
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
61
62
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
67
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(""));
74
75
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"));
81
82     }
83
84     /*
85      * @Test public void test_isNeedNotifyByVisualRange(){
86      * 
87      * Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByVisualRange("0"));
88      * Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByVisualRange("1"));
89      * Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByVisualRange("0|1")); }
90      */
91
92     @Test
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"));
98     }
99
100     @Test
101     public void test_isNeedNotifyByNetwork_plane_typeMatches() {
102
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"));
108
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"));
114
115     }
116
117     @Test
118     public void test_isNeedNotifyByRouteLabels() {
119         Map<String, String> labelMap = new HashMap<String, String>();
120         labelMap.put("lab1", "val1");
121
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));
126
127         PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val1");
128         ConfigUtil.getInstance().initRouteLabelsMatches();
129         Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByRouteLabels(labelMap));
130
131     }
132
133     @Test
134     public void test_isFilterService() {
135         PowerMockito.mockStatic(System.class);
136         PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("ns1");
137         ConfigUtil.getInstance().initRouteNameSpaceMatches();
138
139         PowerMockito.when(System.getenv("ROUTE_LABELS"))
140                         .thenReturn("visualRange:0,network_plane_type:net,customLabel:custom|custom2");
141         ConfigUtil.getInstance().initRouteLabelsMatches();
142
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));
148
149         tagList.clear();
150         tagList.add("\"base\":{\"protocol\":\"TCP\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
151         Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
152
153         tagList.clear();
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));
157
158         tagList.clear();
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));
163
164         tagList.clear();
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));
169
170         tagList.clear();
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));
175
176     }
177
178     @Test
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\"}");
184
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);
191
192         Map<String, MicroServiceFullInfo> serviceMap =
193                         ServiceFilter.getInstance().transMicroServiceInfoFromConsul(serviceHealthList);
194         Assert.assertTrue(serviceMap.containsKey("v1"));
195
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");
203
204         Set<Node> nodes = new HashSet<Node>();
205         nodes.add(new Node("10.74.165.246", "8686"));
206         microService.setNodes(nodes);
207
208
209
210         Assert.assertEquals(microService, serviceMap.get("v1"));
211
212
213     }
214
215
216
217 }