Add license header for java files
[msb/apigateway.git] / apiroute / apiroute-service / src / test / java / org / onap / msb / apiroute / wrapper / consulextend / expose / WatchCatalogServicesTaskTest.java
1 /*******************************************************************************
2  * Copyright 2016-2017 ZTE, Inc. and others.
3  * 
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 
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
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.consulextend.expose;
17
18 import java.math.BigInteger;
19 import java.util.ArrayList;
20 import java.util.HashMap;
21 import java.util.List;
22 import java.util.Map;
23
24 import org.apache.http.HttpEntity;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.mockito.Mockito;
29 import org.mockito.invocation.InvocationOnMock;
30 import org.mockito.stubbing.Answer;
31 import org.onap.msb.apiroute.wrapper.consulextend.Consul;
32 import org.onap.msb.apiroute.wrapper.consulextend.async.ConsulResponseCallback;
33 import org.onap.msb.apiroute.wrapper.consulextend.expose.WatchCatalogServicesTask;
34 import org.onap.msb.apiroute.wrapper.consulextend.expose.WatchTask;
35 import org.onap.msb.apiroute.wrapper.consulextend.expose.WatchTask.Filter;
36 import org.onap.msb.apiroute.wrapper.consulextend.util.Http;
37 import org.powermock.api.mockito.PowerMockito;
38 import org.powermock.core.classloader.annotations.PowerMockIgnore;
39 import org.powermock.core.classloader.annotations.PrepareForTest;
40 import org.powermock.modules.junit4.PowerMockRunner;
41 import org.slf4j.Logger;
42 import org.slf4j.LoggerFactory;
43
44 import com.fasterxml.jackson.core.type.TypeReference;
45 import com.orbitz.consul.model.ConsulResponse;
46 import com.orbitz.consul.option.CatalogOptions;
47 import com.orbitz.consul.option.QueryOptions;
48
49 @RunWith(PowerMockRunner.class)
50 @PrepareForTest({ Http.class })
51 @PowerMockIgnore({ "javax.net.ssl.*" })
52 public class WatchCatalogServicesTaskTest {
53         private static final Logger LOGGER = LoggerFactory
54                         .getLogger(WatchCatalogServicesTaskTest.class);
55
56         private Consul consul;
57
58         @SuppressWarnings({ "unchecked", "rawtypes" })
59         @Before
60         public void init() {
61
62                 Map<String, List<String>> catalogservices = new HashMap<String, List<String>>();
63                 String servicename = "huangleibo";
64                 List<String> tags = new ArrayList<String>();
65                 tags.add("1111");
66                 tags.add("2222");
67                 catalogservices.put(servicename, tags);
68
69                 long lastContact = 1;
70                 boolean knownLeader = true;
71                 BigInteger index = BigInteger.valueOf(1);
72                 final ConsulResponse<Map<String, List<String>>> response = new ConsulResponse<Map<String, List<String>>>(
73                                 catalogservices, lastContact, knownLeader, index);
74
75                 //
76                 Http http = PowerMockito.mock(Http.class);
77
78                 PowerMockito
79                                 .doAnswer(new Answer() {
80                                         @Override
81                                         public Object answer(InvocationOnMock invocation)
82                                                         throws Throwable {
83                                                 Object[] args = invocation.getArguments();
84                                                 ((ConsulResponseCallback) args[2]).onComplete(response);
85                                                 return null;
86                                         }
87                                 })
88                                 .when(http)
89                                 .asyncGet(Mockito.anyString(),
90                                                 Mockito.any(TypeReference.class),
91                                                 Mockito.any(ConsulResponseCallback.class));
92
93                 //
94                 PowerMockito.spy(Http.class);
95                 PowerMockito.when(Http.getInstance()).thenReturn(http);
96
97                 consul = Consul.newClient();
98
99                 WatchCatalogServicesTask task0 = new WatchCatalogServicesTask(
100                                 consul.catalogClient(), CatalogOptions.BLANK,
101                                 QueryOptions.BLANK, 10);
102
103                 WatchCatalogServicesTask task1 = new WatchCatalogServicesTask(
104                                 consul.catalogClient(), 10);
105
106                 WatchCatalogServicesTask task2 = new WatchCatalogServicesTask(
107                                 consul.catalogClient());
108
109         }
110         
111         public class StopHandler implements WatchTask.Handler<HttpEntity>
112         {
113                 
114                 private WatchCatalogServicesTask task;
115                 
116                 StopHandler(WatchCatalogServicesTask task)
117                 {
118                         this.task = task;
119                 }
120
121                 @Override
122                 public void handle(ConsulResponse<HttpEntity> object) {
123                         // TODO Auto-generated method stub
124 //                      Map<String, List<String>> map = (Map<String, List<String>>)object.getResponse();
125                         LOGGER.debug("handler is here");
126                         task.stopWatch();
127                 }
128         }
129
130         @SuppressWarnings({ "unchecked", "rawtypes" })
131         @Test
132         public void teststartWatch() {
133                 WatchCatalogServicesTask task0 = new WatchCatalogServicesTask(
134                                 consul.catalogClient(), CatalogOptions.BLANK,
135                                 QueryOptions.BLANK, 10);
136                                 
137                 task0.addFilter(new Filter() {
138                         @Override
139                         public boolean filter(ConsulResponse object) {
140                                 // TODO Auto-generated method stub
141 //                              Map<String, List<String>> map = (Map<String, List<String>>)object.getResponse();
142                                 LOGGER.debug("filter is here");
143                                 return true;
144                         }
145                         
146                 });
147                 
148                 task0.addHandler(new StopHandler(task0));
149                 
150                 task0.startWatch();
151         }
152         
153 }