1 package org.onap.aai.sparky.crossentityreference.sync;
 
   3 import static org.junit.Assert.assertEquals;
 
   4 import static org.junit.Assert.assertNotNull;
 
   6 import java.util.ArrayList;
 
   7 import java.util.HashMap;
 
   8 import java.util.HashSet;
 
  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.CrossEntityReferenceDescriptor;
 
  22 import org.onap.aai.sparky.config.oxm.CrossEntityReference;
 
  23 import org.onap.aai.sparky.config.oxm.OxmEntityLookup;
 
  24 import org.onap.aai.sparky.config.oxm.OxmModelProcessor;
 
  25 import org.onap.aai.sparky.config.oxm.SearchableEntityLookup;
 
  26 import org.onap.aai.sparky.dal.ActiveInventoryAdapter;
 
  27 import org.onap.aai.sparky.search.SearchServiceAdapter;
 
  28 import org.onap.aai.sparky.dal.rest.config.RestEndpointConfig;
 
  29 import org.onap.aai.sparky.sync.config.ElasticSearchSchemaConfig;
 
  30 import org.onap.aai.sparky.sync.config.NetworkStatisticsConfig;
 
  31 import org.onap.aai.sparky.sync.enumeration.OperationState;
 
  32 import org.onap.aai.sparky.util.StringCollectionContainsMatcher;
 
  33 import org.onap.aai.sparky.util.TestResourceLoader;
 
  35 import com.fasterxml.jackson.databind.ObjectMapper;
 
  37 public class CrossEntityReferenceSynchronizerTest {
 
  39   private static ObjectMapper mapper = new ObjectMapper();
 
  41   private CrossEntityReferenceSynchronizer cerSynchronizer;
 
  43   private ElasticSearchSchemaConfig esSchemaConfig;
 
  44   private NetworkStatisticsConfig aaiStatConfig;
 
  45   private NetworkStatisticsConfig esStatConfig;
 
  46   private OxmEntityLookup oxmEntityLookup;
 
  47   private SearchableEntityLookup searchableEntityLookup;
 
  48   private SearchServiceAdapter searchServiceAdapter;
 
  49   private ActiveInventoryAdapter aaiAdapter;
 
  50   private CrossEntityReferenceLookup cerLookup;
 
  51   private RestEndpointConfig aaiRestEndPointConfig;
 
  54   public void init() throws Exception {
 
  56     esSchemaConfig = new ElasticSearchSchemaConfig();
 
  57     esSchemaConfig.setIndexDocType("default");
 
  58     esSchemaConfig.setIndexMappingsFileName(null);
 
  59     esSchemaConfig.setIndexName("aggregation-index-name");
 
  60     esSchemaConfig.setIndexSettingsFileName(null);
 
  63     aaiStatConfig = new NetworkStatisticsConfig();
 
  65     aaiStatConfig.setNumSamplesPerThreadForRunningAverage(100);
 
  67     aaiStatConfig.setBytesHistogramLabel("[Response Size In Bytes]");
 
  68     aaiStatConfig.setBytesHistogramMaxYAxis(1000000L);
 
  69     aaiStatConfig.setBytesHistogramNumBins(20);
 
  70     aaiStatConfig.setBytesHistogramNumDecimalPoints(2);
 
  72     aaiStatConfig.setQueueLengthHistogramLabel("[Queue Item Length]");
 
  73     aaiStatConfig.setQueueLengthHistogramMaxYAxis(20000);
 
  74     aaiStatConfig.setQueueLengthHistogramNumBins(20);
 
  75     aaiStatConfig.setQueueLengthHistogramNumDecimalPoints(2);
 
  77     aaiStatConfig.setTaskAgeHistogramLabel("[Task Age In Ms]");
 
  78     aaiStatConfig.setTaskAgeHistogramMaxYAxis(600000L);
 
  79     aaiStatConfig.setTaskAgeHistogramNumBins(20);
 
  80     aaiStatConfig.setTaskAgeHistogramNumDecimalPoints(2);
 
  82     aaiStatConfig.setResponseTimeHistogramLabel("[Response Time In Ms]");
 
  83     aaiStatConfig.setResponseTimeHistogramMaxYAxis(1000L);
 
  84     aaiStatConfig.setResponseTimeHistogramNumBins(20);
 
  85     aaiStatConfig.setResponseTimeHistogramNumDecimalPoints(2);
 
  87     aaiStatConfig.setTpsHistogramLabel("[Transactions Per Second]");
 
  88     aaiStatConfig.setTpsHistogramMaxYAxis(100);
 
  89     aaiStatConfig.setTpsHistogramNumBins(20);
 
  90     aaiStatConfig.setTpsHistogramNumDecimalPoints(2);
 
  92     esStatConfig = new NetworkStatisticsConfig();
 
  94     esStatConfig.setNumSamplesPerThreadForRunningAverage(100);
 
  96     esStatConfig.setBytesHistogramLabel("[Response Size In Bytes]");
 
  97     esStatConfig.setBytesHistogramMaxYAxis(1000000L);
 
  98     esStatConfig.setBytesHistogramNumBins(20);
 
  99     esStatConfig.setBytesHistogramNumDecimalPoints(2);
 
 101     esStatConfig.setQueueLengthHistogramLabel("[Queue Item Length]");
 
 102     esStatConfig.setQueueLengthHistogramMaxYAxis(20000);
 
 103     esStatConfig.setQueueLengthHistogramNumBins(20);
 
 104     esStatConfig.setQueueLengthHistogramNumDecimalPoints(2);
 
 106     esStatConfig.setTaskAgeHistogramLabel("[Task Age In Ms]");
 
 107     esStatConfig.setTaskAgeHistogramMaxYAxis(600000L);
 
 108     esStatConfig.setTaskAgeHistogramNumBins(20);
 
 109     esStatConfig.setTaskAgeHistogramNumDecimalPoints(2);
 
 111     esStatConfig.setResponseTimeHistogramLabel("[Response Time In Ms]");
 
 112     esStatConfig.setResponseTimeHistogramMaxYAxis(10000L);
 
 113     esStatConfig.setResponseTimeHistogramNumBins(20);
 
 114     esStatConfig.setResponseTimeHistogramNumDecimalPoints(2);
 
 116     esStatConfig.setTpsHistogramLabel("[Transactions Per Second]");
 
 117     esStatConfig.setTpsHistogramMaxYAxis(100);
 
 118     esStatConfig.setTpsHistogramNumBins(20);
 
 119     esStatConfig.setTpsHistogramNumDecimalPoints(2);
 
 121     oxmEntityLookup = new OxmEntityLookup();
 
 123     searchServiceAdapter = Mockito.mock(SearchServiceAdapter.class);
 
 124     aaiAdapter = Mockito.mock(ActiveInventoryAdapter.class);
 
 127     Set<OxmModelProcessor> processors = new HashSet<OxmModelProcessor>();
 
 129     processors.add(oxmEntityLookup);
 
 132     Map<String, OxmEntityDescriptor> oxmEntityDescriptors =
 
 133         new HashMap<String, OxmEntityDescriptor>();
 
 135     OxmEntityDescriptor genericVnfDescriptor = new OxmEntityDescriptor();
 
 136     genericVnfDescriptor.setEntityName("generic-vnf");
 
 137     List<String> pkeyNames = new ArrayList<String>();
 
 138     pkeyNames.add("vnf-name");
 
 140     genericVnfDescriptor.setPrimaryKeyAttributeNames(pkeyNames);
 
 142     oxmEntityDescriptors.put("generic-vnf", genericVnfDescriptor);
 
 145     oxmEntityLookup.setEntityDescriptors(oxmEntityDescriptors);
 
 147     cerLookup = new CrossEntityReferenceLookup();
 
 148     processors.add(cerLookup);
 
 150     Map<String, CrossEntityReferenceDescriptor> crossReferenceEntityDescriptors =
 
 151             new HashMap<String, CrossEntityReferenceDescriptor>();
 
 153     CrossEntityReferenceDescriptor crossReferenceEntiDescriptor = new CrossEntityReferenceDescriptor();
 
 154     CrossEntityReference crossEntityReference = new CrossEntityReference();
 
 155     crossEntityReference.setTargetEntityType("service-instance");
 
 156     List<String> refEntities = new ArrayList<String>();
 
 157     refEntities.add("service-type");
 
 158     crossEntityReference.setReferenceAttributes(refEntities);
 
 160     List<String> crossEntityPkeyNames = new ArrayList<String>();
 
 161     crossEntityPkeyNames.add("service-type");
 
 162     crossReferenceEntiDescriptor.setPrimaryKeyAttributeNames(crossEntityPkeyNames);
 
 164     crossReferenceEntiDescriptor.setCrossEntityReference(crossEntityReference);
 
 165     crossReferenceEntiDescriptor.setEntityName("service-subscription");
 
 166     crossReferenceEntityDescriptors.put("service-subscription", crossReferenceEntiDescriptor);
 
 167     cerLookup.setCrossReferenceEntityDescriptors(crossReferenceEntityDescriptors);
 
 169     searchableEntityLookup = new SearchableEntityLookup();
 
 170     processors.add(searchableEntityLookup);
 
 172     aaiRestEndPointConfig = new RestEndpointConfig();
 
 173     aaiRestEndPointConfig.setNumRequestRetries(5);
 
 175     Mockito.when(aaiAdapter.getEndpointConfig()).thenReturn(aaiRestEndPointConfig);
 
 180   public void validateBasicConstruction() throws Exception {
 
 182     cerSynchronizer = new CrossEntityReferenceSynchronizer(esSchemaConfig, 5, 5, 5, aaiStatConfig,
 
 183         esStatConfig, cerLookup, oxmEntityLookup, searchableEntityLookup);
 
 185     cerSynchronizer.setAaiAdapter(aaiAdapter);
 
 186     cerSynchronizer.setSearchServiceAdapter(searchServiceAdapter);
 
 188     assertNotNull(cerSynchronizer.getAaiAdapter());
 
 189     assertNotNull(cerSynchronizer.getSearchServiceAdapter());
 
 193   private Matcher<List<String>> listContainsValue(String expectedValue) {
 
 194     return new StringCollectionContainsMatcher(expectedValue);
 
 198   public void validateSmallSync() throws Exception {
 
 200     cerSynchronizer = new CrossEntityReferenceSynchronizer(esSchemaConfig, 5, 5, 5, aaiStatConfig,
 
 201         esStatConfig, cerLookup, oxmEntityLookup, searchableEntityLookup);
 
 203     cerSynchronizer.setAaiAdapter(aaiAdapter);
 
 204     cerSynchronizer.setSearchServiceAdapter(searchServiceAdapter);
 
 206     String nodesQueryResponse = TestResourceLoader
 
 207         .getTestResourceDataJson("/sync/aai/activeInventory_service-subscription_nodesQuery_response.json");
 
 209     OperationResult entitySelfLinks = new OperationResult();
 
 211     entitySelfLinks.setResultCode(200);
 
 212     entitySelfLinks.setResult(nodesQueryResponse);
 
 214     Mockito.when(aaiAdapter.getSelfLinksByEntityType("service-subscription"))
 
 215         .thenReturn(entitySelfLinks);
 
 218         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-1"),
 
 219             Mockito.anyString()))
 
 221             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-1/service-subscriptions/service-subscription/service-subscription-1");
 
 224         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-2"),
 
 225             Mockito.anyString()))
 
 227             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-2/service-subscriptions/service-subscription/service-subscription-2");
 
 231             aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-3"), Mockito.anyString()))
 
 233             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-3/service-subscriptions/service-subscription/service-subscription-3");
 
 236         .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 237             Matchers.contains("service-subscription-2"), Mockito.anyString(),
 
 238             Mockito.anyInt(),Mockito.anyString()))
 
 239         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 240             "/sync/aai/service-subscription-service-subscription-2.json")));
 
 243         .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 244             Matchers.contains("service-subscription-1"), Mockito.anyString(),
 
 245             Mockito.anyInt(),Mockito.anyString()))
 
 246         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 247             "/sync/aai/service-subscription-service-subscription-1.json")));
 
 250         .when(aaiAdapter.queryActiveInventoryWithRetries(Matchers.contains("service-subscription-3"),
 
 251             Mockito.anyString(), Mockito.anyInt(),Mockito.anyString()))
 
 252         .thenReturn(new OperationResult(200, TestResourceLoader
 
 253             .getTestResourceDataJson("/sync/aai/service-subscription-service-subscription-3.json")));
 
 256         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 257             Matchers.argThat(listContainsValue("service-instance-59"))))
 
 258         .thenReturn("https://server.proxy:8443/aai/v11/search/generic-query/service-instance-59");
 
 261         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 262             Matchers.argThat(listContainsValue("service-instance-54"))))
 
 264             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-54");
 
 267         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 268             Matchers.argThat(listContainsValue("service-instance-55"))))
 
 270             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-55");
 
 273         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 274             Matchers.argThat(listContainsValue("service-instance-50"))))
 
 276             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-50");
 
 279         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 280             Matchers.argThat(listContainsValue("service-instance-52"))))
 
 282             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-52");
 
 285         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 286             Matchers.argThat(listContainsValue("service-instance-57"))))
 
 288             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-57");
 
 291         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 292             Matchers.argThat(listContainsValue("service-instance-53"))))
 
 294             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-53");
 
 297         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 298             Matchers.argThat(listContainsValue("service-instance-58"))))
 
 300             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-58");
 
 303         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 304             Matchers.argThat(listContainsValue("service-instance-51"))))
 
 306             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-51");
 
 309         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 310             Matchers.argThat(listContainsValue("service-instance-56"))))
 
 312             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-56");
 
 318     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 319         Matchers.contains("generic-query/service-instance-59"), Mockito.anyString(),
 
 320         Mockito.anyInt(),Mockito.anyString()))
 
 321     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 322         "/sync/aai/aai-traversal/generic-query/service-instance-59.json")));
 
 325     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 326         Matchers.contains("generic-query/service-instance-54"), Mockito.anyString(),
 
 327         Mockito.anyInt(),Mockito.anyString()))
 
 328     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 329         "/sync/aai/aai-traversal/generic-query/service-instance-54.json")));
 
 332     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 333         Matchers.contains("generic-query/service-instance-55"), Mockito.anyString(),
 
 334         Mockito.anyInt(),Mockito.anyString()))
 
 335     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 336         "/sync/aai/aai-traversal/generic-query/service-instance-55.json")));
 
 339     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 340         Matchers.contains("generic-query/service-instance-50"), Mockito.anyString(),
 
 341         Mockito.anyInt(),Mockito.anyString()))
 
 342     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 343         "/sync/aai/aai-traversal/generic-query/service-instance-50.json")));
 
 346     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 347         Matchers.contains("generic-query/service-instance-52"), Mockito.anyString(),
 
 348         Mockito.anyInt(),Mockito.anyString()))
 
 349     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 350         "/sync/aai/aai-traversal/generic-query/service-instance-52.json")));
 
 353     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 354         Matchers.contains("generic-query/service-instance-57"), Mockito.anyString(),
 
 355         Mockito.anyInt(),Mockito.anyString()))
 
 356     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 357         "/sync/aai/aai-traversal/generic-query/service-instance-57.json")));
 
 360     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 361         Matchers.contains("generic-query/service-instance-53"), Mockito.anyString(),
 
 362         Mockito.anyInt(),Mockito.anyString()))
 
 363     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 364         "/sync/aai/aai-traversal/generic-query/service-instance-53.json")));
 
 367     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 368         Matchers.contains("generic-query/service-instance-58"), Mockito.anyString(),
 
 369         Mockito.anyInt(),Mockito.anyString()))
 
 370     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 371         "/sync/aai/aai-traversal/generic-query/service-instance-58.json")));
 
 374     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 375         Matchers.contains("generic-query/service-instance-51"), Mockito.anyString(),
 
 376         Mockito.anyInt(),Mockito.anyString()))
 
 377     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 378         "/sync/aai/aai-traversal/generic-query/service-instance-51.json")));
 
 381     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 382         Matchers.contains("generic-query/service-instance-56"), Mockito.anyString(),
 
 383         Mockito.anyInt(),Mockito.anyString()))
 
 384     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 385         "/sync/aai/aai-traversal/generic-query/service-instance-56.json")));
 
 395     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 396         Matchers.contains("service-instance-59"), Mockito.anyString(),
 
 398     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 399         "/sync/aai/aai-resources/service-instance/service-instance-59.json")));
 
 402     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 403         Matchers.contains("service-instance-54"), Mockito.anyString(),
 
 405     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 406         "/sync/aai/aai-resources/service-instance/service-instance-54.json")));
 
 409     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 410         Matchers.contains("service-instance-55"), Mockito.anyString(),
 
 412     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 413         "/sync/aai/aai-resources/service-instance/service-instance-55.json")));
 
 416     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 417         Matchers.contains("service-instance-50"), Mockito.anyString(),
 
 419     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 420         "/sync/aai/aai-resources/service-instance/service-instance-50.json")));
 
 423     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 424         Matchers.contains("service-instance-52"), Mockito.anyString(),
 
 426     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 427         "/sync/aai/aai-resources/service-instance/service-instance-52.json")));
 
 430     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 431         Matchers.contains("service-instance-57"), Mockito.anyString(),
 
 433     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 434         "/sync/aai/aai-resources/service-instance/service-instance-57.json")));
 
 437     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 438         Matchers.contains("service-instance-53"), Mockito.anyString(),
 
 440     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 441         "/sync/aai/aai-resources/service-instance/service-instance-53.json")));
 
 444     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 445         Matchers.contains("service-instance-58"), Mockito.anyString(),
 
 447     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 448         "/sync/aai/aai-resources/service-instance/service-instance-58.json")));
 
 451     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 452         Matchers.contains("service-instance-51"), Mockito.anyString(),
 
 454     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 455         "/sync/aai/aai-resources/service-instance/service-instance-51.json")));
 
 458     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 459         Matchers.contains("service-instance-56"), Mockito.anyString(),
 
 461     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 462         "/sync/aai/aai-resources/service-instance/service-instance-56.json")));
 
 470     Mockito.when(searchServiceAdapter.buildSearchServiceDocUrl(Mockito.anyString(), Mockito.anyString()))
 
 471         .thenReturn("http://server.proxy:9200/myindex/mytype/doc1",
 
 472             "http://server.proxy:9200/myindex/mytype/doc2",
 
 473             "http://server.proxy:9200/myindex/mytype/doc3");
 
 476      * Our initial gets from elastic search should be record-not-found
 
 478     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc1"), Mockito.any()))
 
 479         .thenReturn(new OperationResult(404, null));
 
 480     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc2"), Mockito.any()))
 
 481         .thenReturn(new OperationResult(404, null));
 
 482     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc3"), Mockito.any()))
 
 483         .thenReturn(new OperationResult(404, null));
 
 486     Mockito.when(searchServiceAdapter.doPut(Matchers.contains("doc"), Mockito.any(), Mockito.any()))
 
 487         .thenReturn(new OperationResult(200, null));
 
 489     OperationState syncState = cerSynchronizer.doSync();
 
 490     assertEquals(OperationState.OK, syncState);
 
 492     assertNotNull(cerSynchronizer.getStatReport(false));
 
 493     assertNotNull(cerSynchronizer.getStatReport(true));
 
 495     cerSynchronizer.clearCache();
 
 496     cerSynchronizer.shutdown();
 
 502   public void validateSmallSyncWithRetries() throws Exception {
 
 504     cerSynchronizer = new CrossEntityReferenceSynchronizer(esSchemaConfig, 5, 5, 5, aaiStatConfig,
 
 505         esStatConfig, cerLookup, oxmEntityLookup, searchableEntityLookup);
 
 507     cerSynchronizer.setAaiAdapter(aaiAdapter);
 
 508     cerSynchronizer.setSearchServiceAdapter(searchServiceAdapter);
 
 510     String nodesQueryResponse = TestResourceLoader
 
 511         .getTestResourceDataJson("/sync/aai/activeInventory_service-subscription_nodesQuery_response.json");
 
 513     OperationResult entitySelfLinks = new OperationResult();
 
 515     entitySelfLinks.setResultCode(200);
 
 516     entitySelfLinks.setResult(nodesQueryResponse);
 
 518     Mockito.when(aaiAdapter.getSelfLinksByEntityType("service-subscription"))
 
 519         .thenReturn(entitySelfLinks);
 
 522         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-1"),
 
 523             Mockito.anyString()))
 
 525             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-1/service-subscriptions/service-subscription/service-subscription-1");
 
 528         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-2"),
 
 529             Mockito.anyString()))
 
 531             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-2/service-subscriptions/service-subscription/service-subscription-2");
 
 535             aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-3"), Mockito.anyString()))
 
 537             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-3/service-subscriptions/service-subscription/service-subscription-3");
 
 540         .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 541             Matchers.contains("service-subscription-2"), Mockito.anyString(),
 
 542             Mockito.anyInt(),Mockito.anyString()))
 
 543         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 544             "/sync/aai/service-subscription-service-subscription-2.json")));
 
 547         .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 548             Matchers.contains("service-subscription-1"), Mockito.anyString(),
 
 549             Mockito.anyInt(),Mockito.anyString()))
 
 550         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 551             "/sync/aai/service-subscription-service-subscription-1.json")));
 
 554         .when(aaiAdapter.queryActiveInventoryWithRetries(Matchers.contains("service-subscription-3"),
 
 555             Mockito.anyString(), Mockito.anyInt(),Mockito.anyString()))
 
 556         .thenReturn(new OperationResult(200, TestResourceLoader
 
 557             .getTestResourceDataJson("/sync/aai/service-subscription-service-subscription-3.json")));
 
 560         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 561             Matchers.argThat(listContainsValue("service-instance-59"))))
 
 562         .thenReturn("https://server.proxy:8443/aai/v11/search/generic-query/service-instance-59");
 
 565         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 566             Matchers.argThat(listContainsValue("service-instance-54"))))
 
 568             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-54");
 
 571         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 572             Matchers.argThat(listContainsValue("service-instance-55"))))
 
 574             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-55");
 
 577         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 578             Matchers.argThat(listContainsValue("service-instance-50"))))
 
 580             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-50");
 
 583         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 584             Matchers.argThat(listContainsValue("service-instance-52"))))
 
 586             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-52");
 
 589         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 590             Matchers.argThat(listContainsValue("service-instance-57"))))
 
 592             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-57");
 
 595         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 596             Matchers.argThat(listContainsValue("service-instance-53"))))
 
 598             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-53");
 
 601         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 602             Matchers.argThat(listContainsValue("service-instance-58"))))
 
 604             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-58");
 
 607         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 608             Matchers.argThat(listContainsValue("service-instance-51"))))
 
 610             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-51");
 
 613         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 614             Matchers.argThat(listContainsValue("service-instance-56"))))
 
 616             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-56");
 
 622     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 623         Matchers.contains("generic-query/service-instance-59"), Mockito.anyString(),
 
 624         Mockito.anyInt(),Mockito.anyString()))
 
 625     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 626         "/sync/aai/aai-traversal/generic-query/service-instance-59.json")));
 
 629     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 630         Matchers.contains("generic-query/service-instance-54"), Mockito.anyString(),
 
 631         Mockito.anyInt(),Mockito.anyString()))
 
 632     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 633         "/sync/aai/aai-traversal/generic-query/service-instance-54.json")));
 
 636     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 637         Matchers.contains("generic-query/service-instance-55"), Mockito.anyString(),
 
 638         Mockito.anyInt(),Mockito.anyString()))
 
 639     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 640         "/sync/aai/aai-traversal/generic-query/service-instance-55.json")));
 
 643     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 644         Matchers.contains("generic-query/service-instance-50"), Mockito.anyString(),
 
 645         Mockito.anyInt(),Mockito.anyString()))
 
 646     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 647         "/sync/aai/aai-traversal/generic-query/service-instance-50.json")));
 
 650     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 651         Matchers.contains("generic-query/service-instance-52"), Mockito.anyString(),
 
 652         Mockito.anyInt(),Mockito.anyString()))
 
 653     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 654         "/sync/aai/aai-traversal/generic-query/service-instance-52.json")));
 
 657     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 658         Matchers.contains("generic-query/service-instance-57"), Mockito.anyString(),
 
 659         Mockito.anyInt(),Mockito.anyString()))
 
 660     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 661         "/sync/aai/aai-traversal/generic-query/service-instance-57.json")));
 
 664     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 665         Matchers.contains("generic-query/service-instance-53"), Mockito.anyString(),
 
 666         Mockito.anyInt(),Mockito.anyString()))
 
 667     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 668         "/sync/aai/aai-traversal/generic-query/service-instance-53.json")));
 
 671     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 672         Matchers.contains("generic-query/service-instance-58"), Mockito.anyString(),
 
 673         Mockito.anyInt(),Mockito.anyString()))
 
 674     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 675         "/sync/aai/aai-traversal/generic-query/service-instance-58.json")));
 
 678     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 679         Matchers.contains("generic-query/service-instance-51"), Mockito.anyString(),
 
 680         Mockito.anyInt(),Mockito.anyString()))
 
 681     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 682         "/sync/aai/aai-traversal/generic-query/service-instance-51.json")));
 
 685     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 686         Matchers.contains("generic-query/service-instance-56"), Mockito.anyString(),
 
 687         Mockito.anyInt(),Mockito.anyString()))
 
 688     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 689         "/sync/aai/aai-traversal/generic-query/service-instance-56.json")));
 
 699     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 700         Matchers.contains("service-instance-59"), Mockito.anyString(),
 
 702     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 703         "/sync/aai/aai-resources/service-instance/service-instance-59.json")));
 
 706     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 707         Matchers.contains("service-instance-54"), Mockito.anyString(),
 
 709     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 710         "/sync/aai/aai-resources/service-instance/service-instance-54.json")));
 
 713     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 714         Matchers.contains("service-instance-55"), Mockito.anyString(),
 
 716     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 717         "/sync/aai/aai-resources/service-instance/service-instance-55.json")));
 
 720     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 721         Matchers.contains("service-instance-50"), Mockito.anyString(),
 
 723     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 724         "/sync/aai/aai-resources/service-instance/service-instance-50.json")));
 
 727     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 728         Matchers.contains("service-instance-52"), Mockito.anyString(),
 
 730     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 731         "/sync/aai/aai-resources/service-instance/service-instance-52.json")));
 
 734     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 735         Matchers.contains("service-instance-57"), Mockito.anyString(),
 
 737     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 738         "/sync/aai/aai-resources/service-instance/service-instance-57.json")));
 
 741     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 742         Matchers.contains("service-instance-53"), Mockito.anyString(),
 
 744     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 745         "/sync/aai/aai-resources/service-instance/service-instance-53.json")));
 
 748     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 749         Matchers.contains("service-instance-58"), Mockito.anyString(),
 
 751     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 752         "/sync/aai/aai-resources/service-instance/service-instance-58.json")));
 
 755     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 756         Matchers.contains("service-instance-51"), Mockito.anyString(),
 
 758     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 759         "/sync/aai/aai-resources/service-instance/service-instance-51.json")));
 
 762     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 763         Matchers.contains("service-instance-56"), Mockito.anyString(),
 
 765     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 766         "/sync/aai/aai-resources/service-instance/service-instance-56.json")));
 
 774     Mockito.when(searchServiceAdapter.buildSearchServiceDocUrl(Mockito.anyString(), Mockito.anyString()))
 
 775         .thenReturn("http://server.proxy:9200/myindex/mytype/doc1",
 
 776             "http://server.proxy:9200/myindex/mytype/doc2",
 
 777             "http://server.proxy:9200/myindex/mytype/doc3");
 
 780      * Our initial gets from elastic search should be record-not-found
 
 782     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc1"), Mockito.any()))
 
 783         .thenReturn(new OperationResult(404, null));
 
 784     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc2"), Mockito.any()))
 
 785         .thenReturn(new OperationResult(404, null));
 
 786     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc3"), Mockito.any()))
 
 787         .thenReturn(new OperationResult(404, null));
 
 791      * Cause version conflict errors on every put to test retry flow
 
 794     Mockito.when(searchServiceAdapter.doPut(Matchers.contains("doc"), Mockito.any(), Mockito.any()))
 
 795         .thenReturn(new OperationResult(409, null));
 
 797     OperationState syncState = cerSynchronizer.doSync();
 
 798     assertEquals(OperationState.OK, syncState);
 
 800     assertNotNull(cerSynchronizer.getStatReport(false));
 
 801     assertNotNull(cerSynchronizer.getStatReport(true));
 
 803     cerSynchronizer.clearCache();
 
 804     cerSynchronizer.shutdown();
 
 814   public void validateSmallSyncWithEntityMerges() throws Exception {
 
 816     cerSynchronizer = new CrossEntityReferenceSynchronizer(esSchemaConfig, 5, 5, 5, aaiStatConfig,
 
 817         esStatConfig, cerLookup, oxmEntityLookup, searchableEntityLookup);
 
 819     cerSynchronizer.setAaiAdapter(aaiAdapter);
 
 820     cerSynchronizer.setSearchServiceAdapter(searchServiceAdapter);
 
 822     String nodesQueryResponse = TestResourceLoader
 
 823         .getTestResourceDataJson("/sync/aai/activeInventory_service-subscription_nodesQuery_response.json");
 
 825     OperationResult entitySelfLinks = new OperationResult();
 
 827     entitySelfLinks.setResultCode(200);
 
 828     entitySelfLinks.setResult(nodesQueryResponse);
 
 830     Mockito.when(aaiAdapter.getSelfLinksByEntityType("service-subscription"))
 
 831         .thenReturn(entitySelfLinks);
 
 834         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-1"),
 
 835             Mockito.anyString()))
 
 837             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-1/service-subscriptions/service-subscription/service-subscription-1");
 
 840         .when(aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-2"),
 
 841             Mockito.anyString()))
 
 843             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-2/service-subscriptions/service-subscription/service-subscription-2");
 
 847             aaiAdapter.repairSelfLink(Matchers.contains("service-subscription-3"), Mockito.anyString()))
 
 849             "https://server.proxy:8443/aai/v11/business/customers/customer/customer-3/service-subscriptions/service-subscription/service-subscription-3");
 
 852         .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 853             Matchers.contains("service-subscription-2"), Mockito.anyString(),
 
 854             Mockito.anyInt(),Mockito.anyString()))
 
 855         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 856             "/sync/aai/service-subscription-service-subscription-2.json")));
 
 859         .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 860             Matchers.contains("service-subscription-1"), Mockito.anyString(),
 
 861             Mockito.anyInt(),Mockito.anyString()))
 
 862         .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 863             "/sync/aai/service-subscription-service-subscription-1.json")));
 
 866         .when(aaiAdapter.queryActiveInventoryWithRetries(Matchers.contains("service-subscription-3"),
 
 867             Mockito.anyString(), Mockito.anyInt(),Mockito.anyString()))
 
 868         .thenReturn(new OperationResult(200, TestResourceLoader
 
 869             .getTestResourceDataJson("/sync/aai/service-subscription-service-subscription-3.json")));
 
 872         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 873             Matchers.argThat(listContainsValue("service-instance-59"))))
 
 874         .thenReturn("https://server.proxy:8443/aai/v11/search/generic-query/service-instance-59");
 
 877         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 878             Matchers.argThat(listContainsValue("service-instance-54"))))
 
 880             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-54");
 
 883         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 884             Matchers.argThat(listContainsValue("service-instance-55"))))
 
 886             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-55");
 
 889         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 890             Matchers.argThat(listContainsValue("service-instance-50"))))
 
 892             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-50");
 
 895         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 896             Matchers.argThat(listContainsValue("service-instance-52"))))
 
 898             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-52");
 
 901         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 902             Matchers.argThat(listContainsValue("service-instance-57"))))
 
 904             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-57");
 
 907         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 908             Matchers.argThat(listContainsValue("service-instance-53"))))
 
 910             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-53");
 
 913         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 914             Matchers.argThat(listContainsValue("service-instance-58"))))
 
 916             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-58");
 
 919         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 920             Matchers.argThat(listContainsValue("service-instance-51"))))
 
 922             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-51");
 
 925         .when(aaiAdapter.getGenericQueryForSelfLink(Matchers.contains("service-instance"),
 
 926             Matchers.argThat(listContainsValue("service-instance-56"))))
 
 928             "https://server.proxy:8443/aai/v11/search/generic-query/service-instance-56");
 
 934     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 935         Matchers.contains("generic-query/service-instance-59"), Mockito.anyString(),
 
 936         Mockito.anyInt(),Mockito.anyString()))
 
 937     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 938         "/sync/aai/aai-traversal/generic-query/service-instance-59.json")));
 
 941     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 942         Matchers.contains("generic-query/service-instance-54"), Mockito.anyString(),
 
 943         Mockito.anyInt(),Mockito.anyString()))
 
 944     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 945         "/sync/aai/aai-traversal/generic-query/service-instance-54.json")));
 
 948     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 949         Matchers.contains("generic-query/service-instance-55"), Mockito.anyString(),
 
 950         Mockito.anyInt(),Mockito.anyString()))
 
 951     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 952         "/sync/aai/aai-traversal/generic-query/service-instance-55.json")));
 
 955     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 956         Matchers.contains("generic-query/service-instance-50"), Mockito.anyString(),
 
 957         Mockito.anyInt(),Mockito.anyString()))
 
 958     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 959         "/sync/aai/aai-traversal/generic-query/service-instance-50.json")));
 
 962     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 963         Matchers.contains("generic-query/service-instance-52"), Mockito.anyString(),
 
 964         Mockito.anyInt(),Mockito.anyString()))
 
 965     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 966         "/sync/aai/aai-traversal/generic-query/service-instance-52.json")));
 
 969     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 970         Matchers.contains("generic-query/service-instance-57"), Mockito.anyString(),
 
 971         Mockito.anyInt(),Mockito.anyString()))
 
 972     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 973         "/sync/aai/aai-traversal/generic-query/service-instance-57.json")));
 
 976     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 977         Matchers.contains("generic-query/service-instance-53"), Mockito.anyString(),
 
 978         Mockito.anyInt(),Mockito.anyString()))
 
 979     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 980         "/sync/aai/aai-traversal/generic-query/service-instance-53.json")));
 
 983     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 984         Matchers.contains("generic-query/service-instance-58"), Mockito.anyString(),
 
 985         Mockito.anyInt(),Mockito.anyString()))
 
 986     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 987         "/sync/aai/aai-traversal/generic-query/service-instance-58.json")));
 
 990     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 991         Matchers.contains("generic-query/service-instance-51"), Mockito.anyString(),
 
 992         Mockito.anyInt(),Mockito.anyString()))
 
 993     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
 994         "/sync/aai/aai-traversal/generic-query/service-instance-51.json")));
 
 997     .when(aaiAdapter.queryActiveInventoryWithRetries(
 
 998         Matchers.contains("generic-query/service-instance-56"), Mockito.anyString(),
 
 999         Mockito.anyInt(),Mockito.anyString()))
 
