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;
18 import java.lang.reflect.InvocationHandler;
19 import java.lang.reflect.Method;
20 import java.util.ArrayList;
21 import java.util.Collections;
22 import java.util.Comparator;
23 import java.util.List;
25 import org.junit.Assert;
26 import org.junit.Before;
27 import org.junit.BeforeClass;
28 import org.junit.Ignore;
29 import org.junit.Test;
30 import org.junit.runner.RunWith;
31 import org.onap.msb.apiroute.api.IuiRouteInfo;
32 import org.onap.msb.apiroute.api.RouteServer;
33 import org.onap.msb.apiroute.api.exception.ExtendedNotFoundException;
34 import org.onap.msb.apiroute.wrapper.IuiRouteServiceWrapper;
35 import org.onap.msb.apiroute.wrapper.dao.RedisAccessWrapper;
36 import org.onap.msb.apiroute.wrapper.util.ConfigUtil;
37 import org.onap.msb.apiroute.wrapper.util.JedisUtil;
38 import org.onap.msb.apiroute.wrapper.util.RouteUtil;
39 import org.powermock.api.mockito.PowerMockito;
40 import org.powermock.core.classloader.annotations.PowerMockIgnore;
41 import org.powermock.core.classloader.annotations.PrepareForTest;
42 import org.powermock.modules.junit4.PowerMockRunner;
44 import redis.clients.jedis.JedisPool;
45 import redis.clients.jedis.JedisPoolConfig;
47 import com.fiftyonred.mock_jedis.MockJedisPool;
50 @RunWith(PowerMockRunner.class)
51 @PrepareForTest({JedisUtil.class,RouteUtil.class,RedisAccessWrapper.class})
52 @PowerMockIgnore( {"javax.management.*"})
53 public class IuiRouteServiceWrapperTest {
54 private static IuiRouteServiceWrapper iuiRouteServiceWrapper;
55 private static Comparator<IuiRouteInfo> iuiRouteComparator = null;
58 public static void setUpBeforeClass() throws Exception {
59 iuiRouteServiceWrapper=IuiRouteServiceWrapper.getInstance();
60 iuiRouteComparator = new Comparator<IuiRouteInfo>() {
62 public int compare(IuiRouteInfo o1, IuiRouteInfo o2) {
63 if (!o1.getServiceName().equals(o2.getServiceName()))
64 return (o1.getServiceName()).compareTo(o2.getServiceName());
69 PowerMockito.mockStatic(System.class);
70 PowerMockito.when(System.getenv("ROUTE_WAY")).thenReturn(null);
71 PowerMockito.when(System.getenv("ROUTE_WAY")).thenReturn("ip|domain");
72 ConfigUtil.getInstance().initRouteWay();
76 public void setUpBeforeTest() throws Exception {
77 final JedisPool mockJedisPool = new MockJedisPool(new JedisPoolConfig(), "localhost");
78 PowerMockito.mockStatic(JedisUtil.class);
79 JedisUtil jedisUtil=PowerMockito.mock(JedisUtil.class);
80 PowerMockito.when(jedisUtil.borrowJedisInstance()).thenReturn(mockJedisPool.getResource());
82 PowerMockito.replace(PowerMockito.method(RedisAccessWrapper.class, "filterKeys")).with(new InvocationHandler() {
84 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
85 return mockJedisPool.getResource().keys((String) args[0]);
92 public void test_getIuiRouteInstance_not_exist(){
94 iuiRouteServiceWrapper.getIuiRouteInstance("testForJunit","","","ip");
95 Assert.fail("should not process to here.");
98 Assert.assertTrue(e instanceof ExtendedNotFoundException);
105 public void test_getIuiRouteInstance(){
107 IuiRouteInfo iuirouteInfo = buildIuiRouteInfo();
109 iuiRouteServiceWrapper.saveIuiRouteInstance4Rest(iuirouteInfo, "ip");
110 IuiRouteInfo dbIuiRouteInfo=iuiRouteServiceWrapper.getIuiRouteInstance("testiui", "", "", "ip");
111 Assert.assertEquals(iuirouteInfo,dbIuiRouteInfo );
112 } catch (Exception e) {
113 Assert.fail("throw exception means error occured!" + e.getMessage());
119 public void test_getAllIuiRouteInstances(){
120 IuiRouteInfo iuirouteInfo = buildIuiRouteInfo();
121 IuiRouteInfo iuirouteInfo2 = buildIuiRouteInfo2();
122 List<IuiRouteInfo> expected = new ArrayList<>();
123 expected.add(iuirouteInfo);
124 expected.add(iuirouteInfo2);
125 Collections.sort(expected, iuiRouteComparator);
128 iuiRouteServiceWrapper.saveIuiRouteInstance4Rest(iuirouteInfo, "ip");
129 iuiRouteServiceWrapper.saveIuiRouteInstance4Rest(iuirouteInfo2, "ip");
133 PowerMockito.mockStatic(RouteUtil.class);
134 PowerMockito.when(RouteUtil.getMutiRedisKey(RouteUtil.IUIROUTE, "ip")).thenReturn("msb:routing:iui:*");
135 List<IuiRouteInfo> iuiRouterList=iuiRouteServiceWrapper.getAllIuiRouteInstances("ip");
136 Collections.sort(iuiRouterList, iuiRouteComparator);
138 Assert.assertEquals(expected,iuiRouterList);
140 } catch (Exception e) {
141 Assert.fail("throw exception means error occured!" + e.getMessage());
147 public void test_updateIuiRouteStatus(){
148 IuiRouteInfo iuirouteInfo = buildIuiRouteInfo();
150 iuiRouteServiceWrapper.saveIuiRouteInstance4Rest(iuirouteInfo, "ip");
151 IuiRouteInfo dbIuirouteInfo=iuiRouteServiceWrapper.getIuiRouteInstance("testiui", "", "", "ip");
152 Assert.assertEquals("1",dbIuirouteInfo.getStatus() );
153 iuiRouteServiceWrapper.updateIuiRouteStatus("testiui","","","0", "ip");
154 dbIuirouteInfo=iuiRouteServiceWrapper.getIuiRouteInstance("testiui", "", "", "ip");
155 Assert.assertEquals("0",dbIuirouteInfo.getStatus() );
156 } catch (Exception e) {
157 Assert.fail("throw exception means error occured!" + e.getMessage());
165 public void test_deleteIuiRoute(){
166 IuiRouteInfo iuirouteInfo2 = buildIuiRouteInfo2();
168 iuiRouteServiceWrapper.saveIuiRouteInstance4Rest(iuirouteInfo2, "ip");
169 IuiRouteInfo dbIuirouteInfo=iuiRouteServiceWrapper.getIuiRouteInstance("testiui2","","","ip");
170 Assert.assertNotNull(dbIuirouteInfo);
172 } catch (Exception e) {
173 Assert.fail("throw exception means error occured!" + e.getMessage());
176 iuiRouteServiceWrapper.deleteIuiRoute("testiui2","","","ip");
177 iuiRouteServiceWrapper.getIuiRouteInstance("testiui2","","","ip");
180 Assert.assertTrue(e instanceof ExtendedNotFoundException);
185 private IuiRouteInfo buildIuiRouteInfo(){
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 RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.88","8080")};
194 iuirouteInfo.setServers(servers);
198 private IuiRouteInfo buildIuiRouteInfo2(){
199 IuiRouteInfo iuirouteInfo = new IuiRouteInfo();
200 iuirouteInfo.setServiceName("testiui2");
201 iuirouteInfo.setStatus("1");
202 iuirouteInfo.setUrl("/iui/testiui");
203 iuirouteInfo.setUseOwnUpstream("0");
204 iuirouteInfo.setVisualRange("1");
205 iuirouteInfo.setEnable_ssl(true);
206 RouteServer[] servers = new RouteServer[]{new RouteServer("10.74.148.89","8080")};
207 iuirouteInfo.setServers(servers);