From 4c416b0e0059370184f77991481f61d779eccd80 Mon Sep 17 00:00:00 2001 From: "Attaranasl, Salma (sa669h)" Date: Thu, 8 Mar 2018 11:58:02 -0500 Subject: added Spike event Policy to read from Spike Event and save the index on Search Data removed the extra header on a file: Issue-ID: AAI-846 Change-Id: I5fa66b5c6b0b6b2f645315221fbf2eb1461c5ca7 Signed-off-by: Attaranasl, Salma --- .../policy/SpikeEntityEventPolicyStubbed.java | 34 ++++++++ .../policy/SpikeEntityEventPolicyTest.java | 90 ++++++++++++++++++++++ src/test/resources/spike_event.json | 23 ++++++ 3 files changed, 147 insertions(+) create mode 100644 src/test/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicyStubbed.java create mode 100644 src/test/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicyTest.java create mode 100644 src/test/resources/spike_event.json (limited to 'src/test') diff --git a/src/test/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicyStubbed.java b/src/test/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicyStubbed.java new file mode 100644 index 0000000..7ba4f06 --- /dev/null +++ b/src/test/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicyStubbed.java @@ -0,0 +1,34 @@ +package org.onap.aai.datarouter.policy; + +import java.io.FileNotFoundException; + +import org.onap.aai.datarouter.entity.DocumentStoreDataEntity; + +public class SpikeEntityEventPolicyStubbed extends SpikeEntityEventPolicy { + + + public SpikeEntityEventPolicyStubbed(SpikeEntityEventPolicyConfig config) throws FileNotFoundException { + super(config); + + } + + protected void handleSearchServiceOperation(DocumentStoreDataEntity eventEntity, String action, String index) { + //Stub out the actual call to Search Data service and instead store/update documents in memory + try { + switch (action.toLowerCase()) { + case "create": + InMemorySearchDatastore.put(eventEntity.getId(), eventEntity.getAsJson()); // they are executed if variable == c1 + break; + case "update": + InMemorySearchDatastore.put(eventEntity.getId(), eventEntity.getAsJson()); // they are executed if variable == c1 + break; + case "delete": + InMemorySearchDatastore.remove(eventEntity.getId()); // they are executed if variable == c1 + break; + default: + break; + } + } catch (Exception ex) { + } + } +} diff --git a/src/test/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicyTest.java b/src/test/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicyTest.java new file mode 100644 index 0000000..fd0d726 --- /dev/null +++ b/src/test/java/org/onap/aai/datarouter/policy/SpikeEntityEventPolicyTest.java @@ -0,0 +1,90 @@ +package org.onap.aai.datarouter.policy; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.anyString; + +import java.io.File; +import java.io.FileInputStream; + +import org.apache.camel.Exchange; +import org.apache.camel.Message; +import org.apache.commons.io.IOUtils; +import org.junit.Before; +import org.junit.Test; +import org.onap.aai.datarouter.util.NodeUtils; +import org.onap.aai.datarouter.util.SearchServiceAgent; +import org.powermock.api.mockito.PowerMockito; + + + +public class SpikeEntityEventPolicyTest { + SpikeEntityEventPolicy policy; + String eventJson; + + @SuppressWarnings("unchecked") + @Before + public void init() throws Exception { + SpikeEntityEventPolicyConfig config = PowerMockito.mock(SpikeEntityEventPolicyConfig.class); + PowerMockito.when(config.getSearchKeystorePwd()).thenReturn("password"); + PowerMockito.when(config.getSourceDomain()).thenReturn("JUNIT"); + + + SearchServiceAgent searchServiceAgent = PowerMockito.mock(SearchServiceAgent.class); + PowerMockito.whenNew(SearchServiceAgent.class).withAnyArguments() + .thenReturn(searchServiceAgent); + + + policy = new SpikeEntityEventPolicyStubbed(config); + FileInputStream event = new FileInputStream(new File("src/test/resources/spike_event.json")); + eventJson = IOUtils.toString(event, "UTF-8"); + + } + + @Test + public void testProcess_success() throws Exception { + policy.process(getExchangeEvent("12345", "create", "generic-vnf")); + policy.process(getExchangeEvent("23456", "create", "generic-vnf")); + + assertNotNull( + InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("generic-vnf/12345"))); + assertNotNull( + InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("generic-vnf/23456"))); + + + policy.process(getExchangeEvent("23456", "delete", "generic-vnf")); + assertNull(InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("23456"))); + } + @Test + public void testProcess_fail() throws Exception { + policy.process(getExchangeEvent("12345", "create", "NotValid")); + assertNull( + InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("NotValid/12345"))); + + policy.process(getExchangeEvent("", "create", "generic-vnf")); + assertNull( + InMemorySearchDatastore.get(NodeUtils.generateUniqueShaDigest("generic-vnf/"))); + + } + + + private Exchange getExchangeEvent(String key, String action, String type) { + Object obj = eventJson.replace("$KEY", key).replace("$ACTION", action).replace("$TYPE", type); + Exchange exchange = PowerMockito.mock(Exchange.class); + Message inMessage = PowerMockito.mock(Message.class); + Message outMessage = PowerMockito.mock(Message.class); + PowerMockito.when(exchange.getIn()).thenReturn(inMessage); + PowerMockito.when(inMessage.getBody()).thenReturn(obj); + + PowerMockito.when(exchange.getOut()).thenReturn(outMessage); + PowerMockito.doNothing().when(outMessage).setBody(anyObject()); + PowerMockito.doNothing().when(outMessage).setHeader(anyString(), anyObject()); + + return exchange; + + } + + + +} diff --git a/src/test/resources/spike_event.json b/src/test/resources/spike_event.json new file mode 100644 index 0000000..0af1127 --- /dev/null +++ b/src/test/resources/spike_event.json @@ -0,0 +1,23 @@ +{"operation": "$ACTION", + "transaction-id": "ae83cf91-b73f-4759-b973-58c4192cea4c", + "timestamp": 1499460851548, + "vertex": { + "key": "$KEY", + "schema-version": "v10", + "type": "$TYPE", + "properties": { + "vnf-id": "GenericVNFIdBpCNtULbEw9", + "in-maint": "false", + "heat-stack-id": "GenericVNFIdBpCNtULbEw1-12345-678-", + "prov-status": "junk", + "equipment-role": "ASBG", + "ipv4-oam-address": "5.6.7.8", + "vnf-name": "GenericVNFIdBpCNtULbEw9", + "vnf-type": "asbg", + "is-closed-loop-disabled": "false", + "orchestration-status": "Running", + "aai-node-type": "generic-vnf" + } + }, + "result": "SUCCESS" +} -- cgit 1.2.3-korg