1 /*******************************************************************************
2 * Copyright 2016-2017 ZTE, Inc. and others.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 ******************************************************************************/
16 package org.onap.msb.apiroute.wrapper.service;
18 import com.fiftyonred.mock_jedis.MockJedisPool;
19 import org.junit.Before;
20 import org.junit.BeforeClass;
21 import org.junit.Test;
22 import org.junit.runner.RunWith;
23 import org.onap.msb.apiroute.api.IuiRouteInfo;
24 import org.onap.msb.apiroute.api.RouteServer;
25 import org.onap.msb.apiroute.wrapper.dao.RedisAccessWrapper;
26 import org.onap.msb.apiroute.wrapper.service.IuiRouteService;
27 import org.onap.msb.apiroute.wrapper.util.JedisUtil;
28 import org.powermock.api.mockito.PowerMockito;
29 import org.powermock.core.classloader.annotations.PowerMockIgnore;
30 import org.powermock.core.classloader.annotations.PrepareForTest;
31 import org.powermock.modules.junit4.PowerMockRunner;
32 import redis.clients.jedis.JedisPool;
33 import redis.clients.jedis.JedisPoolConfig;
35 import java.lang.reflect.InvocationHandler;
36 import java.lang.reflect.Method;
37 import java.util.ArrayList;
38 import java.util.Collections;
39 import java.util.Comparator;
40 import java.util.List;
42 import static org.junit.Assert.*;
44 @RunWith(PowerMockRunner.class)
45 @PrepareForTest({JedisUtil.class,RedisAccessWrapper.class})
46 @PowerMockIgnore( {"javax.management.*"})
47 public class IuiRouteServiceTest {
48 private static IuiRouteService iuiRouteService = null;
49 private static Comparator<IuiRouteInfo> iuiRouteComparator = null;
51 public static void setUp() throws Exception{
52 iuiRouteService = IuiRouteService.getInstance();
53 iuiRouteComparator = new Comparator<IuiRouteInfo>() {
55 public int compare(IuiRouteInfo o1, IuiRouteInfo o2) {
56 if (!o1.getServiceName().equals(o2.getServiceName()))
57 return (o1.getServiceName()).compareTo(o2.getServiceName());
63 public void setUpBeforeTest() throws Exception {
64 final JedisPool mockJedisPool = new MockJedisPool(new JedisPoolConfig(), "localhost");
65 PowerMockito.mockStatic(JedisUtil.class);
66 JedisUtil jedisUtil=PowerMockito.mock(JedisUtil.class);
67 PowerMockito.when(jedisUtil.borrowJedisInstance()).thenReturn(mockJedisPool.getResource());
69 PowerMockito.replace(PowerMockito.method(RedisAccessWrapper.class, "filterKeys")).with(new InvocationHandler() {
71 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
72 return mockJedisPool.getResource().keys((String) args[0]);
77 public void testGetIuiRouteInstance_key_not_exist(){
79 assertNull(iuiRouteService.getIuiRouteInstance("msb:routing:iui:notexistservice:v1"));
80 } catch (Exception e) {
81 assert false:"throw exception means error occured!"+e.getMessage();
86 public void testGetIuiRouteInstance_key_exist(){
87 IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
88 iuirouteInfo.setServiceName("testiui");
89 iuirouteInfo.setStatus("1");
90 iuirouteInfo.setUrl("/iui/testiui");
91 iuirouteInfo.setUseOwnUpstream("0");
92 iuirouteInfo.setVisualRange("0");
93 iuirouteInfo.setEnable_ssl(false);
94 RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.88","8080")};
95 iuirouteInfo.setServers(servers);
97 iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
98 assertEquals(iuirouteInfo, iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui"));
99 } catch (Exception e) {
100 assert false:"throw exception means error occured!"+e.getMessage();
105 public void testSaveIuiRouteService2Redis(){
106 IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
107 iuirouteInfo.setServiceName("testiui");
108 iuirouteInfo.setStatus("1");
109 iuirouteInfo.setUrl("/iui/testiui/v1");
110 iuirouteInfo.setUseOwnUpstream("0");
111 iuirouteInfo.setVisualRange("0");
112 iuirouteInfo.setEnable_ssl(true);
113 RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.88","8080")};
114 iuirouteInfo.setServers(servers);
116 iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
117 assertEquals(iuirouteInfo, iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui"));
118 } catch (Exception e) {
119 assert false:"throw exception means error occured!"+e.getMessage();
124 public void testDeleteIuiRouteService2Redis(){
125 IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
126 iuirouteInfo.setServiceName("testiui");
127 iuirouteInfo.setStatus("1");
128 iuirouteInfo.setUrl("/iui/testiui/v1");
129 iuirouteInfo.setUseOwnUpstream("0");
130 iuirouteInfo.setVisualRange("0");
131 iuirouteInfo.setEnable_ssl(false);
132 RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.88","8080")};
133 iuirouteInfo.setServers(servers);
135 iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
136 assertNotNull(iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui"));
137 iuiRouteService.deleteIuiRouteService2Redis("msb:routing:iui:testiui");
138 assertNull(iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui"));
139 } catch (Exception e) {
140 assert false:"throw exception means error occured!"+e.getMessage();
145 public void testUpdateIuiRouteStatus2Redis(){
146 IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
147 iuirouteInfo.setServiceName("testiui");
148 iuirouteInfo.setStatus("1");
149 iuirouteInfo.setUrl("/iui/testiui/v1");
150 iuirouteInfo.setUseOwnUpstream("0");
151 iuirouteInfo.setVisualRange("0");
152 iuirouteInfo.setEnable_ssl(true);
153 RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.88","8080")};
154 iuirouteInfo.setServers(servers);
156 iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
157 assertEquals("1", iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui").getStatus());
158 iuiRouteService.updateIuiRouteStatus2Redis("msb:routing:iui:testiui","0");
159 assertEquals("0", iuiRouteService.getIuiRouteInstance("msb:routing:iui:testiui").getStatus());
160 } catch (Exception e) {
161 assert false:"throw exception means error occured!"+e.getMessage();
166 public void testGetMultiIuiRouteInstances() throws Exception {
167 IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
168 iuirouteInfo.setServiceName("testiui");
169 iuirouteInfo.setStatus("1");
170 iuirouteInfo.setUrl("/iui/testiui");
171 iuirouteInfo.setUseOwnUpstream("0");
172 iuirouteInfo.setVisualRange("0");
173 iuirouteInfo.setEnable_ssl(false);
174 iuirouteInfo.setServers(new RouteServer[]{new RouteServer("10.74.148.88","8080")});
176 IuiRouteInfo iuirouteInfo2 = new IuiRouteInfo();
177 iuirouteInfo2.setServiceName("testiui2");
178 iuirouteInfo2.setStatus("0");
179 iuirouteInfo2.setUrl("/iui/testiui2");
180 iuirouteInfo2.setUseOwnUpstream("0");
181 iuirouteInfo2.setVisualRange("0");;
182 iuirouteInfo.setEnable_ssl(true);
183 iuirouteInfo2.setServers(new RouteServer[]{new RouteServer("10.74.148.88","8088")});
185 iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
186 iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo2,"msb:routing:iui:testiui2");
188 List<IuiRouteInfo> expected = new ArrayList<>();
189 expected.add(iuirouteInfo);
190 expected.add(iuirouteInfo2);
191 Collections.sort(expected, iuiRouteComparator);
193 List<IuiRouteInfo> result = iuiRouteService.getMultiIuiRouteInstances("msb:routing:iui:*");
195 Collections.sort(result, iuiRouteComparator);
196 assertEquals(expected, result);
200 public void testDeleteMultiIuiRouteInstances() throws Exception {
201 IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
202 iuirouteInfo.setServiceName("testiui");
203 iuirouteInfo.setStatus("1");
204 iuirouteInfo.setUrl("/iui/testiui");
205 iuirouteInfo.setUseOwnUpstream("0");
206 iuirouteInfo.setVisualRange("0");
207 iuirouteInfo.setEnable_ssl(false);
208 iuirouteInfo.setServers(new RouteServer[]{new RouteServer("10.74.148.88","8080")});
210 IuiRouteInfo iuirouteInfo2 = new IuiRouteInfo();
211 iuirouteInfo2.setServiceName("testiui2");
212 iuirouteInfo2.setStatus("0");
213 iuirouteInfo2.setUrl("/iui/testiui2");
214 iuirouteInfo2.setUseOwnUpstream("0");
215 iuirouteInfo2.setVisualRange("0");;
216 iuirouteInfo.setEnable_ssl(true);
217 iuirouteInfo2.setServers(new RouteServer[]{new RouteServer("10.74.148.88","8088")});
218 iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo,"msb:routing:iui:testiui");
219 iuiRouteService.saveIuiRouteService2Redis(iuirouteInfo2,"msb:routing:iui:testiui2");
221 assertEquals(2,iuiRouteService.getMultiIuiRouteInstances("msb:routing:iui:*").size());
222 assertEquals(2,iuiRouteService.deleteMultiIuiRouteService2Redis("msb:routing:iui:*"));
223 assertEquals(0,iuiRouteService.getMultiIuiRouteInstances("msb:routing:iui:*").size());
226 @Test(expected = Exception.class)
227 public void testUpdateIuiRouteStatus2Redis_keyNotExist() throws Exception {
228 iuiRouteService.updateIuiRouteStatus2Redis("msb:routing:iui:notexistservice","0");
231 @Test(expected = Exception.class)
232 public void testSaveIuiRouteService2Redis_null() throws Exception {
233 iuiRouteService.saveIuiRouteService2Redis(null,"msb:routing:iui:null");