update sparky with configurable features
[aai/sparky-be.git] / sparkybe-onap-service / src / test / java / org / onap / aai / sparky / crossentityreference / sync / CrossEntityReferenceSynchronizerTest.java
1 package org.onap.aai.sparky.crossentityreference.sync;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5
6 import java.util.ArrayList;
7 import java.util.HashMap;
8 import java.util.HashSet;
9 import java.util.List;
10 import java.util.Map;
11 import java.util.Set;
12
13 import org.hamcrest.Matcher;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.mockito.Matchers;
17 import org.mockito.Mockito;
18 import org.onap.aai.restclient.client.OperationResult;
19 import org.onap.aai.sparky.config.oxm.CrossEntityReferenceLookup;
20 import org.onap.aai.sparky.config.oxm.OxmEntityDescriptor;
21 import org.onap.aai.sparky.config.oxm.OxmEntityLookup;
22 import org.onap.aai.sparky.config.oxm.OxmModelProcessor;
23 import org.onap.aai.sparky.config.oxm.SearchableEntityLookup;
24 import org.onap.aai.sparky.dal.ActiveInventoryAdapter;
25 import org.onap.aai.sparky.search.SearchServiceAdapter;
26 import org.onap.aai.sparky.dal.rest.config.RestEndpointConfig;
27 import org.onap.aai.sparky.sync.config.ElasticSearchSchemaConfig;
28 import org.onap.aai.sparky.sync.config.NetworkStatisticsConfig;
29 import org.onap.aai.sparky.sync.enumeration.OperationState;
30 import org.onap.aai.sparky.util.StringCollectionContainsMatcher;
31 import org.onap.aai.sparky.util.TestResourceLoader;
32
33 import com.fasterxml.jackson.databind.ObjectMapper;
34
35 public class CrossEntityReferenceSynchronizerTest {
36   
37   private static ObjectMapper mapper = new ObjectMapper();
38
39   private CrossEntityReferenceSynchronizer cerSynchronizer;
40
41   private ElasticSearchSchemaConfig esSchemaConfig;
42   private NetworkStatisticsConfig aaiStatConfig;
43   private NetworkStatisticsConfig esStatConfig;
44   private OxmEntityLookup oxmEntityLookup;
45   private SearchableEntityLookup searchableEntityLookup;
46   private SearchServiceAdapter searchServiceAdapter;
47   private ActiveInventoryAdapter aaiAdapter;
48   private CrossEntityReferenceLookup cerLookup;
49   private RestEndpointConfig aaiRestEndPointConfig;
50
51   @Before
52   public void init() throws Exception {
53
54     esSchemaConfig = new ElasticSearchSchemaConfig();
55     esSchemaConfig.setIndexDocType("default");
56     esSchemaConfig.setIndexMappingsFileName(null);
57     esSchemaConfig.setIndexName("aggregation-index-name");
58     esSchemaConfig.setIndexSettingsFileName(null);
59
60
61     aaiStatConfig = new NetworkStatisticsConfig();
62
63     aaiStatConfig.setNumSamplesPerThreadForRunningAverage(100);
64
65     aaiStatConfig.setBytesHistogramLabel("[Response Size In Bytes]");
66     aaiStatConfig.setBytesHistogramMaxYAxis(1000000L);
67     aaiStatConfig.setBytesHistogramNumBins(20);
68     aaiStatConfig.setBytesHistogramNumDecimalPoints(2);
69
70     aaiStatConfig.setQueueLengthHistogramLabel("[Queue Item Length]");
71     aaiStatConfig.setQueueLengthHistogramMaxYAxis(20000);
72     aaiStatConfig.setQueueLengthHistogramNumBins(20);
73     aaiStatConfig.setQueueLengthHistogramNumDecimalPoints(2);
74
75     aaiStatConfig.setTaskAgeHistogramLabel("[Task Age In Ms]");
76     aaiStatConfig.setTaskAgeHistogramMaxYAxis(600000L);
77     aaiStatConfig.setTaskAgeHistogramNumBins(20);
78     aaiStatConfig.setTaskAgeHistogramNumDecimalPoints(2);
79
80     aaiStatConfig.setResponseTimeHistogramLabel("[Response Time In Ms]");
81     aaiStatConfig.setResponseTimeHistogramMaxYAxis(1000L);
82     aaiStatConfig.setResponseTimeHistogramNumBins(20);
83     aaiStatConfig.setResponseTimeHistogramNumDecimalPoints(2);
84
85     aaiStatConfig.setTpsHistogramLabel("[Transactions Per Second]");
86     aaiStatConfig.setTpsHistogramMaxYAxis(100);
87     aaiStatConfig.setTpsHistogramNumBins(20);
88     aaiStatConfig.setTpsHistogramNumDecimalPoints(2);
89
90     esStatConfig = new NetworkStatisticsConfig();
91
92     esStatConfig.setNumSamplesPerThreadForRunningAverage(100);
93
94     esStatConfig.setBytesHistogramLabel("[Response Size In Bytes]");
95     esStatConfig.setBytesHistogramMaxYAxis(1000000L);
96     esStatConfig.setBytesHistogramNumBins(20);
97     esStatConfig.setBytesHistogramNumDecimalPoints(2);
98
99     esStatConfig.setQueueLengthHistogramLabel("[Queue Item Length]");
100     esStatConfig.setQueueLengthHistogramMaxYAxis(20000);
101     esStatConfig.setQueueLengthHistogramNumBins(20);
102     esStatConfig.setQueueLengthHistogramNumDecimalPoints(2);
103
104     esStatConfig.setTaskAgeHistogramLabel("[Task Age In Ms]");
105     esStatConfig.setTaskAgeHistogramMaxYAxis(600000L);
106     esStatConfig.setTaskAgeHistogramNumBins(20);
107     esStatConfig.setTaskAgeHistogramNumDecimalPoints(2);
108
109     esStatConfig.setResponseTimeHistogramLabel("[Response Time In Ms]");
110     esStatConfig.setResponseTimeHistogramMaxYAxis(10000L);
111     esStatConfig.setResponseTimeHistogramNumBins(20);
112     esStatConfig.setResponseTimeHistogramNumDecimalPoints(2);
113
114     esStatConfig.setTpsHistogramLabel("[Transactions Per Second]");
115     esStatConfig.setTpsHistogramMaxYAxis(100);
116     esStatConfig.setTpsHistogramNumBins(20);
117     esStatConfig.setTpsHistogramNumDecimalPoints(2);
118
119     oxmEntityLookup = new OxmEntityLookup();
120
121     searchServiceAdapter = Mockito.mock(SearchServiceAdapter.class);
122     aaiAdapter = Mockito.mock(ActiveInventoryAdapter.class);
123
124
125     Set<OxmModelProcessor> processors = new HashSet<OxmModelProcessor>();
126
127     processors.add(oxmEntityLookup);
128
129
130     Map<String, OxmEntityDescriptor> oxmEntityDescriptors =
131         new HashMap<String, OxmEntityDescriptor>();
132
133     OxmEntityDescriptor genericVnfDescriptor = new OxmEntityDescriptor();
134     genericVnfDescriptor.setEntityName("generic-vnf");
135     List<String> pkeyNames = new ArrayList<String>();
136     pkeyNames.add("vnf-name");
137
138     genericVnfDescriptor.setPrimaryKeyAttributeNames(pkeyNames);
139
140     oxmEntityDescriptors.put("generic-vnf", genericVnfDescriptor);
141
142
143     oxmEntityLookup.setEntityDescriptors(oxmEntityDescriptors);
144
145     cerLookup = new CrossEntityReferenceLookup();
146     processors.add(cerLookup);
147     
148     searchableEntityLookup = new SearchableEntityLookup();
149     processors.add(searchableEntityLookup);
150     
151     
152
153     aaiRestEndPointConfig = new RestEndpointConfig();
154     aaiRestEndPointConfig.setNumRequestRetries(5);
155     
156     Mockito.when(aaiAdapter.getEndpointConfig()).thenReturn(aaiRestEndPointConfig);
157     
158   }
159
160   @Test
161   public void validateBasicConstruction() throws Exception {
162
163     cerSynchronizer = new CrossEntityReferenceSynchronizer(esSchemaConfig, 5, 5, 5, aaiStatConfig,
164         esStatConfig, cerLookup, oxmEntityLookup, searchableEntityLookup);
165     
166     cerSynchronizer.setAaiAdapter(aaiAdapter);
167     cerSynchronizer.setSearchServiceAdapter(searchServiceAdapter);
168
169     assertNotNull(cerSynchronizer.getAaiAdapter());
170     assertNotNull(cerSynchronizer.getSearchServiceAdapter());
171
172   }
173   
174   private Matcher<List<String>> listContainsValue(String expectedValue) {
175     return new StringCollectionContainsMatcher(expectedValue);
176   }
177
178   @Test
179   public void validateSmallSync() throws Exception {
180
181     cerSynchronizer = new CrossEntityReferenceSynchronizer(esSchemaConfig, 5, 5, 5, aaiStatConfig,
182         esStatConfig, cerLookup, oxmEntityLookup, searchableEntityLookup);
183
184     cerSynchronizer.setAaiAdapter(aaiAdapter);
185     cerSynchronizer.setSearchServiceAdapter(searchServiceAdapter);
186
187     String nodesQueryResponse = TestResourceLoader
188         .getTestResourceDataJson("/sync/aai/activeInventory_service-subscription_nodesQuery_response.json");
189
190     OperationResult entitySelfLinks = new OperationResult();
191
192     entitySelfLinks.setResultCode(200);
193     entitySelfLinks.setResult(nodesQueryResponse);
194
195     Mockito.when(aaiAdapter.getSelfLinksByEntityType("service-subscription"))
196         .thenReturn(entitySelfLinks);
197     
198     Mockito
199         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-1"),
200             Mockito.anyString()))
201         .thenReturn(
202             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-1/service-subscriptions/service-subscription/service-subscription-1");
203
204     Mockito
205         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-2"),
206             Mockito.anyString()))
207         .thenReturn(
208             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-2/service-subscriptions/service-subscription/service-subscription-2");
209
210     Mockito
211         .when(
212             aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-3"), Mockito.anyString()))
213         .thenReturn(
214             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-3/service-subscriptions/service-subscription/service-subscription-3");
215
216     Mockito
217         .when(aaiAdapter.queryActiveInventoryWithRetries(
218             Matchers.contains("service-subscription-2"), Mockito.anyString(),
219             Mockito.anyInt(),Mockito.anyString()))
220         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
221             "/sync/aai/service-subscription-service-subscription-2.json")));
222
223     Mockito
224         .when(aaiAdapter.queryActiveInventoryWithRetries(
225             Matchers.contains("service-subscription-1"), Mockito.anyString(),
226             Mockito.anyInt(),Mockito.anyString()))
227         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
228             "/sync/aai/service-subscription-service-subscription-1.json")));
229
230     Mockito
231         .when(aaiAdapter.queryActiveInventoryWithRetries(Matchers.contains("service-subscription-3"),
232             Mockito.anyString(), Mockito.anyInt(),Mockito.anyString()))
233         .thenReturn(new OperationResult(200, TestResourceLoader
234             .getTestResourceDataJson("/sync/aai/service-subscription-service-subscription-3.json")));
235     
236     Mockito
237         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
238             Matchers.argThat(listContainsValue("service-instance-59"))))
239         .thenReturn("https://server.proxy:8443/aai/v11/search/generic-query/service-instance-59");
240
241     Mockito
242         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
243             Matchers.argThat(listContainsValue("service-instance-54"))))
244         .thenReturn(
245             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-54");
246
247     Mockito
248         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
249             Matchers.argThat(listContainsValue("service-instance-55"))))
250         .thenReturn(
251             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-55");
252
253     Mockito
254         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
255             Matchers.argThat(listContainsValue("service-instance-50"))))
256         .thenReturn(
257             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-50");
258
259     Mockito
260         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
261             Matchers.argThat(listContainsValue("service-instance-52"))))
262         .thenReturn(
263             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-52");
264
265     Mockito
266         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
267             Matchers.argThat(listContainsValue("service-instance-57"))))
268         .thenReturn(
269             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-57");
270
271     Mockito
272         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
273             Matchers.argThat(listContainsValue("service-instance-53"))))
274         .thenReturn(
275             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-53");
276
277     Mockito
278         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
279             Matchers.argThat(listContainsValue("service-instance-58"))))
280         .thenReturn(
281             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-58");
282
283     Mockito
284         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
285             Matchers.argThat(listContainsValue("service-instance-51"))))
286         .thenReturn(
287             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-51");
288     
289     Mockito
290         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
291             Matchers.argThat(listContainsValue("service-instance-56"))))
292         .thenReturn(
293             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-56");
294     
295     
296     
297     
298     Mockito
299     .when(aaiAdapter.queryActiveInventoryWithRetries(
300         Matchers.contains("generic-query/service-instance-59"), Mockito.anyString(),
301         Mockito.anyInt(),Mockito.anyString()))
302     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
303         "/sync/aai/aai-traversal/generic-query/service-instance-59.json")));
304
305     Mockito
306     .when(aaiAdapter.queryActiveInventoryWithRetries(
307         Matchers.contains("generic-query/service-instance-54"), Mockito.anyString(),
308         Mockito.anyInt(),Mockito.anyString()))
309     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
310         "/sync/aai/aai-traversal/generic-query/service-instance-54.json")));
311     
312     Mockito
313     .when(aaiAdapter.queryActiveInventoryWithRetries(
314         Matchers.contains("generic-query/service-instance-55"), Mockito.anyString(),
315         Mockito.anyInt(),Mockito.anyString()))
316     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
317         "/sync/aai/aai-traversal/generic-query/service-instance-55.json")));
318
319     Mockito
320     .when(aaiAdapter.queryActiveInventoryWithRetries(
321         Matchers.contains("generic-query/service-instance-50"), Mockito.anyString(),
322         Mockito.anyInt(),Mockito.anyString()))
323     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
324         "/sync/aai/aai-traversal/generic-query/service-instance-50.json")));
325
326     Mockito
327     .when(aaiAdapter.queryActiveInventoryWithRetries(
328         Matchers.contains("generic-query/service-instance-52"), Mockito.anyString(),
329         Mockito.anyInt(),Mockito.anyString()))
330     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
331         "/sync/aai/aai-traversal/generic-query/service-instance-52.json")));
332
333     Mockito
334     .when(aaiAdapter.queryActiveInventoryWithRetries(
335         Matchers.contains("generic-query/service-instance-57"), Mockito.anyString(),
336         Mockito.anyInt(),Mockito.anyString()))
337     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
338         "/sync/aai/aai-traversal/generic-query/service-instance-57.json")));
339
340     Mockito
341     .when(aaiAdapter.queryActiveInventoryWithRetries(
342         Matchers.contains("generic-query/service-instance-53"), Mockito.anyString(),
343         Mockito.anyInt(),Mockito.anyString()))
344     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
345         "/sync/aai/aai-traversal/generic-query/service-instance-53.json")));
346
347     Mockito
348     .when(aaiAdapter.queryActiveInventoryWithRetries(
349         Matchers.contains("generic-query/service-instance-58"), Mockito.anyString(),
350         Mockito.anyInt(),Mockito.anyString()))
351     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
352         "/sync/aai/aai-traversal/generic-query/service-instance-58.json")));
353
354     Mockito
355     .when(aaiAdapter.queryActiveInventoryWithRetries(
356         Matchers.contains("generic-query/service-instance-51"), Mockito.anyString(),
357         Mockito.anyInt(),Mockito.anyString()))
358     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
359         "/sync/aai/aai-traversal/generic-query/service-instance-51.json")));
360
361     Mockito
362     .when(aaiAdapter.queryActiveInventoryWithRetries(
363         Matchers.contains("generic-query/service-instance-56"), Mockito.anyString(),
364         Mockito.anyInt(),Mockito.anyString()))
365     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
366         "/sync/aai/aai-traversal/generic-query/service-instance-56.json")));
367
368     
369     
370     
371     
372     
373     /*
374     
375     Mockito
376     .when(aaiAdapter.queryActiveInventoryWithRetries(
377         Matchers.contains("service-instance-59"), Mockito.anyString(),
378         Mockito.anyInt()))
379     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
380         "/sync/aai/aai-resources/service-instance/service-instance-59.json")));
381
382     Mockito
383     .when(aaiAdapter.queryActiveInventoryWithRetries(
384         Matchers.contains("service-instance-54"), Mockito.anyString(),
385         Mockito.anyInt()))
386     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
387         "/sync/aai/aai-resources/service-instance/service-instance-54.json")));
388     
389     Mockito
390     .when(aaiAdapter.queryActiveInventoryWithRetries(
391         Matchers.contains("service-instance-55"), Mockito.anyString(),
392         Mockito.anyInt()))
393     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
394         "/sync/aai/aai-resources/service-instance/service-instance-55.json")));
395
396     Mockito
397     .when(aaiAdapter.queryActiveInventoryWithRetries(
398         Matchers.contains("service-instance-50"), Mockito.anyString(),
399         Mockito.anyInt()))
400     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
401         "/sync/aai/aai-resources/service-instance/service-instance-50.json")));
402
403     Mockito
404     .when(aaiAdapter.queryActiveInventoryWithRetries(
405         Matchers.contains("service-instance-52"), Mockito.anyString(),
406         Mockito.anyInt()))
407     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
408         "/sync/aai/aai-resources/service-instance/service-instance-52.json")));
409
410     Mockito
411     .when(aaiAdapter.queryActiveInventoryWithRetries(
412         Matchers.contains("service-instance-57"), Mockito.anyString(),
413         Mockito.anyInt()))
414     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
415         "/sync/aai/aai-resources/service-instance/service-instance-57.json")));
416
417     Mockito
418     .when(aaiAdapter.queryActiveInventoryWithRetries(
419         Matchers.contains("service-instance-53"), Mockito.anyString(),
420         Mockito.anyInt()))
421     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
422         "/sync/aai/aai-resources/service-instance/service-instance-53.json")));
423
424     Mockito
425     .when(aaiAdapter.queryActiveInventoryWithRetries(
426         Matchers.contains("service-instance-58"), Mockito.anyString(),
427         Mockito.anyInt()))
428     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
429         "/sync/aai/aai-resources/service-instance/service-instance-58.json")));
430
431     Mockito
432     .when(aaiAdapter.queryActiveInventoryWithRetries(
433         Matchers.contains("service-instance-51"), Mockito.anyString(),
434         Mockito.anyInt()))
435     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
436         "/sync/aai/aai-resources/service-instance/service-instance-51.json")));
437
438     Mockito
439     .when(aaiAdapter.queryActiveInventoryWithRetries(
440         Matchers.contains("service-instance-56"), Mockito.anyString(),
441         Mockito.anyInt()))
442     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
443         "/sync/aai/aai-resources/service-instance/service-instance-56.json")));
444
445     
446     */
447     
448     
449     
450     
451     Mockito.when(searchServiceAdapter.buildSearchServiceDocUrl(Mockito.anyString(), Mockito.anyString()))
452         .thenReturn("http://server.proxy:9200/myindex/mytype/doc1",
453             "http://server.proxy:9200/myindex/mytype/doc2",
454             "http://server.proxy:9200/myindex/mytype/doc3");
455
456     /*
457      * Our initial gets from elastic search should be record-not-found
458      */
459     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc1"), Mockito.any()))
460         .thenReturn(new OperationResult(404, null));
461     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc2"), Mockito.any()))
462         .thenReturn(new OperationResult(404, null));
463     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc3"), Mockito.any()))
464         .thenReturn(new OperationResult(404, null));
465
466
467     Mockito.when(searchServiceAdapter.doPut(Matchers.contains("doc"), Mockito.any(), Mockito.any()))
468         .thenReturn(new OperationResult(200, null));
469
470     OperationState syncState = cerSynchronizer.doSync();
471     assertEquals(OperationState.OK, syncState);
472
473     assertNotNull(cerSynchronizer.getStatReport(false));
474     assertNotNull(cerSynchronizer.getStatReport(true));
475
476     cerSynchronizer.clearCache();
477     cerSynchronizer.shutdown();
478
479
480   }
481
482   @Test
483   public void validateSmallSyncWithRetries() throws Exception {
484
485     cerSynchronizer = new CrossEntityReferenceSynchronizer(esSchemaConfig, 5, 5, 5, aaiStatConfig,
486         esStatConfig, cerLookup, oxmEntityLookup, searchableEntityLookup);
487
488     cerSynchronizer.setAaiAdapter(aaiAdapter);
489     cerSynchronizer.setSearchServiceAdapter(searchServiceAdapter);
490
491     String nodesQueryResponse = TestResourceLoader
492         .getTestResourceDataJson("/sync/aai/activeInventory_service-subscription_nodesQuery_response.json");
493
494     OperationResult entitySelfLinks = new OperationResult();
495
496     entitySelfLinks.setResultCode(200);
497     entitySelfLinks.setResult(nodesQueryResponse);
498
499     Mockito.when(aaiAdapter.getSelfLinksByEntityType("service-subscription"))
500         .thenReturn(entitySelfLinks);
501     
502     Mockito
503         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-1"),
504             Mockito.anyString()))
505         .thenReturn(
506             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-1/service-subscriptions/service-subscription/service-subscription-1");
507
508     Mockito
509         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-2"),
510             Mockito.anyString()))
511         .thenReturn(
512             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-2/service-subscriptions/service-subscription/service-subscription-2");
513
514     Mockito
515         .when(
516             aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-3"), Mockito.anyString()))
517         .thenReturn(
518             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-3/service-subscriptions/service-subscription/service-subscription-3");
519
520     Mockito
521         .when(aaiAdapter.queryActiveInventoryWithRetries(
522             Matchers.contains("service-subscription-2"), Mockito.anyString(),
523             Mockito.anyInt(),Mockito.anyString()))
524         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
525             "/sync/aai/service-subscription-service-subscription-2.json")));
526
527     Mockito
528         .when(aaiAdapter.queryActiveInventoryWithRetries(
529             Matchers.contains("service-subscription-1"), Mockito.anyString(),
530             Mockito.anyInt(),Mockito.anyString()))
531         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
532             "/sync/aai/service-subscription-service-subscription-1.json")));
533
534     Mockito
535         .when(aaiAdapter.queryActiveInventoryWithRetries(Matchers.contains("service-subscription-3"),
536             Mockito.anyString(), Mockito.anyInt(),Mockito.anyString()))
537         .thenReturn(new OperationResult(200, TestResourceLoader
538             .getTestResourceDataJson("/sync/aai/service-subscription-service-subscription-3.json")));
539     
540     Mockito
541         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
542             Matchers.argThat(listContainsValue("service-instance-59"))))
543         .thenReturn("https://server.proxy:8443/aai/v11/search/generic-query/service-instance-59");
544
545     Mockito
546         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
547             Matchers.argThat(listContainsValue("service-instance-54"))))
548         .thenReturn(
549             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-54");
550
551     Mockito
552         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
553             Matchers.argThat(listContainsValue("service-instance-55"))))
554         .thenReturn(
555             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-55");
556
557     Mockito
558         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
559             Matchers.argThat(listContainsValue("service-instance-50"))))
560         .thenReturn(
561             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-50");
562
563     Mockito
564         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
565             Matchers.argThat(listContainsValue("service-instance-52"))))
566         .thenReturn(
567             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-52");
568
569     Mockito
570         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
571             Matchers.argThat(listContainsValue("service-instance-57"))))
572         .thenReturn(
573             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-57");
574
575     Mockito
576         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
577             Matchers.argThat(listContainsValue("service-instance-53"))))
578         .thenReturn(
579             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-53");
580
581     Mockito
582         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
583             Matchers.argThat(listContainsValue("service-instance-58"))))
584         .thenReturn(
585             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-58");
586
587     Mockito
588         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
589             Matchers.argThat(listContainsValue("service-instance-51"))))
590         .thenReturn(
591             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-51");
592     
593     Mockito
594         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
595             Matchers.argThat(listContainsValue("service-instance-56"))))
596         .thenReturn(
597             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-56");
598     
599     
600     
601     
602     Mockito
603     .when(aaiAdapter.queryActiveInventoryWithRetries(
604         Matchers.contains("generic-query/service-instance-59"), Mockito.anyString(),
605         Mockito.anyInt(),Mockito.anyString()))
606     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
607         "/sync/aai/aai-traversal/generic-query/service-instance-59.json")));
608
609     Mockito
610     .when(aaiAdapter.queryActiveInventoryWithRetries(
611         Matchers.contains("generic-query/service-instance-54"), Mockito.anyString(),
612         Mockito.anyInt(),Mockito.anyString()))
613     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
614         "/sync/aai/aai-traversal/generic-query/service-instance-54.json")));
615     
616     Mockito
617     .when(aaiAdapter.queryActiveInventoryWithRetries(
618         Matchers.contains("generic-query/service-instance-55"), Mockito.anyString(),
619         Mockito.anyInt(),Mockito.anyString()))
620     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
621         "/sync/aai/aai-traversal/generic-query/service-instance-55.json")));
622
623     Mockito
624     .when(aaiAdapter.queryActiveInventoryWithRetries(
625         Matchers.contains("generic-query/service-instance-50"), Mockito.anyString(),
626         Mockito.anyInt(),Mockito.anyString()))
627     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
628         "/sync/aai/aai-traversal/generic-query/service-instance-50.json")));
629
630     Mockito
631     .when(aaiAdapter.queryActiveInventoryWithRetries(
632         Matchers.contains("generic-query/service-instance-52"), Mockito.anyString(),
633         Mockito.anyInt(),Mockito.anyString()))
634     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
635         "/sync/aai/aai-traversal/generic-query/service-instance-52.json")));
636
637     Mockito
638     .when(aaiAdapter.queryActiveInventoryWithRetries(
639         Matchers.contains("generic-query/service-instance-57"), Mockito.anyString(),
640         Mockito.anyInt(),Mockito.anyString()))
641     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
642         "/sync/aai/aai-traversal/generic-query/service-instance-57.json")));
643
644     Mockito
645     .when(aaiAdapter.queryActiveInventoryWithRetries(
646         Matchers.contains("generic-query/service-instance-53"), Mockito.anyString(),
647         Mockito.anyInt(),Mockito.anyString()))
648     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
649         "/sync/aai/aai-traversal/generic-query/service-instance-53.json")));
650
651     Mockito
652     .when(aaiAdapter.queryActiveInventoryWithRetries(
653         Matchers.contains("generic-query/service-instance-58"), Mockito.anyString(),
654         Mockito.anyInt(),Mockito.anyString()))
655     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
656         "/sync/aai/aai-traversal/generic-query/service-instance-58.json")));
657
658     Mockito
659     .when(aaiAdapter.queryActiveInventoryWithRetries(
660         Matchers.contains("generic-query/service-instance-51"), Mockito.anyString(),
661         Mockito.anyInt(),Mockito.anyString()))
662     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
663         "/sync/aai/aai-traversal/generic-query/service-instance-51.json")));
664
665     Mockito
666     .when(aaiAdapter.queryActiveInventoryWithRetries(
667         Matchers.contains("generic-query/service-instance-56"), Mockito.anyString(),
668         Mockito.anyInt(),Mockito.anyString()))
669     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
670         "/sync/aai/aai-traversal/generic-query/service-instance-56.json")));
671
672     
673     
674     
675     
676     
677     /*
678     
679     Mockito
680     .when(aaiAdapter.queryActiveInventoryWithRetries(
681         Matchers.contains("service-instance-59"), Mockito.anyString(),
682         Mockito.anyInt()))
683     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
684         "/sync/aai/aai-resources/service-instance/service-instance-59.json")));
685
686     Mockito
687     .when(aaiAdapter.queryActiveInventoryWithRetries(
688         Matchers.contains("service-instance-54"), Mockito.anyString(),
689         Mockito.anyInt()))
690     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
691         "/sync/aai/aai-resources/service-instance/service-instance-54.json")));
692     
693     Mockito
694     .when(aaiAdapter.queryActiveInventoryWithRetries(
695         Matchers.contains("service-instance-55"), Mockito.anyString(),
696         Mockito.anyInt()))
697     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
698         "/sync/aai/aai-resources/service-instance/service-instance-55.json")));
699
700     Mockito
701     .when(aaiAdapter.queryActiveInventoryWithRetries(
702         Matchers.contains("service-instance-50"), Mockito.anyString(),
703         Mockito.anyInt()))
704     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
705         "/sync/aai/aai-resources/service-instance/service-instance-50.json")));
706
707     Mockito
708     .when(aaiAdapter.queryActiveInventoryWithRetries(
709         Matchers.contains("service-instance-52"), Mockito.anyString(),
710         Mockito.anyInt()))
711     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
712         "/sync/aai/aai-resources/service-instance/service-instance-52.json")));
713
714     Mockito
715     .when(aaiAdapter.queryActiveInventoryWithRetries(
716         Matchers.contains("service-instance-57"), Mockito.anyString(),
717         Mockito.anyInt()))
718     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
719         "/sync/aai/aai-resources/service-instance/service-instance-57.json")));
720
721     Mockito
722     .when(aaiAdapter.queryActiveInventoryWithRetries(
723         Matchers.contains("service-instance-53"), Mockito.anyString(),
724         Mockito.anyInt()))
725     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
726         "/sync/aai/aai-resources/service-instance/service-instance-53.json")));
727
728     Mockito
729     .when(aaiAdapter.queryActiveInventoryWithRetries(
730         Matchers.contains("service-instance-58"), Mockito.anyString(),
731         Mockito.anyInt()))
732     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
733         "/sync/aai/aai-resources/service-instance/service-instance-58.json")));
734
735     Mockito
736     .when(aaiAdapter.queryActiveInventoryWithRetries(
737         Matchers.contains("service-instance-51"), Mockito.anyString(),
738         Mockito.anyInt()))
739     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
740         "/sync/aai/aai-resources/service-instance/service-instance-51.json")));
741
742     Mockito
743     .when(aaiAdapter.queryActiveInventoryWithRetries(
744         Matchers.contains("service-instance-56"), Mockito.anyString(),
745         Mockito.anyInt()))
746     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
747         "/sync/aai/aai-resources/service-instance/service-instance-56.json")));
748
749     
750     */
751     
752     
753     
754     
755     Mockito.when(searchServiceAdapter.buildSearchServiceDocUrl(Mockito.anyString(), Mockito.anyString()))
756         .thenReturn("http://server.proxy:9200/myindex/mytype/doc1",
757             "http://server.proxy:9200/myindex/mytype/doc2",
758             "http://server.proxy:9200/myindex/mytype/doc3");
759
760     /*
761      * Our initial gets from elastic search should be record-not-found
762      */
763     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc1"), Mockito.any()))
764         .thenReturn(new OperationResult(404, null));
765     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc2"), Mockito.any()))
766         .thenReturn(new OperationResult(404, null));
767     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc3"), Mockito.any()))
768         .thenReturn(new OperationResult(404, null));
769
770
771     /*
772      * Cause version conflict errors on every put to test retry flow
773      */
774     
775     Mockito.when(searchServiceAdapter.doPut(Matchers.contains("doc"), Mockito.any(), Mockito.any()))
776         .thenReturn(new OperationResult(409, null));
777
778     OperationState syncState = cerSynchronizer.doSync();
779     assertEquals(OperationState.OK, syncState);
780
781     assertNotNull(cerSynchronizer.getStatReport(false));
782     assertNotNull(cerSynchronizer.getStatReport(true));
783
784     cerSynchronizer.clearCache();
785     cerSynchronizer.shutdown();
786
787
788
789
790   }
791   
792   
793   
794   @Test
795   public void validateSmallSyncWithEntityMerges() throws Exception {
796
797     cerSynchronizer = new CrossEntityReferenceSynchronizer(esSchemaConfig, 5, 5, 5, aaiStatConfig,
798         esStatConfig, cerLookup, oxmEntityLookup, searchableEntityLookup);
799
800     cerSynchronizer.setAaiAdapter(aaiAdapter);
801     cerSynchronizer.setSearchServiceAdapter(searchServiceAdapter);
802
803     String nodesQueryResponse = TestResourceLoader
804         .getTestResourceDataJson("/sync/aai/activeInventory_service-subscription_nodesQuery_response.json");
805
806     OperationResult entitySelfLinks = new OperationResult();
807
808     entitySelfLinks.setResultCode(200);
809     entitySelfLinks.setResult(nodesQueryResponse);
810
811     Mockito.when(aaiAdapter.getSelfLinksByEntityType("service-subscription"))
812         .thenReturn(entitySelfLinks);
813     
814     Mockito
815         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-1"),
816             Mockito.anyString()))
817         .thenReturn(
818             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-1/service-subscriptions/service-subscription/service-subscription-1");
819
820     Mockito
821         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-2"),
822             Mockito.anyString()))
823         .thenReturn(
824             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-2/service-subscriptions/service-subscription/service-subscription-2");
825
826     Mockito
827         .when(
828             aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-3"), Mockito.anyString()))
829         .thenReturn(
830             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-3/service-subscriptions/service-subscription/service-subscription-3");
831
832     Mockito
833         .when(aaiAdapter.queryActiveInventoryWithRetries(
834             Matchers.contains("service-subscription-2"), Mockito.anyString(),
835             Mockito.anyInt(),Mockito.anyString()))
836         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
837             "/sync/aai/service-subscription-service-subscription-2.json")));
838
839     Mockito
840         .when(aaiAdapter.queryActiveInventoryWithRetries(
841             Matchers.contains("service-subscription-1"), Mockito.anyString(),
842             Mockito.anyInt(),Mockito.anyString()))
843         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
844             "/sync/aai/service-subscription-service-subscription-1.json")));
845
846     Mockito
847         .when(aaiAdapter.queryActiveInventoryWithRetries(Matchers.contains("service-subscription-3"),
848             Mockito.anyString(), Mockito.anyInt(),Mockito.anyString()))
849         .thenReturn(new OperationResult(200, TestResourceLoader
850             .getTestResourceDataJson("/sync/aai/service-subscription-service-subscription-3.json")));
851     
852     Mockito
853         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
854             Matchers.argThat(listContainsValue("service-instance-59"))))
855         .thenReturn("https://server.proxy:8443/aai/v11/search/generic-query/service-instance-59");
856
857     Mockito
858         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
859             Matchers.argThat(listContainsValue("service-instance-54"))))
860         .thenReturn(
861             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-54");
862
863     Mockito
864         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
865             Matchers.argThat(listContainsValue("service-instance-55"))))
866         .thenReturn(
867             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-55");
868
869     Mockito
870         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
871             Matchers.argThat(listContainsValue("service-instance-50"))))
872         .thenReturn(
873             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-50");
874
875     Mockito
876         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
877             Matchers.argThat(listContainsValue("service-instance-52"))))
878         .thenReturn(
879             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-52");
880
881     Mockito
882         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
883             Matchers.argThat(listContainsValue("service-instance-57"))))
884         .thenReturn(
885             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-57");
886
887     Mockito
888         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
889             Matchers.argThat(listContainsValue("service-instance-53"))))
890         .thenReturn(
891             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-53");
892
893     Mockito
894         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
895             Matchers.argThat(listContainsValue("service-instance-58"))))
896         .thenReturn(
897             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-58");
898
899     Mockito
900         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
901             Matchers.argThat(listContainsValue("service-instance-51"))))
902         .thenReturn(
903             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-51");
904     
905     Mockito
906         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
907             Matchers.argThat(listContainsValue("service-instance-56"))))
908         .thenReturn(
909             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-56");
910     
911     
912     
913     
914     Mockito
915     .when(aaiAdapter.queryActiveInventoryWithRetries(
916         Matchers.contains("generic-query/service-instance-59"), Mockito.anyString(),
917         Mockito.anyInt(),Mockito.anyString()))
918     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
919         "/sync/aai/aai-traversal/generic-query/service-instance-59.json")));
920
921     Mockito
922     .when(aaiAdapter.queryActiveInventoryWithRetries(
923         Matchers.contains("generic-query/service-instance-54"), Mockito.anyString(),
924         Mockito.anyInt(),Mockito.anyString()))
925     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
926         "/sync/aai/aai-traversal/generic-query/service-instance-54.json")));
927     
928     Mockito
929     .when(aaiAdapter.queryActiveInventoryWithRetries(
930         Matchers.contains("generic-query/service-instance-55"), Mockito.anyString(),
931         Mockito.anyInt(),Mockito.anyString()))
932     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
933         "/sync/aai/aai-traversal/generic-query/service-instance-55.json")));
934
935     Mockito
936     .when(aaiAdapter.queryActiveInventoryWithRetries(
937         Matchers.contains("generic-query/service-instance-50"), Mockito.anyString(),
938         Mockito.anyInt(),Mockito.anyString()))
939     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
940         "/sync/aai/aai-traversal/generic-query/service-instance-50.json")));
941
942     Mockito
943     .when(aaiAdapter.queryActiveInventoryWithRetries(
944         Matchers.contains("generic-query/service-instance-52"), Mockito.anyString(),
945         Mockito.anyInt(),Mockito.anyString()))
946     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
947         "/sync/aai/aai-traversal/generic-query/service-instance-52.json")));
948
949     Mockito
950     .when(aaiAdapter.queryActiveInventoryWithRetries(
951         Matchers.contains("generic-query/service-instance-57"), Mockito.anyString(),
952         Mockito.anyInt(),Mockito.anyString()))
953     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
954         "/sync/aai/aai-traversal/generic-query/service-instance-57.json")));
955
956     Mockito
957     .when(aaiAdapter.queryActiveInventoryWithRetries(
958         Matchers.contains("generic-query/service-instance-53"), Mockito.anyString(),
959         Mockito.anyInt(),Mockito.anyString()))
960     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
961         "/sync/aai/aai-traversal/generic-query/service-instance-53.json")));
962
963     Mockito
964     .when(aaiAdapter.queryActiveInventoryWithRetries(
965         Matchers.contains("generic-query/service-instance-58"), Mockito.anyString(),
966         Mockito.anyInt(),Mockito.anyString()))
967     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
968         "/sync/aai/aai-traversal/generic-query/service-instance-58.json")));
969
970     Mockito
971     .when(aaiAdapter.queryActiveInventoryWithRetries(
972         Matchers.contains("generic-query/service-instance-51"), Mockito.anyString(),
973         Mockito.anyInt(),Mockito.anyString()))
974     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
975         "/sync/aai/aai-traversal/generic-query/service-instance-51.json")));
976
977     Mockito
978     .when(aaiAdapter.queryActiveInventoryWithRetries(
979         Matchers.contains("generic-query/service-instance-56"), Mockito.anyString(),
980         Mockito.anyInt(),Mockito.anyString()))
981     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
982         "/sync/aai/aai-traversal/generic-query/service-instance-56.json")));
983
984     
985     Mockito.when(searchServiceAdapter.buildSearchServiceDocUrl(Mockito.anyString(), Mockito.anyString()))
986         .thenReturn("http://server.proxy:9200/myindex/mytype/doc1",
987             "http://server.proxy:9200/myindex/mytype/doc2",
988             "http://server.proxy:9200/myindex/mytype/doc3");
989
990     /*
991      * Our initial gets from elastic search return 200 ok with a found entity document requiring a doc update
992      */
993     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc1"), Mockito.any())).thenReturn(new OperationResult(200,
994             TestResourceLoader.getTestResourceDataJson("/sync/ElasticSearch/docEntityFromElasticSearch1.json")));
995
996     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc2"), Mockito.any())).thenReturn(new OperationResult(200,
997             TestResourceLoader.getTestResourceDataJson("/sync/ElasticSearch/docEntityFromElasticSearch2.json")));
998
999     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc3"), Mockito.any())).thenReturn(new OperationResult(200,
1000             TestResourceLoader.getTestResourceDataJson("/sync/ElasticSearch/docEntityFromElasticSearch3.json")));
1001
1002     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc4"), Mockito.any())).thenReturn(new OperationResult(200,
1003             TestResourceLoader.getTestResourceDataJson("/sync/ElasticSearch/docEntityFromElasticSearch4.json")));
1004
1005     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc5"), Mockito.any())).thenReturn(new OperationResult(200,
1006             TestResourceLoader.getTestResourceDataJson("/sync/ElasticSearch/docEntityFromElasticSearch5.json")));
1007
1008     Mockito.when(searchServiceAdapter.doPut(Matchers.contains("doc"), Mockito.any(), Mockito.any()))
1009             .thenReturn(new OperationResult(200, null));
1010     
1011
1012     
1013     Mockito.when(searchServiceAdapter.doPut(Matchers.contains("doc"), Mockito.any(), Mockito.any()))
1014         .thenReturn(new OperationResult(200, null));
1015
1016     OperationState syncState = cerSynchronizer.doSync();
1017     assertEquals(OperationState.OK, syncState);
1018
1019     assertNotNull(cerSynchronizer.getStatReport(false));
1020     assertNotNull(cerSynchronizer.getStatReport(true));
1021
1022     cerSynchronizer.clearCache();
1023     cerSynchronizer.shutdown();
1024
1025
1026
1027
1028   }
1029   
1030   
1031   
1032   
1033 }