summaryrefslogtreecommitdiffstats
path: root/src/test/java/org/openecomp/sparky/synchronizer
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/openecomp/sparky/synchronizer')
-rw-r--r--src/test/java/org/openecomp/sparky/synchronizer/AsyncRateControlTester.java245
-rw-r--r--src/test/java/org/openecomp/sparky/synchronizer/IndexDocumentTest.java107
-rw-r--r--src/test/java/org/openecomp/sparky/synchronizer/SyncControllerBuilder.java581
3 files changed, 933 insertions, 0 deletions
diff --git a/src/test/java/org/openecomp/sparky/synchronizer/AsyncRateControlTester.java b/src/test/java/org/openecomp/sparky/synchronizer/AsyncRateControlTester.java
new file mode 100644
index 0000000..e52995d
--- /dev/null
+++ b/src/test/java/org/openecomp/sparky/synchronizer/AsyncRateControlTester.java
@@ -0,0 +1,245 @@
+/*
+* ============LICENSE_START=======================================================
+* SPARKY (AAI UI service)
+* ================================================================================
+* Copyright © 2017 AT&T Intellectual Property.
+* Copyright © 2017 Amdocs
+* All rights reserved.
+* ================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*
+* ECOMP and OpenECOMP are trademarks
+* and service marks of AT&T Intellectual Property.
+*/
+
+package org.openecomp.sparky.synchronizer;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.openecomp.sparky.synchronizer.config.TaskProcessorConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Class AsyncRateControlTester.
+ */
+public class AsyncRateControlTester {
+
+ private static Logger logger = LoggerFactory.getLogger(AsyncRateControlTester.class);
+
+ private long startTimeInMs;
+
+ private AtomicInteger counter;
+
+ protected boolean syncInProgress;
+
+ /**
+ * Instantiates a new async rate control tester.
+ *
+ * @throws Exception the exception
+ */
+ public AsyncRateControlTester() throws Exception {
+
+ TaskProcessorConfig tpc = new TaskProcessorConfig();
+
+ tpc.setMaxConcurrentWorkers(1);
+ tpc.setTransactionRateControllerEnabled(false);
+ tpc.setNumSamplesPerThreadForRunningAverage(100);
+ tpc.setTargetTps(0.25);
+
+ tpc.setBytesHistogramLabel("bytesHistoLabel");
+ tpc.setBytesHistogramMaxYAxis(1000000);
+ tpc.setBytesHistogramNumBins(20);
+ tpc.setBytesHistogramNumDecimalPoints(2);
+
+ tpc.setQueueLengthHistogramLabel("queueHistoLabel");
+ tpc.setQueueLengthHistogramMaxYAxis(1000000);
+ tpc.setQueueLengthHistogramNumBins(20);
+ tpc.setQueueLengthHistogramNumDecimalPoints(2);
+
+ // ZeroDelayProcessor zdp = new ZeroDelayProcessor(LinkProcessorType.AAI, tpc);
+ // zdp.setStatCollector(this.aaiStatCollector);
+ /*
+ * zdp.setTaskProcessorConfig(tpc);
+ *
+ * this.resolver.registerProcessor(zdp); this.resolver.registerEventListener(this); this.counter
+ * = new AtomicInteger(0); this.syncInProgress = false; }
+ *
+ * @Override public void handleEvent(AsyncEvent event) {
+ *
+ * if(event.getEventType() == AsyncEventType.RESOLVER_IDLE) {
+ *
+ * if(syncInProgress) { long duration = System.currentTimeMillis() - startTimeInMs;
+ * System.out.println(getStatReport(duration)); syncInProgress = false; }
+ *
+ * // shutdown(); } else if(event.getEventType() == AsyncEventType.TRANSACTION_PROCESSED) {
+ *
+ * this.syncInProgress = true;
+ *
+ * ExternalResource resource = (ExternalResource)event.getPayload();
+ *
+ * //aaiStatCollector.updateCounters(resource);
+ *
+ * counter.incrementAndGet();
+ *
+ * }
+ *
+ * };
+ *
+ * public void shutdown() { resolver.shutdown(); }
+ *
+ * private int getCounterValue(AtomicInteger counter) {
+ *
+ * if(counter == null) { return 0; }
+ *
+ * return counter.get(); }
+ *
+ * private void addActiveInventoryStatReport(StringBuilder sb) {
+ *
+ * if(sb == null) { return; }
+ *
+ * sb.append("\n\n ").append(LinkProcessorType.AAI.name());
+ *
+ * sb.append("\n\n ").append("REST Operational Stats:");
+ *
+ * /* Map<String, AtomicInteger> procOperationalCounters =
+ * aaiStatCollector.getActiveInventoryOperationalCounters();
+ *
+ * if(procOperationalCounters != null) {
+ *
+ * int _1XX =
+ * getCounterValue(procOperationalCounters.get(ActiveInventoryStatCollector.GET_1XX)); int _2XX
+ * = getCounterValue(procOperationalCounters.get(ActiveInventoryStatCollector.GET_2XX)); int
+ * _3XX = getCounterValue(procOperationalCounters.get(ActiveInventoryStatCollector.GET_3XX));
+ * int _4XX =
+ * getCounterValue(procOperationalCounters.get(ActiveInventoryStatCollector.GET_4XX)); int _5XX
+ * = getCounterValue(procOperationalCounters.get(ActiveInventoryStatCollector.GET_5XX)); int
+ * _6XX = getCounterValue(procOperationalCounters.get(ActiveInventoryStatCollector.GET_6XX));
+ *
+ * sb.append("\n ").append(String.format(
+ * "%-12s 1XX: %-12d 2XX: %-12d 3XX: %-12d 4XX: %-12d 5XX: %-12d 6XX: %-12d ", HttpMethod.GET,
+ * _1XX, _2XX, _3XX, _4XX, _5XX, _6XX)); }
+ */
+
+ // sb.append("\n\n ").append("Entity Stats:");
+
+ /*
+ * sort entities, then sort nested op codes
+ */
+
+ /*
+ * TreeMap<String, HashMap<String, AtomicInteger>> activeInventoryEntitySortedTreeMap = new
+ * TreeMap<String, HashMap<String, AtomicInteger>>( new Comparator<String>() {
+ *
+ * public int compare(String o1, String o2) { return
+ * o1.toLowerCase().compareTo(o2.toLowerCase()); } });
+ */
+
+ /*
+ * activeInventoryEntitySortedTreeMap.putAll(aaiStatCollector.getActiveInventoryEntityCounters()
+ * );
+ *
+ * for(String counterEntityKey : activeInventoryEntitySortedTreeMap.keySet()) {
+ *
+ * HashMap<String, AtomicInteger> entityCounters =
+ * activeInventoryEntitySortedTreeMap.get(counterEntityKey);
+ *
+ * AtomicInteger total = entityCounters.get(ActiveInventoryStatCollector.TOTAL); AtomicInteger
+ * found = entityCounters.get(ActiveInventoryStatCollector.FOUND); AtomicInteger notFound =
+ * entityCounters.get(ActiveInventoryStatCollector.NOT_FOUND); AtomicInteger error =
+ * entityCounters.get(ActiveInventoryStatCollector.ERROR);
+ *
+ * int totalValue = (total == null) ? 0 : total.get(); int foundValue = (found == null) ? 0 :
+ * found.get(); int notFoundValue = (found == null) ? 0 : notFound.get(); int errorValue =
+ * (error == null) ? 0 : error.get();
+ *
+ * sb.append("\n ").append(String.format(
+ * "%-30s TOTAL: %-12d FOUND: %-12d NOT_FOUND: %-12d ERROR: %-12d", counterEntityKey,
+ * totalValue, foundValue, notFoundValue, errorValue));
+ *
+ * }
+ */
+
+ // sb.append("\n\n ").append("Task Processor Stats:");
+
+ // int totalRetries =
+ // getCounterValue(procOperationalCounters.get(ActiveInventoryStatCollector.NUM_RETRIES));
+ // int currentQueueLength = resolver.getCurrentQueueLength(LinkProcessorType.AAI.name());
+
+ /*
+ * sb.append("\n "
+ * ).append(resolver.getProcessorTaskAgeStats(LinkProcessorType.AAI.name(), false, " "
+ * )); sb.append("\n "
+ * ).append(resolver.getProcessorResponseStats(LinkProcessorType.AAI.name(), false, " "
+ * )); sb.append("\n")
+ * .append(resolver.getQueueItemLengthHistogram(LinkProcessorType.AAI.name(), false,
+ * " ")); sb.append("\n")
+ * .append(resolver.getResponseByteSizeHistogram(LinkProcessorType.AAI.name(), false,
+ * " ")); sb.append("\n "
+ * ).append("TPS=").append(resolver.getTPS(LinkProcessorType.AAI.name())).append(", NumRetries="
+ * ).append(totalRetries) .append(", CurrentQueueLength=").append(currentQueueLength);
+ */
+ /*
+ * }
+ *
+ * private String getStatReport(long syncOpTimeInMs) {
+ *
+ * StringBuilder sb = new StringBuilder(128);
+ *
+ * sb.append("\n").append("Async Resolver Statistics: ( Sync Operation Duration = " +
+ * NodeUtils.getDurationBreakdown(syncOpTimeInMs) + " )");
+ *
+ * addActiveInventoryStatReport(sb);
+ *
+ * return sb.toString();
+ *
+ * }
+ *
+ * public void loadResolver(int numItems) {
+ *
+ * if(numItems <= 0) { return; }
+ *
+ * startTimeInMs = System.currentTimeMillis();
+ *
+ * DummyPerformanceTask dpt = null;
+ *
+ * for(int i = 0; i < numItems; i++) {
+ *
+ * dpt = new DummyPerformanceTask(); dpt.setLinkProcessorType(LinkProcessorType.AAI);
+ * dpt.setResourceEntityType("DummyPerformanceEntity"); dpt.setOperationType(HttpMethod.GET);
+ *
+ * resolver.resolve(dpt);
+ *
+ * }
+ *
+ * }
+ *
+ * public static void main(String[] args) throws Exception {
+ *
+ * System.getProperties().setProperty("AJSC_HOME", "x:\\aaiui\\");
+ *
+ * System.out.println("Available processors = " + Runtime.getRuntime().availableProcessors());
+ *
+ * AsyncRateControlTester arcTester = new AsyncRateControlTester();
+ *
+ * // give us time to instrument the jvm with jvisualvm // Thread.sleep(30000);
+ * Thread.sleep(5000);
+ *
+ * arcTester.loadResolver(1000);
+ *
+ *
+ * }
+ */
+ }
+}
diff --git a/src/test/java/org/openecomp/sparky/synchronizer/IndexDocumentTest.java b/src/test/java/org/openecomp/sparky/synchronizer/IndexDocumentTest.java
new file mode 100644
index 0000000..0f03f81
--- /dev/null
+++ b/src/test/java/org/openecomp/sparky/synchronizer/IndexDocumentTest.java
@@ -0,0 +1,107 @@
+/*
+* ============LICENSE_START=======================================================
+* SPARKY (AAI UI service)
+* ================================================================================
+* Copyright © 2017 AT&T Intellectual Property.
+* Copyright © 2017 Amdocs
+* All rights reserved.
+* ================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*
+* ECOMP and OpenECOMP are trademarks
+* and service marks of AT&T Intellectual Property.
+*/
+
+package org.openecomp.sparky.synchronizer;
+
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.openecomp.sparky.config.oxm.OxmModelLoader;
+import org.openecomp.sparky.util.LogValidator;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import ch.qos.logback.classic.Level;
+
+
+/**
+ * The Class IndexDocumentTest.
+ */
+@RunWith(PowerMockRunner.class)
+public class IndexDocumentTest {
+
+ private LogValidator logValidator;
+ private OxmModelLoader oxmModelLoader;
+
+ /**
+ * Inits the.
+ *
+ * @throws Exception the exception
+ */
+ @Before
+ public void init() throws Exception {
+ logValidator = new LogValidator();
+ logValidator.initializeLogger(Level.WARN);
+ oxmModelLoader = Mockito.mock(OxmModelLoader.class);
+ }
+
+ /**
+ * Validate basic construction.
+ *
+ * @throws NoSuchAlgorithmException the no such algorithm exception
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ @Test
+ public void validateBasicConstruction() throws NoSuchAlgorithmException, IOException {
+
+ /*
+ * String testDate = "2016-12-21 00:00:00.00"; OxmEntityDescriptor d = new
+ * OxmEntityDescriptor(); d.setEntityName("service-instance");
+ * d.setPrimaryKeyAttributeName(Arrays.asList("service-instance-id"));
+ * d.setSearchableAttributes(Arrays.asList("service-instance-id"));
+ *
+ * Mockito.when(oxmModelLoader.getEntityDescriptor(anyString())).thenReturn(d);
+ *
+ * SearchableEntity id1 = new SearchableEntity(oxmModelLoader);
+ *
+ * id1.setEntityType("service-instance"); id1.setEntityPrimaryKeyValue("DUP2");
+ * id1.addSearchTagWithIdx("DUP2", String.valueOf(1));
+ *
+ * id1.deriveFields(); id1.setEntityTimeStamp(testDate); ObjectMapper mapper = new
+ * ObjectMapper();
+ *
+ * String objStr = id1.getIndexDocumentJson();
+ *
+ * JsonNode indexDocNode = mapper.readTree(objStr);
+ *
+ * ///
+ *
+ * ObjectNode expectedNode = mapper.createObjectNode(); expectedNode.put("entityType",
+ * "service-instance"); expectedNode.put("entityPrimaryKeyValue", "DUP2");
+ * expectedNode.put("searchTagIDs", "1"); expectedNode.put("searchTags", "DUP2");
+ * expectedNode.put("crossEntityReferenceValues", ""); expectedNode.put("lastmodTimestamp",
+ * testDate);
+ *
+ * assertTrue(NodeUtils.isEqual(expectedNode, indexDocNode)); // Test if the timestamp is
+ * calculated when the node is being created
+ * assertTrue(NodeUtils.getNodeFieldAsText(indexDocNode, "lastmodTimestamp") != null);
+ */
+
+ }
+
+}
diff --git a/src/test/java/org/openecomp/sparky/synchronizer/SyncControllerBuilder.java b/src/test/java/org/openecomp/sparky/synchronizer/SyncControllerBuilder.java
new file mode 100644
index 0000000..45c272b
--- /dev/null
+++ b/src/test/java/org/openecomp/sparky/synchronizer/SyncControllerBuilder.java
@@ -0,0 +1,581 @@
+/*
+* ============LICENSE_START=======================================================
+* SPARKY (inventory UI service)
+* ================================================================================
+* Copyright © 2017 AT&T Intellectual Property.
+* Copyright © 2017 Amdocs
+* All rights reserved.
+* ================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*
+* ECOMP and OpenECOMP are trademarks
+* and service marks of AT&T Intellectual Property.
+*/
+
+package org.openecomp.sparky.synchronizer;
+
+import org.openecomp.sparky.dal.aai.ActiveInventoryAdapter;
+import org.openecomp.sparky.dal.aai.config.ActiveInventoryConfig;
+import org.openecomp.sparky.dal.cache.InMemoryEntityCache;
+import org.openecomp.sparky.dal.cache.PersistentEntityCache;
+import org.openecomp.sparky.dal.elasticsearch.ElasticSearchAdapter;
+import org.openecomp.sparky.dal.elasticsearch.ElasticSearchDataProvider;
+import org.openecomp.sparky.dal.elasticsearch.config.ElasticSearchConfig;
+import org.openecomp.sparky.dal.rest.OperationResult;
+import org.openecomp.sparky.dal.rest.RestClientBuilder;
+import org.openecomp.sparky.dal.rest.RestfulDataAccessor;
+import org.openecomp.sparky.synchronizer.SyncController.SyncActions;
+import org.openecomp.sparky.synchronizer.enumeration.SynchronizerState;
+import org.slf4j.LoggerFactory;
+
+import ch.qos.logback.classic.Level;
+
+/**
+ * The Class SyncControllerBuilder.
+ */
+public class SyncControllerBuilder {
+
+ /**
+ * Do master entity sync.
+ */
+ public void doMasterEntitySync() {
+
+ }
+
+ /**
+ * Test elastic search update api.
+ */
+ public void testElasticSearchUpdateApi() {
+ try {
+
+ RestClientBuilder clientBuilder = new RestClientBuilder();
+ clientBuilder.setUseHttps(false);
+
+ RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
+
+ ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
+ ElasticSearchDataProvider elasticSearchDataProvider =
+ new ElasticSearchAdapter(nonCachingRestProvider, esConfig);
+
+ String payload =
+ "{ \"entityType\": \"complex\", \"pkey\": \"MORRISTOWN0075\", \"location\": { \"lat\": \"40.793414\", \"lon\": \"-74.480432\" }, \"selfLink\": \"https://aai-int1.test.att.com:8443/aai/v8/cloud-infrastructure/complexes/complex/MORRISTOWN0075?nodes-only\" }\n";
+
+ String updateRequest = elasticSearchDataProvider.buildBulkImportOperationRequest(
+ "topographysearchindex-localhost", "default",
+ "1e2a6ba9e09d5e1bcb016b3a0b8d50273b42828e47957bd2a2f3ce1854744f5f", "6", payload);
+
+ OperationResult or =
+ elasticSearchDataProvider.doBulkOperation("http://localhost:9200/_bulk", updateRequest);
+
+ System.out.println(or.toString());
+
+ /*
+ * String BULK_IMPORT_INDEX_TEMPLATE =
+ * "{\"index\":{\"_index\":\"%s\",\"_type\":\"%s\",\"_id\":\"%s\", \"_version\":\"%s\"}}\n";
+ *
+ * StringBuilder updateRequestPayload = new StringBuilder(128);
+ * updateRequestPayload.append(String.format(BULK_IMPORT_INDEX_TEMPLATE,
+ * "topographysearchindex-localhost", "default",
+ * "1e2a6ba9e09d5e1bcb016b3a0b8d50273b42828e47957bd2a2f3ce1854744f5f", "5"));
+ *
+ *
+ * updateRequestPayload.append(payload);
+ *
+ * OperationResult or = nonCachingRestProvider.doRestfulOperation(HttpMethod.PUT,
+ * "http://localhost:9200/_bulk", updateRequestPayload.toString(),
+ * RestfulDataAccessor.APPLICATION_X_WWW_FORM_URL_ENCODED,
+ * RestfulDataAccessor.APPLICATION_JSON);
+ */
+
+
+
+ } catch (Exception exc) {
+ exc.printStackTrace();
+ System.out.println("Error: failed to sync with message = " + exc.getMessage());
+ }
+ }
+
+ /**
+ * Do historical entity sync.
+ */
+ public void doHistoricalEntitySync() {
+ try {
+ SyncController syncController = new SyncController("historicalEntityTestController");
+
+ ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new RestClientBuilder());
+ aaiAdapter.setCacheEnabled(false);
+
+ RestClientBuilder clientBuilder = new RestClientBuilder();
+ clientBuilder.setUseHttps(false);
+
+ RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
+
+ ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
+
+ ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
+
+
+ IndexIntegrityValidator entityCounterHistoryValidator =
+ new IndexIntegrityValidator(nonCachingRestProvider, esConfig.getEntityCountHistoryIndex(),
+ esConfig.getType(), esConfig.getIpAddress(), esConfig.getHttpPort(),
+ esConfig.buildElasticSearchEntityCountHistoryTableConfig());
+
+ syncController.registerIndexValidator(entityCounterHistoryValidator);
+
+
+ //////
+
+
+
+ HistoricalEntitySummarizer historicalSummarizer =
+ new HistoricalEntitySummarizer(esConfig.getEntityCountHistoryIndex());
+ historicalSummarizer.setAaiDataProvider(aaiAdapter);
+ historicalSummarizer.setEsDataProvider(esAdapter);
+ syncController.registerEntitySynchronizer(historicalSummarizer);
+
+ ////
+
+ /*
+ * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
+ * RestClientBuilder());
+ *
+ * entitySearchIndexValidator.setIndexName("topographysearchindex-localhost");
+ * entitySearchIndexValidator.setIndexType("default");
+ * entitySearchIndexValidator.setIndexSettings("");
+ * entitySearchIndexValidator.setIndexSettings("");
+ *
+ * syncController.registerIndexValidator(entitySearchIndexValidator);
+ */
+
+ ////
+
+ /*
+ * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider,
+ * "topographysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000);
+ */
+
+ // syncController.registerIndexCleaner(index1Cleaner);
+
+ ///
+
+ for (int x = 0; x < 10; x++) {
+
+ syncController.performAction(SyncActions.SYNCHRONIZE);
+
+ while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
+
+ System.out.println("sync controller state = " + syncController.getState());
+
+ Thread.sleep(1000);
+ }
+ }
+
+ syncController.shutdown();
+
+ } catch (Exception exc) {
+ exc.printStackTrace();
+ System.out.println("Error: failed to sync with message = " + exc.getMessage());
+ }
+ }
+
+
+
+ /**
+ * Do geo entity sync.
+ */
+ public void doGeoEntitySync() {
+ try {
+
+ ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new RestClientBuilder());
+
+ aaiAdapter.setCacheEnabled(true);
+
+ InMemoryEntityCache aaiInMemoryCache = new InMemoryEntityCache();
+ aaiAdapter.setEntityCache(aaiInMemoryCache);
+
+ /*
+ * PersistentEntityCache aaiDiskCache = new PersistentEntityCache();
+ * aaiAdapter.setEntityCache(aaiDiskCache);
+ */
+
+ RestClientBuilder clientBuilder = new RestClientBuilder();
+ clientBuilder.setUseHttps(false);
+
+ RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
+ ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
+
+ ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
+
+ IndexIntegrityValidator entitySearchIndexValidator =
+ new IndexIntegrityValidator(nonCachingRestProvider, esConfig.getIndexName(),
+ esConfig.getType(), esConfig.getIpAddress(), esConfig.getHttpPort(),
+ esConfig.buildElasticSearchTableConfig());
+
+ SyncController syncController = new SyncController("geoEntitySyncTestController");
+ syncController.registerIndexValidator(entitySearchIndexValidator);
+
+
+ //////
+
+ GeoSynchronizer geoSync = new GeoSynchronizer("topographysearchindex-localhost");
+ geoSync.setAaiDataProvider(aaiAdapter);
+ geoSync.setEsDataProvider(esAdapter);
+ syncController.registerEntitySynchronizer(geoSync);
+
+ ////
+
+ /*
+ * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
+ * RestClientBuilder());
+ *
+ * entitySearchIndexValidator.setIndexName("topographysearchindex-localhost");
+ * entitySearchIndexValidator.setIndexType("default");
+ * entitySearchIndexValidator.setIndexSettings("");
+ * entitySearchIndexValidator.setIndexSettings("");
+ *
+ * syncController.registerIndexValidator(entitySearchIndexValidator);
+ */
+
+ ////
+
+ /*
+ * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider,
+ * "topographysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000);
+ */
+
+ // syncController.registerIndexCleaner(index1Cleaner);
+
+ ///
+
+ syncController.performAction(SyncActions.SYNCHRONIZE);
+
+ while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
+ Thread.sleep(1000);
+ }
+
+ syncController.shutdown();
+
+ } catch (Exception exc) {
+ exc.printStackTrace();
+ System.out.println("Error: failed to sync with message = " + exc.getMessage());
+ }
+ }
+
+ /**
+ * Do searchable entitysync.
+ */
+ public void doSearchableEntitysync() {
+ try {
+
+
+ ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new RestClientBuilder());
+
+ aaiAdapter.setCacheEnabled(true);
+
+ /*
+ * InMemoryEntityCache aaiInMemoryCache = new InMemoryEntityCache();
+ * aaiAdapter.setEntityCache(aaiInMemoryCache);
+ */
+
+ PersistentEntityCache aaiDiskCache = new PersistentEntityCache();
+ aaiAdapter.setEntityCache(aaiDiskCache);
+
+ RestClientBuilder clientBuilder = new RestClientBuilder();
+ clientBuilder.setUseHttps(false);
+
+ RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
+ ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
+
+ ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
+
+ //////
+
+ SyncController syncController = new SyncController("searchtableEntityTestController");
+
+ SearchableEntitySynchronizer ses =
+ new SearchableEntitySynchronizer("entitysearchindex-localhost");
+ ses.setAaiDataProvider(aaiAdapter);
+ ses.setEsDataProvider(esAdapter);
+ syncController.registerEntitySynchronizer(ses);
+
+ ////
+
+ /*
+ * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
+ * RestClientBuilder());
+ *
+ * entitySearchIndexValidator.setIndexName("esi-sync2-localhost");
+ * entitySearchIndexValidator.setIndexType("default");
+ *
+ * syncController.registerIndexValidator(entitySearchIndexValidator);
+ */
+
+ ////
+
+ /*
+ * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider,
+ * "entitysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000);
+ *
+ * syncController.registerIndexCleaner(index1Cleaner);
+ */
+
+ ///
+
+ syncController.performAction(SyncActions.SYNCHRONIZE);
+
+ while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
+ Thread.sleep(1000);
+ }
+
+ syncController.shutdown();
+
+ } catch (Exception exc) {
+ exc.printStackTrace();
+ System.out.println("Error: failed to sync with message = " + exc.getMessage());
+ }
+ }
+
+ /**
+ * Do cross entity reference sync.
+ */
+ public void doCrossEntityReferenceSync() {
+ try {
+
+
+ ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new RestClientBuilder());
+
+ aaiAdapter.setCacheEnabled(true);
+
+ /*
+ * InMemoryEntityCache aaiInMemoryCache = new InMemoryEntityCache();
+ * aaiAdapter.setEntityCache(aaiInMemoryCache);
+ */
+
+ PersistentEntityCache aaiDiskCache = new PersistentEntityCache();
+ aaiAdapter.setEntityCache(aaiDiskCache);
+
+ RestClientBuilder clientBuilder = new RestClientBuilder();
+ clientBuilder.setUseHttps(false);
+
+ RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
+ ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
+
+ ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
+
+ SyncController syncController = new SyncController("crossEntityRefSyncController");
+
+ CrossEntityReferenceSynchronizer cers =
+ new CrossEntityReferenceSynchronizer("entitysearchindex-localhost", ActiveInventoryConfig.getConfig());
+ cers.setAaiDataProvider(aaiAdapter);
+ cers.setEsDataProvider(esAdapter);
+ syncController.registerEntitySynchronizer(cers);
+
+ SearchableEntitySynchronizer ses =
+ new SearchableEntitySynchronizer("entitysearchindex-localhost");
+ ses.setAaiDataProvider(aaiAdapter);
+ ses.setEsDataProvider(esAdapter);
+ syncController.registerEntitySynchronizer(ses);
+
+ ElasticSearchConfig config = ElasticSearchConfig.getConfig();
+
+ IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(
+ nonCachingRestProvider, config.getIndexName(), config.getType(), config.getIpAddress(),
+ config.getHttpPort(), config.buildElasticSearchTableConfig());
+
+ syncController.registerIndexValidator(entitySearchIndexValidator);
+
+ ////
+
+ IndexCleaner index1Cleaner =
+ new ElasticSearchIndexCleaner(nonCachingRestProvider, config.getIndexName(),
+ config.getType(), config.getIpAddress(), config.getHttpPort(), 5, 5000);
+
+ syncController.registerIndexCleaner(index1Cleaner);
+
+ ///
+
+ syncController.performAction(SyncActions.SYNCHRONIZE);
+
+ while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
+ Thread.sleep(1000);
+ }
+
+ syncController.shutdown();
+
+ } catch (Exception exc) {
+ exc.printStackTrace();
+ System.out.println("Error: Failed to sync with message = " + exc.getMessage());
+ }
+ }
+
+ /**
+ * Do suggestion entitysync.
+ */
+ public void doSuggestionEntitySync() {
+ try {
+
+
+ ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new RestClientBuilder());
+
+ aaiAdapter.setCacheEnabled(true);
+
+ /*
+ * InMemoryEntityCache aaiInMemoryCache = new InMemoryEntityCache();
+ * aaiAdapter.setEntityCache(aaiInMemoryCache);
+ */
+
+ PersistentEntityCache aaiDiskCache = new PersistentEntityCache();
+ aaiAdapter.setEntityCache(aaiDiskCache);
+
+ RestClientBuilder clientBuilder = new RestClientBuilder();
+ clientBuilder.setUseHttps(false);
+
+ RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
+ ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
+
+ ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
+
+ SyncController syncController = new SyncController("suggestionEntityTestController");
+
+ AutosuggestionSynchronizer ses =
+ new AutosuggestionSynchronizer("suggestionentityindex-localhost");
+ ses.setAaiDataProvider(aaiAdapter);
+ ses.setEsDataProvider(esAdapter);
+ syncController.registerEntitySynchronizer(ses);
+
+ syncController.performAction(SyncActions.SYNCHRONIZE);
+
+ while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
+ Thread.sleep(1000);
+ }
+
+ syncController.shutdown();
+
+ } catch (Exception exc) {
+ exc.printStackTrace();
+ System.out.println("Error: failed to sync with message = " + exc.getMessage());
+ }
+ }
+
+ /*
+ * Do no op sync.
+ */
+ public void doNoOpSync() {
+ try {
+ SyncController syncController = new SyncController("noopSyncTestController");
+
+ /*
+ * ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new RestClientBuilder());
+ *
+ * aaiAdapter.setCacheEnabled(true);
+ *
+ * /*InMemoryEntityCache aaiInMemoryCache = new InMemoryEntityCache();
+ * aaiAdapter.setEntityCache(aaiInMemoryCache);
+ */
+
+ /*
+ * PersistentEntityCache aaiDiskCache = new PersistentEntityCache();
+ * aaiAdapter.setEntityCache(aaiDiskCache);
+ *
+ * ElasticSearchConfig config = ElasticSearchConfig.getConfig(); OXMModelLoader loader =
+ * OXMModelLoader.getInstance(); SyncAdapter syncAdapter = new SyncAdapter(new
+ * RestClientBuilder(), config, loader);
+ *
+ * //////
+ *
+ * SearchableEntitySynchronizer ses = new SearchableEntitySynchronizer();
+ * ses.setAaiDataProvider(aaiAdapter); ses.setEsDataProvider(syncAdapter);
+ * syncController.registerEntitySynchronizer(ses);
+ *
+ * ////
+ *
+ * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
+ * RestClientBuilder());
+ *
+ * entitySearchIndexValidator.setIndexName("esi-sync2-localhost");
+ * entitySearchIndexValidator.setIndexType("default");
+ * entitySearchIndexValidator.setIndexSettings("");
+ * entitySearchIndexValidator.setIndexSettings("");
+ *
+ * syncController.registerIndexValidator(entitySearchIndexValidator);
+ *
+ * ////
+ *
+ * ElasticSearchEntityPurger p1 = new ElasticSearchEntityPurger(new RestClientBuilder());
+ * p1.setIndexName("esi-blal-blah");
+ *
+ * ElasticSearchEntityPurger p2 = new ElasticSearchEntityPurger(new RestClientBuilder());
+ * p2.setIndexName("esi-topo-blah");
+ */
+ ///
+
+ syncController.performAction(SyncActions.SYNCHRONIZE);
+
+ while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
+ Thread.sleep(1000);
+ }
+
+ syncController.shutdown();
+
+ } catch (Exception exc) {
+ System.out.println("Error: failed to sync with message = " + exc.getMessage());
+ }
+ }
+
+
+ /**
+ * The main method.
+ *
+ * @param args the arguments
+ */
+ public static void main(String[] args) {
+ boolean runSearchableEntitySync = false;
+ boolean runGeoEntitySync = true;
+
+ System.setProperty("AJSC_HOME", "e:\\dev");
+ // System.getProperties().setProperty("AJSC_HOME",
+ // "c:\\rpo\\tier-support-ui\\target\\swm\\package\\nix\\"
+ // + "dist_files\\opt\\app\\ajsc-tier-support-ui");
+ System.setProperty("AJSC_HOME", "d:\\AAI\\tier_support_ui\\tier-support-ui\\target\\swm\\package\\nix\\dist_files\\appl\\inventory-ui-service\\1.0-SNAPSHOT");
+
+ ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory
+ .getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME);
+ // root.detachAndStopAllAppenders();
+ // logger = new CaptureLoggerAppender();
+ root.setLevel(Level.INFO);
+ // root.addAppender(logger);
+
+
+ SyncControllerBuilder syncBuilder = new SyncControllerBuilder();
+
+ /*
+ * if (runSearchableEntitySync) syncBuilder.doSearchableEntitysync();
+ */
+
+ //syncBuilder.doSearchableEntitysync();
+ // syncBuilder.doCrossEntityReferenceSync();
+ // syncBuilder.doHistoricalEntitySync();
+ // syncBuilder.doGeoEntitySync();
+ syncBuilder.doSuggestionEntitySync();
+
+ // syncBuilder.testElasticSearchUpdateAPI();
+
+ /*
+ * if (runGeoEntitySync) { syncBuilder.doGeoEntitySync(); }
+ */
+
+
+
+ }
+}