1000     .thenReturn(new OperationResult(200, TestResourceLoader.getTestResourceDataJson(
 
1001         "/sync/aai/aai-traversal/generic-query/service-instance-56.json")));
 
1004     Mockito.when(searchServiceAdapter.buildSearchServiceDocUrl(Mockito.anyString(), Mockito.anyString()))
 
1005         .thenReturn("http://server.proxy:9200/myindex/mytype/doc1",
 
1006             "http://server.proxy:9200/myindex/mytype/doc2",
 
1007             "http://server.proxy:9200/myindex/mytype/doc3");
 
1010      * Our initial gets from elastic search return 200 ok with a found entity document requiring a doc update
 
1012     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc1"), Mockito.any())).thenReturn(new OperationResult(200,
 
1013             TestResourceLoader.getTestResourceDataJson("/sync/ElasticSearch/docEntityFromElasticSearch1.json")));
 
1015     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc2"), Mockito.any())).thenReturn(new OperationResult(200,
 
1016             TestResourceLoader.getTestResourceDataJson("/sync/ElasticSearch/docEntityFromElasticSearch2.json")));
 
1018     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc3"), Mockito.any())).thenReturn(new OperationResult(200,
 
1019             TestResourceLoader.getTestResourceDataJson("/sync/ElasticSearch/docEntityFromElasticSearch3.json")));
 
