1 package org.onap.msb.apiroute.wrapper;
3 import io.dropwizard.jetty.HttpConnectorFactory;
4 import io.dropwizard.server.SimpleServerFactory;
6 import java.lang.reflect.InvocationHandler;
7 import java.lang.reflect.Method;
9 import org.junit.Assert;
10 import org.junit.Before;
11 import org.junit.BeforeClass;
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14 import org.mockito.Mockito;
15 import org.mockito.invocation.InvocationOnMock;
16 import org.mockito.stubbing.Answer;
17 import org.onap.msb.apiroute.ApiRouteAppConfig;
18 import org.onap.msb.apiroute.api.ApiRouteInfo;
19 import org.onap.msb.apiroute.api.CustomRouteInfo;
20 import org.onap.msb.apiroute.api.DiscoverInfo;
21 import org.onap.msb.apiroute.api.IuiRouteInfo;
22 import org.onap.msb.apiroute.api.RouteServer;
23 import org.onap.msb.apiroute.wrapper.ApiRouteServiceWrapper;
24 import org.onap.msb.apiroute.wrapper.CustomRouteServiceWrapper;
25 import org.onap.msb.apiroute.wrapper.InitRouteServiceWrapper;
26 import org.onap.msb.apiroute.wrapper.IuiRouteServiceWrapper;
27 import org.onap.msb.apiroute.wrapper.consulextend.Consul;
28 import org.onap.msb.apiroute.wrapper.consulextend.async.ConsulResponseCallback;
29 import org.onap.msb.apiroute.wrapper.consulextend.util.Http;
30 import org.onap.msb.apiroute.wrapper.dao.RedisAccessWrapper;
31 import org.onap.msb.apiroute.wrapper.util.ConfigUtil;
32 import org.onap.msb.apiroute.wrapper.util.JedisUtil;
33 import org.powermock.api.mockito.PowerMockito;
34 import org.powermock.core.classloader.annotations.PowerMockIgnore;
35 import org.powermock.core.classloader.annotations.PrepareForTest;
36 import org.powermock.modules.junit4.PowerMockRunner;
38 import redis.clients.jedis.JedisPool;
39 import redis.clients.jedis.JedisPoolConfig;
41 import com.fasterxml.jackson.core.type.TypeReference;
42 import com.fiftyonred.mock_jedis.MockJedisPool;
44 @RunWith(PowerMockRunner.class)
45 @PrepareForTest({ JedisUtil.class, RedisAccessWrapper.class, ConfigUtil.class,
46 Http.class, InitRouteServiceWrapper.class })
47 @PowerMockIgnore({ "javax.management.*", "javax.net.ssl.*" })
48 public class InitRouteServiceWrapperTest {
49 private static InitRouteServiceWrapper initRouteServiceWrapper;
50 private static Consul consul;
52 @SuppressWarnings("unchecked")
54 public static void setUpBeforeClass() throws Exception {
55 initRouteServiceWrapper = InitRouteServiceWrapper.getInstance();
57 Http http = PowerMockito.mock(Http.class);
62 .asyncGet(Mockito.anyString(),
63 Mockito.any(TypeReference.class),
64 Mockito.any(ConsulResponseCallback.class));
69 .asyncGetDelayHandle(Mockito.anyString(),
70 Mockito.any(TypeReference.class),
71 Mockito.any(ConsulResponseCallback.class));
73 PowerMockito.spy(Http.class);
74 PowerMockito.when(Http.getInstance()).thenReturn(http);
76 consul = Consul.builder().withHostAndPort("127.0.0.1", 8500).build();
80 public void initReidsMock() throws Exception {
81 final JedisPool mockJedisPool = new MockJedisPool(
82 new JedisPoolConfig(), "localhost");
83 PowerMockito.mockStatic(JedisUtil.class);
84 JedisUtil jedisUtil = PowerMockito.mock(JedisUtil.class);
85 PowerMockito.when(jedisUtil.borrowJedisInstance()).thenReturn(
86 mockJedisPool.getResource());
89 PowerMockito.method(RedisAccessWrapper.class, "filterKeys"))
90 .with(new InvocationHandler() {
92 public Object invoke(Object proxy, Method method,
93 Object[] args) throws Throwable {
94 return mockJedisPool.getResource().keys(
101 public void test_startCheckRedisConnect() {
103 boolean ifRedisConnect = initRouteServiceWrapper
104 .startCheckRedisConnect();
105 Assert.assertEquals(true, ifRedisConnect);
107 } catch (Exception e) {
108 Assert.fail("throw exception means error occured!" + e.getMessage());
114 public void test_runConsulClientApp() {
116 DiscoverInfo discoverInfo = new DiscoverInfo();
117 discoverInfo.setEnabled(true);
118 discoverInfo.setIp("127.0.0.1");
119 discoverInfo.setPort(10081);
121 ApiRouteAppConfig configuration = new ApiRouteAppConfig();
122 configuration.setDiscoverInfo(discoverInfo);
124 PowerMockito.mockStatic(System.class);
125 PowerMockito.when(System.getenv("SDCLIENT_IP")).thenReturn("127.0.0.1");
126 ConfigUtil.getInstance().initDiscoverInfo(configuration);
129 initRouteServiceWrapper.runConsulClientApp();
131 ApiRouteInfo discoverApiService = new ApiRouteInfo();
132 discoverApiService.setServiceName("msdiscover");
133 discoverApiService.setUrl("/api/microservices/v1");
134 discoverApiService.setVersion("v1");
135 discoverApiService.setMetricsUrl("/admin/metrics");
136 discoverApiService.setApiJson("/api/microservices/v1/swagger.json");
137 discoverApiService.setHost("msb");
139 RouteServer[] servers = new RouteServer[1];
140 servers[0] = new RouteServer(discoverInfo.getIp(),
141 String.valueOf(discoverInfo.getPort()));
142 discoverApiService.setServers(servers);
144 ApiRouteInfo db_discoverApiService = ApiRouteServiceWrapper
145 .getInstance().getApiRouteInstance("msdiscover", "v1",
147 Assert.assertEquals(discoverApiService, db_discoverApiService);
149 IuiRouteInfo discoverIUIService = new IuiRouteInfo();
150 discoverIUIService.setServiceName("msdiscover");
151 discoverIUIService.setUrl("/iui/microservices");
152 discoverIUIService.setHost("msb");
153 discoverIUIService.setServers(servers);
157 IuiRouteServiceWrapper.getInstance().getIuiRouteInstance(
158 "msdiscover", "msb", "", "ip"));
160 } catch (Exception e) {
161 assert false : "throw exception means error occured!"
167 public void test_initRouteInfoFromJson() {
170 PowerMockito.mockStatic(System.class);
171 PowerMockito.when(System.getenv("dwApp_server_connector_port"))
173 initRouteServiceWrapper.initRouteInfoFromJson();
175 ApiRouteInfo apiroute = new ApiRouteInfo();
176 apiroute.setServiceName("microservices");
177 apiroute.setUrl("/api/microservices/v1");
178 apiroute.setVersion("v1");
179 apiroute.setMetricsUrl("/admin/metrics");
180 apiroute.setApiJson("/api/microservices/v1/swagger.json");
181 apiroute.setHost("msb");
182 apiroute.setControl("1");
183 apiroute.setStatus("1");
185 RouteServer[] servers = new RouteServer[1];
186 servers[0] = new RouteServer("127.0.0.1", "8068");
187 apiroute.setServers(servers);
189 ApiRouteInfo db_apiService = ApiRouteServiceWrapper
191 .getApiRouteInstance("microservices", "v1", "msb", "", "ip");
192 Assert.assertEquals(apiroute, db_apiService);
194 IuiRouteInfo iuiRoute = new IuiRouteInfo();
195 iuiRoute.setServiceName("microservices");
196 iuiRoute.setUrl("/iui/microservices");
197 iuiRoute.setHost("msb");
198 iuiRoute.setControl("1");
199 iuiRoute.setStatus("1");
200 iuiRoute.setServers(servers);
202 Assert.assertEquals(iuiRoute, IuiRouteServiceWrapper.getInstance()
203 .getIuiRouteInstance("microservices", "msb", "", "ip"));
205 CustomRouteInfo customRoute = new CustomRouteInfo();
206 customRoute.setServiceName("/custom");
207 customRoute.setUrl("/custom");
208 customRoute.setHost("msb");
209 customRoute.setControl("1");
210 customRoute.setStatus("1");
211 RouteServer[] servers2 = new RouteServer[1];
212 servers2[0] = new RouteServer("127.0.0.1", "8066");
213 customRoute.setServers(servers2);
215 Assert.assertEquals(customRoute,
216 CustomRouteServiceWrapper.getInstance()
217 .getCustomRouteInstance("/custom", "msb", "", "ip"));
219 } catch (Exception e) {
220 Assert.fail("throw exception means error occured!" + e.getMessage());
225 public void test_initMetricsConfig() {
226 ApiRouteAppConfig configuration = new ApiRouteAppConfig();
227 SimpleServerFactory simpleServerFactory = new SimpleServerFactory();
228 HttpConnectorFactory httpConnectorFactory = new HttpConnectorFactory();
229 httpConnectorFactory.setPort(8888);
230 simpleServerFactory.setConnector(httpConnectorFactory);
231 simpleServerFactory.setAdminContextPath("/admin");
233 configuration.setServerFactory(simpleServerFactory);
235 initRouteServiceWrapper.initMetricsConfig(configuration);
237 Assert.assertEquals("http://127.0.0.1:8888/admin/metrics", ConfigUtil
238 .getInstance().getMetricsUrl());