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