Divide the MSB source codes into two repos
[msb/apigateway.git] / apiroute / apiroute-service / src / test / java / org / onap / msb / apiroute / wrapper / service / IuiRouteServiceTest.java
1 package org.onap.msb.apiroute.wrapper.service;
2
3 import com.fiftyonred.mock_jedis.MockJedisPool;
4 import org.junit.Before;
5 import org.junit.BeforeClass;
6 import org.junit.Test;
7 import org.junit.runner.RunWith;
8 import org.onap.msb.apiroute.api.IuiRouteInfo;
9 import org.onap.msb.apiroute.api.RouteServer;
10 import org.onap.msb.apiroute.wrapper.dao.RedisAccessWrapper;
11 import org.onap.msb.apiroute.wrapper.service.IuiRouteService;
12 import org.onap.msb.apiroute.wrapper.util.JedisUtil;
13 import org.powermock.api.mockito.PowerMockito;
14 import org.powermock.core.classloader.annotations.PowerMockIgnore;
15 import org.powermock.core.classloader.annotations.PrepareForTest;
16 import org.powermock.modules.junit4.PowerMockRunner;
17 import redis.clients.jedis.JedisPool;
18 import redis.clients.jedis.JedisPoolConfig;
19
20 import java.lang.reflect.InvocationHandler;
21 import java.lang.reflect.Method;
22 import java.util.ArrayList;
23 import java.util.Collections;
24 import java.util.Comparator;
25 import java.util.List;
26
27 import static org.junit.Assert.*;
28
29 @RunWith(PowerMockRunner.class)
30 @PrepareForTest({JedisUtil.class,RedisAccessWrapper.class})
31 @PowerMockIgnore( {"javax.management.*"})
32 public class IuiRouteServiceTest {
33     private static IuiRouteService iuiRouteService = null;
34     private static Comparator<IuiRouteInfo> iuiRouteComparator = null;
35     @BeforeClass
36     public static void setUp() throws Exception{
37         iuiRouteService = IuiRouteService.getInstance();
38         iuiRouteComparator = new Comparator<IuiRouteInfo>() {
39             @Override
40             public int compare(IuiRouteInfo o1, IuiRouteInfo o2) {
41                 if (!o1.getServiceName().equals(o2.getServiceName()))
42                     return (o1.getServiceName()).compareTo(o2.getServiceName());
43                 return 0;
44             }
45         };
46     }
47     @Before
48     public void setUpBeforeTest() throws Exception {
49         final JedisPool mockJedisPool = new MockJedisPool(new JedisPoolConfig(), "localhost");
50         PowerMockito.mockStatic(JedisUtil.class);
51         JedisUtil jedisUtil=PowerMockito.mock(JedisUtil.class);
52         PowerMockito.when(jedisUtil.borrowJedisInstance()).thenReturn(mockJedisPool.getResource());
53
54         PowerMockito.replace(PowerMockito.method(RedisAccessWrapper.class, "filterKeys")).with(new InvocationHandler() {
55             @Override
56             public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
57                 return mockJedisPool.getResource().keys((String) args[0]);
58             }
59         });
60     }
61     @Test
62     public void testGetIuiRouteInstance_key_not_exist(){
63         try {
64             assertNull(iuiRouteService.getIuiRouteInstance("msb:routing:iui:notexistservice:v1"));
65         } catch (Exception e) {
66             assert false:"throw exception means error occured!"+e.getMessage();
67         }
68     }
69
70     @Test
71     public void testGetIuiRouteInstance_key_exist(){
72         IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
73         iuirouteInfo.setServiceName("testiui");
74         iuirouteInfo.setStatus("1");
75         iuirouteInfo.setUrl("/iui/testiui");
76         iuirouteInfo.setUseOwnUpstream("0");
77         iuirouteInfo.setVisualRange("0");
78         iuirouteInfo.setEnable_ssl(false);
79         RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.88","8080")};
80         iuirouteInfo.setServers(servers);
81         try {
82             iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
83             assertEquals(iuirouteInfo, iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui"));
84         } catch (Exception e) {
85             assert false:"throw exception means error occured!"+e.getMessage();
86         }
87     }
88
89     @Test
90     public void testSaveIuiRouteService2Redis(){
91         IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
92         iuirouteInfo.setServiceName("testiui");
93         iuirouteInfo.setStatus("1");
94         iuirouteInfo.setUrl("/iui/testiui/v1");
95         iuirouteInfo.setUseOwnUpstream("0");
96         iuirouteInfo.setVisualRange("0");
97         iuirouteInfo.setEnable_ssl(true);
98         RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.88","8080")};
99         iuirouteInfo.setServers(servers);
100         try {
101             iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
102             assertEquals(iuirouteInfo, iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui"));
103         } catch (Exception e) {
104             assert false:"throw exception means error occured!"+e.getMessage();
105         }
106     }
107
108     @Test
109     public void testDeleteIuiRouteService2Redis(){
110         IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
111         iuirouteInfo.setServiceName("testiui");
112         iuirouteInfo.setStatus("1");
113         iuirouteInfo.setUrl("/iui/testiui/v1");
114         iuirouteInfo.setUseOwnUpstream("0");
115         iuirouteInfo.setVisualRange("0");
116         iuirouteInfo.setEnable_ssl(false);
117         RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.88","8080")};
118         iuirouteInfo.setServers(servers);
119         try {
120             iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
121             assertNotNull(iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui"));
122             iuiRouteService.deleteIuiRouteService2Redis("msb:routing:iui:testiui");
123             assertNull(iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui"));
124         } catch (Exception e) {
125             assert false:"throw exception means error occured!"+e.getMessage();
126         }
127     }
128
129     @Test
130     public void testUpdateIuiRouteStatus2Redis(){
131         IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
132         iuirouteInfo.setServiceName("testiui");
133         iuirouteInfo.setStatus("1");
134         iuirouteInfo.setUrl("/iui/testiui/v1");
135         iuirouteInfo.setUseOwnUpstream("0");
136         iuirouteInfo.setVisualRange("0");
137         iuirouteInfo.setEnable_ssl(true);
138         RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.88","8080")};
139         iuirouteInfo.setServers(servers);
140         try {
141             iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
142             assertEquals("1", iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui").getStatus());
143             iuiRouteService.updateIuiRouteStatus2Redis("msb:routing:iui:testiui","0");
144             assertEquals("0", iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui").getStatus());
145         } catch (Exception e) {
146             assert false:"throw exception means error occured!"+e.getMessage();
147         }
148     }
149
150     @Test
151     public void testGetMultiIuiRouteInstances() throws Exception {
152         IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
153         iuirouteInfo.setServiceName("testiui");
154         iuirouteInfo.setStatus("1");
155         iuirouteInfo.setUrl("/iui/testiui");
156         iuirouteInfo.setUseOwnUpstream("0");
157         iuirouteInfo.setVisualRange("0");
158         iuirouteInfo.setEnable_ssl(false);
159         iuirouteInfo.setServers(new RouteServer[]{new RouteServer("10.74.148.88","8080")});
160
161         IuiRouteInfo iuirouteInfo2 = new IuiRouteInfo();
162         iuirouteInfo2.setServiceName("testiui2");
163         iuirouteInfo2.setStatus("0");
164         iuirouteInfo2.setUrl("/iui/testiui2");
165         iuirouteInfo2.setUseOwnUpstream("0");
166         iuirouteInfo2.setVisualRange("0");;
167         iuirouteInfo.setEnable_ssl(true);
168         iuirouteInfo2.setServers(new RouteServer[]{new RouteServer("10.74.148.88","8088")});
169
170         iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
171         iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo2,"msb:routing:iui:testiui2");
172
173         List<IuiRouteInfo> expected = new ArrayList<>();
174         expected.add(iuirouteInfo);
175         expected.add(iuirouteInfo2);
176         Collections.sort(expected, iuiRouteComparator);
177
178         List<IuiRouteInfo> result = iuiRouteService.getMultiIuiRouteInstances("msb:routing:iui:*");
179
180         Collections.sort(result, iuiRouteComparator);
181         assertEquals(expected, result);
182     }
183
184     @Test
185     public void testDeleteMultiIuiRouteInstances() throws Exception {
186         IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
187         iuirouteInfo.setServiceName("testiui");
188         iuirouteInfo.setStatus("1");
189         iuirouteInfo.setUrl("/iui/testiui");
190         iuirouteInfo.setUseOwnUpstream("0");
191         iuirouteInfo.setVisualRange("0");
192         iuirouteInfo.setEnable_ssl(false);
193         iuirouteInfo.setServers(new RouteServer[]{new RouteServer("10.74.148.88","8080")});
194
195         IuiRouteInfo iuirouteInfo2 = new IuiRouteInfo();
196         iuirouteInfo2.setServiceName("testiui2");
197         iuirouteInfo2.setStatus("0");
198         iuirouteInfo2.setUrl("/iui/testiui2");
199         iuirouteInfo2.setUseOwnUpstream("0");
200         iuirouteInfo2.setVisualRange("0");;
201         iuirouteInfo.setEnable_ssl(true);
202         iuirouteInfo2.setServers(new RouteServer[]{new RouteServer("10.74.148.88","8088")});
203         iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
204         iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo2,"msb:routing:iui:testiui2");
205
206         assertEquals(2,iuiRouteService.getMultiIuiRouteInstances("msb:routing:iui:*").size());
207         assertEquals(2,iuiRouteService.deleteMultiIuiRouteService2Redis("msb:routing:iui:*"));
208         assertEquals(0,iuiRouteService.getMultiIuiRouteInstances("msb:routing:iui:*").size());
209     }
210
211     @Test(expected = Exception.class)
212     public void testUpdateIuiRouteStatus2Redis_keyNotExist() throws Exception {
213         iuiRouteService.updateIuiRouteStatus2Redis("msb:routing:iui:notexistservice","0");
214     }
215
216     @Test(expected = Exception.class)
217     public void testSaveIuiRouteService2Redis_null() throws Exception {
218         iuiRouteService.saveIuiRouteService2Redis(null,"msb:routing:iui:null");
219     }
220
221 }