1 package org.onap.msb.apiroute.wrapper;
3 import java.lang.reflect.InvocationHandler;
4 import java.lang.reflect.Method;
5 import java.util.ArrayList;
6 import java.util.Collections;
7 import java.util.Comparator;
8 import java.util.HashSet;
12 import org.junit.Assert;
13 import org.junit.Before;
14 import org.junit.BeforeClass;
15 import org.junit.Test;
16 import org.junit.runner.RunWith;
17 import org.onap.msb.apiroute.api.MicroServiceFullInfo;
18 import org.onap.msb.apiroute.api.Node;
19 import org.onap.msb.apiroute.api.exception.ExtendedNotFoundException;
20 import org.onap.msb.apiroute.api.exception.UnprocessableEntityException;
21 import org.onap.msb.apiroute.wrapper.MicroServiceWrapper;
22 import org.onap.msb.apiroute.wrapper.dao.RedisAccessWrapper;
23 import org.onap.msb.apiroute.wrapper.util.JedisUtil;
24 import org.powermock.api.mockito.PowerMockito;
25 import org.powermock.core.classloader.annotations.PowerMockIgnore;
26 import org.powermock.core.classloader.annotations.PrepareForTest;
27 import org.powermock.modules.junit4.PowerMockRunner;
29 import redis.clients.jedis.JedisPool;
30 import redis.clients.jedis.JedisPoolConfig;
32 import com.fiftyonred.mock_jedis.MockJedisPool;
35 @RunWith(PowerMockRunner.class)
36 @PrepareForTest({JedisUtil.class,RedisAccessWrapper.class})
37 @PowerMockIgnore( {"javax.management.*"})
38 public class MicroServiceWrapperTest {
39 private static MicroServiceWrapper microServiceWrapper;
40 private static Comparator<MicroServiceFullInfo> microServiceComparator = null;
44 public static void setUpBeforeClass() throws Exception {
45 microServiceWrapper=MicroServiceWrapper.getInstance();
46 microServiceComparator = new Comparator<MicroServiceFullInfo>() {
48 public int compare(MicroServiceFullInfo o1, MicroServiceFullInfo o2) {
49 if (!o1.getServiceName().equals(o2.getServiceName()))
50 return (o1.getServiceName()).compareTo(o2.getServiceName());
57 public void setUpBeforeTest() throws Exception {
58 final JedisPool mockJedisPool = new MockJedisPool(new JedisPoolConfig(), "localhost");
59 PowerMockito.mockStatic(JedisUtil.class);
60 JedisUtil jedisUtil=PowerMockito.mock(JedisUtil.class);
61 PowerMockito.when(jedisUtil.borrowJedisInstance()).thenReturn(mockJedisPool.getResource());
63 PowerMockito.replace(PowerMockito.method(RedisAccessWrapper.class, "filterKeys")).with(new InvocationHandler() {
65 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
66 return mockJedisPool.getResource().keys((String) args[0]);
72 public void test_getMicroServiceFullInfo_not_exist(){
74 microServiceWrapper.getMicroServiceInstance("testForJunit","v1");
75 Assert.fail("should not process to here.");
78 Assert.assertTrue(e instanceof ExtendedNotFoundException);
85 public void test_getMicroServiceFullInfo(){
87 MicroServiceFullInfo microServiceFullInfo = buildMicroServiceFullInfo();
89 microServiceWrapper.saveMicroServiceInstance(microServiceFullInfo, false, "", "");
90 MicroServiceFullInfo dbMicroServiceFullInfo=microServiceWrapper.getMicroServiceInstance("testService", "v1");
91 Assert.assertEquals(microServiceFullInfo,dbMicroServiceFullInfo );
92 } catch (Exception e) {
93 assert false:"throw exception means error occured!"+e.getMessage();
99 public void test_getAllMicroServiceInstances(){
100 MicroServiceFullInfo microService = buildMicroServiceFullInfo();
101 MicroServiceFullInfo microService2 = buildMicroServiceFullInfo2();
102 List<MicroServiceFullInfo> expected = new ArrayList<>();
103 expected.add(microService);
104 expected.add(microService2);
105 Collections.sort(expected, microServiceComparator);
108 microServiceWrapper.saveMicroServiceInstance(microService, false, "", "");
109 microServiceWrapper.saveMicroServiceInstance(microService2, false, "", "");
111 List<MicroServiceFullInfo> microServiceList=microServiceWrapper.getAllMicroServiceInstances();
112 Collections.sort(microServiceList, microServiceComparator);
114 Assert.assertEquals(expected,microServiceList);
116 } catch (Exception e) {
117 Assert.fail("throw exception means error occured!" + e.getMessage());
123 public void test_updateMicroServiceStatus(){
124 MicroServiceFullInfo microService = buildMicroServiceFullInfo();
127 microServiceWrapper.saveMicroServiceInstance(microService, false, "", "");
128 MicroServiceFullInfo dbMicroServiceFullInfo=microServiceWrapper.getMicroServiceInstance("testService", "v1");
129 Assert.assertEquals("1",dbMicroServiceFullInfo.getStatus() );
130 microServiceWrapper.updateMicroServiceStatus("testService","v1","0");
131 dbMicroServiceFullInfo=microServiceWrapper.getMicroServiceInstance("testService", "v1");
132 Assert.assertEquals("0",dbMicroServiceFullInfo.getStatus() );
133 } catch (Exception e) {
134 Assert.fail("throw exception means error occured!" + e.getMessage());
142 public void test_deleteMicroService(){
143 MicroServiceFullInfo microService = buildMicroServiceFullInfo2();
145 microServiceWrapper.saveMicroServiceInstance(microService, false, "", "");
146 MicroServiceFullInfo dbMicroServiceFullInfo=microServiceWrapper.getMicroServiceInstance("testService2", "v1");
147 Assert.assertNotNull(dbMicroServiceFullInfo);
149 } catch (Exception e) {
150 Assert.fail("throw exception means error occured!" + e.getMessage());
153 microServiceWrapper.deleteMicroService("testService2","v1");
154 microServiceWrapper.getMicroServiceInstance("testService2", "v1");
157 Assert.assertTrue(e instanceof ExtendedNotFoundException);
162 public void test_deleteMicroServiceInstance(){
166 MicroServiceFullInfo microService4v2 = buildMicroServiceFullInfo4version2();
168 microServiceWrapper.saveMicroServiceInstance(microService4v2, false, "", "");
169 } catch (Exception e) {
170 Assert.fail("throw exception means error occured!" + e.getMessage());
175 microServiceWrapper.deleteMicroServiceInstance("testService","v2","127.0.0.1","8989");
178 Assert.assertTrue(e instanceof ExtendedNotFoundException);
183 microServiceWrapper.deleteMicroServiceInstance("testService","v2","10.74.148.87","8080");
184 MicroServiceFullInfo microService =microServiceWrapper.getMicroServiceInstance("testService", "v2");
186 Set<Node> nodeSet=new HashSet<Node>();
187 nodeSet.add(new Node("10.74.148.86","8080"));
188 Assert.assertEquals(nodeSet, microService.getNodes());
191 microServiceWrapper.deleteMicroServiceInstance("testService","v2","10.74.148.86","8080");
194 Assert.fail("throw exception means error occured!" + e.getMessage());
198 microServiceWrapper.getMicroServiceInstance("testService","v2");
199 Assert.fail("should not process to here.");
202 Assert.assertTrue(e instanceof ExtendedNotFoundException);
208 public void test_getAllVersion(){
210 microServiceWrapper.saveMicroServiceInstance(buildMicroServiceFullInfo(), false, "", "");
211 microServiceWrapper.saveMicroServiceInstance(buildMicroServiceFullInfo4version2(), false, "", "");
212 Set<String> versionSet=new HashSet<String>();
213 versionSet.add("v1");
214 versionSet.add("v2");
215 Assert.assertEquals(versionSet,microServiceWrapper.getAllVersion("testService"));
218 } catch (Exception e) {
219 Assert.fail("throw exception means error occured!" + e.getMessage());
222 microServiceWrapper.deleteMicroService4AllVersion("testService");
223 Assert.assertEquals(0,microServiceWrapper.getAllVersion("testService").size());
226 Assert.assertTrue(e instanceof ExtendedNotFoundException);
233 public void test_getAllMicroServiceKey(){
234 microServiceWrapper.saveMicroServiceInstance(buildMicroServiceFullInfo(), false, "", "");
235 microServiceWrapper.saveMicroServiceInstance(buildMicroServiceFullInfo2(), false, "", "");
236 Set<String> builder = new HashSet<String>();
237 builder.add("testService");
238 builder.add("testService2");
239 Assert.assertEquals(builder,microServiceWrapper.getAllMicroServiceKey());
244 private MicroServiceFullInfo buildMicroServiceFullInfo(){
245 MicroServiceFullInfo microServiceFullInfo = new MicroServiceFullInfo();
246 microServiceFullInfo.setServiceName("testService");
247 microServiceFullInfo.setVersion("v1");
248 microServiceFullInfo.setStatus("1");
249 microServiceFullInfo.setUrl("/testService/v1");
250 microServiceFullInfo.setVisualRange("0");
251 microServiceFullInfo.setProtocol("HTTP");
252 microServiceFullInfo.setEnable_ssl(false);
253 Set<Node> nodeSet = new HashSet<>();
254 nodeSet.add(new Node("10.74.148.88","8080"));
255 microServiceFullInfo.setNodes(nodeSet);
257 return microServiceFullInfo;
260 private MicroServiceFullInfo buildMicroServiceFullInfo4version2(){
261 MicroServiceFullInfo microServiceFullInfo = new MicroServiceFullInfo();
262 microServiceFullInfo.setServiceName("testService");
263 microServiceFullInfo.setVersion("v2");
264 microServiceFullInfo.setStatus("1");
265 microServiceFullInfo.setUrl("/testService/v1");
266 microServiceFullInfo.setVisualRange("0");
267 microServiceFullInfo.setProtocol("HTTP");
268 microServiceFullInfo.setEnable_ssl(false);
269 Set<Node> nodeSet = new HashSet<>();
270 nodeSet.add(new Node("10.74.148.87","8080"));
271 nodeSet.add(new Node("10.74.148.86","8080"));
272 microServiceFullInfo.setNodes(nodeSet);
274 return microServiceFullInfo;
277 private MicroServiceFullInfo buildMicroServiceFullInfo2(){
278 MicroServiceFullInfo microServiceFullInfo = new MicroServiceFullInfo();
279 microServiceFullInfo.setServiceName("testService2");
280 microServiceFullInfo.setVersion("v1");
281 microServiceFullInfo.setStatus("1");
282 microServiceFullInfo.setUrl("/api/testService/v1");
283 microServiceFullInfo.setVisualRange("1");
284 microServiceFullInfo.setProtocol("REST");
285 microServiceFullInfo.setEnable_ssl(true);
286 Set<Node> nodeSet = new HashSet<>();
287 nodeSet.add(new Node("10.74.148.89","8080"));
288 microServiceFullInfo.setNodes(nodeSet);
290 return microServiceFullInfo;