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.HashSet;
24 import java.util.List;
27 import org.junit.Assert;
28 import org.junit.Before;
29 import org.junit.BeforeClass;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.onap.msb.apiroute.api.MicroServiceFullInfo;
33 import org.onap.msb.apiroute.api.Node;
34 import org.onap.msb.apiroute.api.exception.ExtendedNotFoundException;
35 import org.onap.msb.apiroute.api.exception.UnprocessableEntityException;
36 import org.onap.msb.apiroute.wrapper.MicroServiceWrapper;
37 import org.onap.msb.apiroute.wrapper.dao.RedisAccessWrapper;
38 import org.onap.msb.apiroute.wrapper.util.JedisUtil;
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,RedisAccessWrapper.class})
52 @PowerMockIgnore( {"javax.management.*"})
53 public class MicroServiceWrapperTest {
54 private static MicroServiceWrapper microServiceWrapper;
55 private static Comparator<MicroServiceFullInfo> microServiceComparator = null;
59 public static void setUpBeforeClass() throws Exception {
60 microServiceWrapper=MicroServiceWrapper.getInstance();
61 microServiceComparator = new Comparator<MicroServiceFullInfo>() {
63 public int compare(MicroServiceFullInfo o1, MicroServiceFullInfo o2) {
64 if (!o1.getServiceName().equals(o2.getServiceName()))
65 return (o1.getServiceName()).compareTo(o2.getServiceName());
72 public void setUpBeforeTest() throws Exception {
73 final JedisPool mockJedisPool = new MockJedisPool(new JedisPoolConfig(), "localhost");
74 PowerMockito.mockStatic(JedisUtil.class);
75 JedisUtil jedisUtil=PowerMockito.mock(JedisUtil.class);
76 PowerMockito.when(jedisUtil.borrowJedisInstance()).thenReturn(mockJedisPool.getResource());
78 PowerMockito.replace(PowerMockito.method(RedisAccessWrapper.class, "filterKeys")).with(new InvocationHandler() {
80 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
81 return mockJedisPool.getResource().keys((String) args[0]);
87 public void test_getMicroServiceFullInfo_not_exist(){
89 microServiceWrapper.getMicroServiceInstance("testForJunit","v1");
90 Assert.fail("should not process to here.");
93 Assert.assertTrue(e instanceof ExtendedNotFoundException);
100 public void test_getMicroServiceFullInfo(){
102 MicroServiceFullInfo microServiceFullInfo = buildMicroServiceFullInfo();
104 microServiceWrapper.saveMicroServiceInstance(microServiceFullInfo, false, "", "");
105 MicroServiceFullInfo dbMicroServiceFullInfo=microServiceWrapper.getMicroServiceInstance("testService", "v1");
106 Assert.assertEquals(microServiceFullInfo,dbMicroServiceFullInfo );
107 } catch (Exception e) {
108 assert false:"throw exception means error occured!"+e.getMessage();
114 public void test_getAllMicroServiceInstances(){
115 MicroServiceFullInfo microService = buildMicroServiceFullInfo();
116 MicroServiceFullInfo microService2 = buildMicroServiceFullInfo2();
117 List<MicroServiceFullInfo> expected = new ArrayList<>();
118 expected.add(microService);
119 expected.add(microService2);
120 Collections.sort(expected, microServiceComparator);
123 microServiceWrapper.saveMicroServiceInstance(microService, false, "", "");
124 microServiceWrapper.saveMicroServiceInstance(microService2, false, "", "");
126 List<MicroServiceFullInfo> microServiceList=microServiceWrapper.getAllMicroServiceInstances();
127 Collections.sort(microServiceList, microServiceComparator);
129 Assert.assertEquals(expected,microServiceList);
131 } catch (Exception e) {
132 Assert.fail("throw exception means error occured!" + e.getMessage());
138 public void test_updateMicroServiceStatus(){
139 MicroServiceFullInfo microService = buildMicroServiceFullInfo();
142 microServiceWrapper.saveMicroServiceInstance(microService, false, "", "");
143 MicroServiceFullInfo dbMicroServiceFullInfo=microServiceWrapper.getMicroServiceInstance("testService", "v1");
144 Assert.assertEquals("1",dbMicroServiceFullInfo.getStatus() );
145 microServiceWrapper.updateMicroServiceStatus("testService","v1","0");
146 dbMicroServiceFullInfo=microServiceWrapper.getMicroServiceInstance("testService", "v1");
147 Assert.assertEquals("0",dbMicroServiceFullInfo.getStatus() );
148 } catch (Exception e) {
149 Assert.fail("throw exception means error occured!" + e.getMessage());
157 public void test_deleteMicroService(){
158 MicroServiceFullInfo microService = buildMicroServiceFullInfo2();
160 microServiceWrapper.saveMicroServiceInstance(microService, false, "", "");
161 MicroServiceFullInfo dbMicroServiceFullInfo=microServiceWrapper.getMicroServiceInstance("testService2", "v1");
162 Assert.assertNotNull(dbMicroServiceFullInfo);
164 } catch (Exception e) {
165 Assert.fail("throw exception means error occured!" + e.getMessage());
168 microServiceWrapper.deleteMicroService("testService2","v1");
169 microServiceWrapper.getMicroServiceInstance("testService2", "v1");
172 Assert.assertTrue(e instanceof ExtendedNotFoundException);
177 public void test_deleteMicroServiceInstance(){
181 MicroServiceFullInfo microService4v2 = buildMicroServiceFullInfo4version2();
183 microServiceWrapper.saveMicroServiceInstance(microService4v2, false, "", "");
184 } catch (Exception e) {
185 Assert.fail("throw exception means error occured!" + e.getMessage());
190 microServiceWrapper.deleteMicroServiceInstance("testService","v2","127.0.0.1","8989");
193 Assert.assertTrue(e instanceof ExtendedNotFoundException);
198 microServiceWrapper.deleteMicroServiceInstance("testService","v2","10.74.148.87","8080");
199 MicroServiceFullInfo microService =microServiceWrapper.getMicroServiceInstance("testService", "v2");
201 Set<Node> nodeSet=new HashSet<Node>();
202 nodeSet.add(new Node("10.74.148.86","8080"));
203 Assert.assertEquals(nodeSet, microService.getNodes());
206 microServiceWrapper.deleteMicroServiceInstance("testService","v2","10.74.148.86","8080");
209 Assert.fail("throw exception means error occured!" + e.getMessage());
213 microServiceWrapper.getMicroServiceInstance("testService","v2");
214 Assert.fail("should not process to here.");
217 Assert.assertTrue(e instanceof ExtendedNotFoundException);
223 public void test_getAllVersion(){
225 microServiceWrapper.saveMicroServiceInstance(buildMicroServiceFullInfo(), false, "", "");
226 microServiceWrapper.saveMicroServiceInstance(buildMicroServiceFullInfo4version2(), false, "", "");
227 Set<String> versionSet=new HashSet<String>();
228 versionSet.add("v1");
229 versionSet.add("v2");
230 Assert.assertEquals(versionSet,microServiceWrapper.getAllVersion("testService"));
233 } catch (Exception e) {
234 Assert.fail("throw exception means error occured!" + e.getMessage());
237 microServiceWrapper.deleteMicroService4AllVersion("testService");
238 Assert.assertEquals(0,microServiceWrapper.getAllVersion("testService").size());
241 Assert.assertTrue(e instanceof ExtendedNotFoundException);
248 public void test_getAllMicroServiceKey(){
249 microServiceWrapper.saveMicroServiceInstance(buildMicroServiceFullInfo(), false, "", "");
250 microServiceWrapper.saveMicroServiceInstance(buildMicroServiceFullInfo2(), false, "", "");
251 Set<String> builder = new HashSet<String>();
252 builder.add("testService");
253 builder.add("testService2");
254 Assert.assertEquals(builder,microServiceWrapper.getAllMicroServiceKey());
259 private MicroServiceFullInfo buildMicroServiceFullInfo(){
260 MicroServiceFullInfo microServiceFullInfo = new MicroServiceFullInfo();
261 microServiceFullInfo.setServiceName("testService");
262 microServiceFullInfo.setVersion("v1");
263 microServiceFullInfo.setStatus("1");
264 microServiceFullInfo.setUrl("/testService/v1");
265 microServiceFullInfo.setVisualRange("0");
266 microServiceFullInfo.setProtocol("HTTP");
267 microServiceFullInfo.setEnable_ssl(false);
268 Set<Node> nodeSet = new HashSet<>();
269 nodeSet.add(new Node("10.74.148.88","8080"));
270 microServiceFullInfo.setNodes(nodeSet);
272 return microServiceFullInfo;
275 private MicroServiceFullInfo buildMicroServiceFullInfo4version2(){
276 MicroServiceFullInfo microServiceFullInfo = new MicroServiceFullInfo();
277 microServiceFullInfo.setServiceName("testService");
278 microServiceFullInfo.setVersion("v2");
279 microServiceFullInfo.setStatus("1");
280 microServiceFullInfo.setUrl("/testService/v1");
281 microServiceFullInfo.setVisualRange("0");
282 microServiceFullInfo.setProtocol("HTTP");
283 microServiceFullInfo.setEnable_ssl(false);
284 Set<Node> nodeSet = new HashSet<>();
285 nodeSet.add(new Node("10.74.148.87","8080"));
286 nodeSet.add(new Node("10.74.148.86","8080"));
287 microServiceFullInfo.setNodes(nodeSet);
289 return microServiceFullInfo;
292 private MicroServiceFullInfo buildMicroServiceFullInfo2(){
293 MicroServiceFullInfo microServiceFullInfo = new MicroServiceFullInfo();
294 microServiceFullInfo.setServiceName("testService2");
295 microServiceFullInfo.setVersion("v1");
296 microServiceFullInfo.setStatus("1");
297 microServiceFullInfo.setUrl("/api/testService/v1");
298 microServiceFullInfo.setVisualRange("1");
299 microServiceFullInfo.setProtocol("REST");
300 microServiceFullInfo.setEnable_ssl(true);
301 Set<Node> nodeSet = new HashSet<>();
302 nodeSet.add(new Node("10.74.148.89","8080"));
303 microServiceFullInfo.setNodes(nodeSet);
305 return microServiceFullInfo;