1021     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc4"), Mockito.any())).thenReturn(new OperationResult(200,
 
1022             TestResourceLoader.getTestResourceDataJson("/sync/ElasticSearch/docEntityFromElasticSearch4.json")));
 
1024     Mockito.when(searchServiceAdapter.doGet(Matchers.contains("doc5"), Mockito.any())).thenReturn(new OperationResult(200,
 
1025             TestResourceLoader.getTestResourceDataJson("/sync/ElasticSearch/docEntityFromElasticSearch5.json")));
 
1027     Mockito.when(searchServiceAdapter.doPut(Matchers.contains("doc"), Mockito.any(), Mockito.any()))
 
1028             .thenReturn(new OperationResult(200, null));
 
1032     Mockito.when(searchServiceAdapter.doPut(Matchers.contains("doc"), Mockito.any(), Mockito.any()))
 
1033         .thenReturn(new OperationResult(200, null));
 
1035     OperationState syncState = cerSynchronizer.doSync();
 
1036     assertEquals(OperationState.OK, syncState);
 
1038     assertNotNull(cerSynchronizer.getStatReport(false));
 
1039     assertNotNull(cerSynchronizer.getStatReport(true));
 
1041     cerSynchronizer.clearCache();
 
1042     cerSynchronizer.shutdown();