1 package org.onap.msb.apiroute.wrapper.service;
3 import com.fiftyonred.mock_jedis.MockJedisPool;
4 import org.junit.Before;
5 import org.junit.BeforeClass;
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;
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;
27 import static org.junit.Assert.*;
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;
36 public static void setUp() throws Exception{
37 iuiRouteService = IuiRouteService.getInstance();
38 iuiRouteComparator = new Comparator<IuiRouteInfo>() {
40 public int compare(IuiRouteInfo o1, IuiRouteInfo o2) {
41 if (!o1.getServiceName().equals(o2.getServiceName()))
42 return (o1.getServiceName()).compareTo(o2.getServiceName());
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());
54 PowerMockito.replace(PowerMockito.method(RedisAccessWrapper.class, "filterKeys")).with(new InvocationHandler() {
56 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
57 return mockJedisPool.getResource().keys((String) args[0]);
62 public void testGetIuiRouteInstance_key_not_exist(){
64 assertNull(iuiRouteService.getIuiRouteInstance("msb:routing:iui:notexistservice:v1"));
65 } catch (Exception e) {
66 assert false:"throw exception means error occured!"+e.getMessage();
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);
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();
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);
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();
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);
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();
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);
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();
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")});
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")});
170 iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
171 iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo2,"msb:routing:iui:testiui2");
173 List<IuiRouteInfo> expected = new ArrayList<>();
174 expected.add(iuirouteInfo);
175 expected.add(iuirouteInfo2);
176 Collections.sort(expected, iuiRouteComparator);
178 List<IuiRouteInfo> result = iuiRouteService.getMultiIuiRouteInstances("msb:routing:iui:*");
180 Collections.sort(result, iuiRouteComparator);
181 assertEquals(expected, result);
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")});
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");
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());
211 @Test(expected = Exception.class)
212 public void testUpdateIuiRouteStatus2Redis_keyNotExist() throws Exception {
213 iuiRouteService.updateIuiRouteStatus2Redis("msb:routing:iui:notexistservice","0");
216 @Test(expected = Exception.class)
217 public void testSaveIuiRouteService2Redis_null() throws Exception {
218 iuiRouteService.saveIuiRouteService2Redis(null,"msb:routing:iui:null");