Divide the MSB source codes into two repos
[msb/apigateway.git] / apiroute / apiroute-service / src / test / java / org / onap / msb / apiroute / wrapper / util / ServiceFilterTest.java
1 package org.onap.msb.apiroute.wrapper.util;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.HashSet;
6 import java.util.List;
7 import java.util.Map;
8 import java.util.Set;
9
10 import org.junit.Assert;
11 import org.junit.Test;
12 import org.junit.runner.RunWith;
13 import org.onap.msb.apiroute.api.MicroServiceFullInfo;
14 import org.onap.msb.apiroute.api.Node;
15 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ImmutableService;
16 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ImmutableServiceHealth;
17 import org.onap.msb.apiroute.wrapper.consulextend.model.health.Service;
18 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ServiceHealth;
19 import org.onap.msb.apiroute.wrapper.util.ConfigUtil;
20 import org.onap.msb.apiroute.wrapper.util.ServiceFilter;
21 import org.powermock.api.mockito.PowerMockito;
22 import org.powermock.core.classloader.annotations.PrepareForTest;
23 import org.powermock.modules.junit4.PowerMockRunner;
24
25 import com.orbitz.consul.model.health.ImmutableNode;
26
27 @RunWith(PowerMockRunner.class)
28 @PrepareForTest({ConfigUtil.class})
29 public class ServiceFilterTest {
30
31
32
33   @Test
34   public void test_isNeedNotifyByNameSpace() {
35
36     PowerMockito.mockStatic(System.class);
37
38     PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("all");
39     ConfigUtil.getInstance().initRouteNameSpaceMatches();
40     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test")); // namespaceMatches:all
41
42     PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("default");
43     ConfigUtil.getInstance().initRouteNameSpaceMatches();
44     Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test"));// namespaceMatches:default
45     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace(""));// namespaceMatches:default
46     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("default"));// namespaceMatches:default
47
48     
49     PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("!default");
50     ConfigUtil.getInstance().initRouteNameSpaceMatches();
51     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("test"));// namespaceMatches:!default
52     Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace(""));// namespaceMatches:!default
53
54     PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("ns|ns2");
55     ConfigUtil.getInstance().initRouteNameSpaceMatches();
56     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns"));
57     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns2"));
58     Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns3"));
59     Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace(""));
60
61
62     PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("!ns&!ns2");
63     ConfigUtil.getInstance().initRouteNameSpaceMatches();
64     Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns"));
65     Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns2"));
66     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNameSpace("ns3"));
67
68   }
69
70   /*
71    * @Test public void test_isNeedNotifyByVisualRange(){
72    * 
73    * Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByVisualRange("0"));
74    * Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByVisualRange("1"));
75    * Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByVisualRange("0|1")); }
76    */
77
78   @Test
79   public void test_isNeedNotifyByProtocol() {
80     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByProtocol("HTTP"));
81     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByProtocol("UI"));
82     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByProtocol("REST"));
83     Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByProtocol("TCP"));
84   }
85
86   @Test
87   public void test_isNeedNotifyByNetwork_plane_typeMatches() {
88
89     PowerMockito.mockStatic(System.class);
90     PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("network_plane_type:network");
91     ConfigUtil.getInstance().initRouteLabelsMatches();
92     Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net"));
93     Assert.assertTrue(ServiceFilter.getInstance()
94         .isNeedNotifyByNetwork_plane_typeMatches("network"));
95
96     PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("network_plane_type:net1|net2");
97     ConfigUtil.getInstance().initRouteLabelsMatches();
98     Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net"));
99     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net1"));
100     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByNetwork_plane_typeMatches("net2"));
101
102   }
103
104   @Test
105   public void test_isNeedNotifyByRouteLabels() {
106     Map<String, String> labelMap = new HashMap<String, String>();
107     labelMap.put("lab1", "val1");
108
109     PowerMockito.mockStatic(System.class);
110     PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val,visualRange:1");
111     ConfigUtil.getInstance().initRouteLabelsMatches();
112     Assert.assertFalse(ServiceFilter.getInstance().isNeedNotifyByRouteLabels(labelMap));
113
114     PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn("lab1:val1");
115     ConfigUtil.getInstance().initRouteLabelsMatches();
116     Assert.assertTrue(ServiceFilter.getInstance().isNeedNotifyByRouteLabels(labelMap));
117
118   }
119
120   @Test
121   public void test_isFilterService() {
122     PowerMockito.mockStatic(System.class);
123     PowerMockito.when(System.getenv("NAMESPACE")).thenReturn("ns1");
124     ConfigUtil.getInstance().initRouteNameSpaceMatches();
125
126     PowerMockito.when(System.getenv("ROUTE_LABELS")).thenReturn(
127         "visualRange:0,network_plane_type:net,customLabel:custom|custom2");
128     ConfigUtil.getInstance().initRouteLabelsMatches();
129
130     List<String> tagList = new ArrayList<String>();
131     tagList.add("\"base\":{\"protocol\":\"REST\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
132     tagList
133         .add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net\",\"customLabel\":\"custom\"}");
134     tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
135     Assert.assertTrue(ServiceFilter.getInstance().isFilterService(tagList));
136
137     tagList.clear();
138     tagList.add("\"base\":{\"protocol\":\"TCP\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
139     Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
140
141     tagList.clear();
142     tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
143     tagList.add("\"ns\":{\"namespace\":\"ns2\"}");
144     Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
145
146     tagList.clear();
147     tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
148     tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
149     tagList
150         .add("\"labels\":{\"visualRange\":\"1\",\"network_plane_type\":\"net\",\"customLabel\":\"custom\"}");
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\":\"ns1\"}");
156     tagList
157         .add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net2\",\"customLabel\":\"custom\"}");
158     Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
159
160     tagList.clear();
161     tagList.add("\"base\":{\"protocol\":\"UI\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
162     tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
163     tagList
164         .add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net\",\"customLabel\":\"custom3\"}");
165     Assert.assertFalse(ServiceFilter.getInstance().isFilterService(tagList));
166
167   }
168
169   @Test
170   public void test_transMicroServiceInfoFromConsul() {
171     List<String> tagList = new ArrayList<String>();
172     tagList.add("\"base\":{\"protocol\":\"REST\",\"version\":\"v1\",\"url\":\"/api/msbtest/v1\"}");
173     tagList
174         .add("\"labels\":{\"visualRange\":\"0\",\"network_plane_type\":\"net\",\"customLabel\":\"custom\"}");
175     tagList.add("\"ns\":{\"namespace\":\"ns1\"}");
176
177     Service service =
178         ImmutableService.builder().id("id").port(8686).address("10.74.165.246").service("msbtest")
179             .addAllTags(tagList).createIndex(0).modifyIndex(0).build();
180     ServiceHealth serviceHealth =
181         ImmutableServiceHealth.builder().service(service)
182             .node(ImmutableNode.builder().node("server").address("192.168.1.98").build()).build();
183     List<ServiceHealth> serviceHealthList = new ArrayList<ServiceHealth>();
184     serviceHealthList.add(serviceHealth);
185     
186     Map<String, MicroServiceFullInfo> serviceMap= ServiceFilter.getInstance().transMicroServiceInfoFromConsul(serviceHealthList);
187     Assert.assertTrue(serviceMap.containsKey("v1"));
188     
189     MicroServiceFullInfo microService=new MicroServiceFullInfo();
190     microService.setServiceName("msbtest");
191     microService.setVersion("v1");
192     microService.setUrl("/api/msbtest/v1");
193     microService.setProtocol("REST");
194     microService.setVisualRange("0");
195     microService.setNamespace("ns1");
196     
197     Set<Node> nodes=new HashSet<Node>();
198     nodes.add(new Node("10.74.165.246","8686"));
199     microService.setNodes(nodes);
200         
201         
202        
203     Assert.assertEquals(microService,serviceMap.get("v1"));
204     
205
206   }
207
208
209
210 }