From da727fa247fd97a9dc5cbf010210a6dbc307bba9 Mon Sep 17 00:00:00 2001 From: liamfallon Date: Thu, 15 Nov 2018 22:07:45 +0000 Subject: Fix timing and move tests The timings on the REST test are too short and time out on ONAP Jenkins The tests of the Apex service and Apex model upgrade are not benchmark tests so are moved to Integration. Issue-ID: POLICY-1251 Change-Id: I2672d01042b33fe0cce5223005295e3b1aa26e7a Signed-off-by: liamfallon --- .../engine/runtime/ApexServiceModelUpdateTest.java | 362 ---------------- .../benchmark/engine/runtime/ApexServiceTest.java | 477 --------------------- .../performance/benchmark/engine/utils/Utils.java | 55 --- 3 files changed, 894 deletions(-) delete mode 100644 testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/runtime/ApexServiceModelUpdateTest.java delete mode 100644 testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/runtime/ApexServiceTest.java delete mode 100644 testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/utils/Utils.java (limited to 'testsuites/performance') diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/runtime/ApexServiceModelUpdateTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/runtime/ApexServiceModelUpdateTest.java deleted file mode 100644 index cf930150e..000000000 --- a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/runtime/ApexServiceModelUpdateTest.java +++ /dev/null @@ -1,362 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.testsuites.performance.benchmark.engine.runtime; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities; -import org.onap.policy.apex.model.basicmodel.concepts.ApexException; -import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; -import org.onap.policy.apex.model.basicmodel.service.ModelService; -import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; -import org.onap.policy.apex.plugins.executor.mvel.MvelExecutorParameters; -import org.onap.policy.apex.service.engine.event.ApexEvent; -import org.onap.policy.apex.service.engine.event.ApexEventException; -import org.onap.policy.apex.service.engine.runtime.ApexEventListener; -import org.onap.policy.apex.service.engine.runtime.EngineService; -import org.onap.policy.apex.service.engine.runtime.EngineServiceEventInterface; -import org.onap.policy.apex.service.engine.runtime.impl.EngineServiceImpl; -import org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters; -import org.onap.policy.apex.testsuites.integration.common.model.SampleDomainModelFactory; -import org.onap.policy.apex.testsuites.performance.benchmark.engine.utils.Utils; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * The Class ApexServiceTest. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ApexServiceModelUpdateTest { - // Logger for this class - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexServiceModelUpdateTest.class); - - private final AxArtifactKey engineServiceKey = new AxArtifactKey("Machine-1_process-1_engine-1", "0.0.0"); - private final EngineServiceParameters parameters = new EngineServiceParameters(); - private EngineService service = null; - private TestListener listener = null; - private int actionEventsReceived = 0; - - private AxPolicyModel apexSamplePolicyModel = null; - private String apexSampleModelString; - - /** - * Sets up the test by creating an engine and reading in the test policy. - * - * @throws ApexException if something goes wrong - * @throws IOException on IO exceptions - */ - @Before - public void setUp() throws ApexException, IOException { - // create engine with 3 threads - parameters.setInstanceCount(3); - parameters.setName(engineServiceKey.getName()); - parameters.setVersion(engineServiceKey.getVersion()); - parameters.setId(100); - parameters.getEngineParameters().getExecutorParameterMap().put("MVEL", new MvelExecutorParameters()); - service = EngineServiceImpl.create(parameters); - - LOGGER.debug("Running TestApexEngine. . ."); - - apexSamplePolicyModel = new SampleDomainModelFactory().getSamplePolicyModel("MVEL"); - assertNotNull(apexSamplePolicyModel); - - apexSampleModelString = Utils.getModelString(apexSamplePolicyModel); - - // create engine - listener = new TestListener(); - service.registerActionListener("MyListener", listener); - } - - /** - * Tear down the the test infrastructure. - * - * @throws ApexException if there is an error - */ - @After - public void tearDown() throws Exception { - if (service != null) { - service.stop(); - } - service = null; - } - - /** - * Test start with no model. - */ - @Test - public void testNoModelStart() { - try { - service.startAll(); - fail("Engine should not start with no model"); - } catch (final Exception e) { - e.printStackTrace(); - assertEquals("start()<-Machine-1_process-1_engine-1-0:0.0.0,STOPPED, cannot start engine, " - + "engine has not been initialized, its model is not loaded", e.getMessage()); - } - } - - /** - * Test model update with string model without force. - * - * @throws ApexException if there is an error - */ - @Test - public void testModelUpdateStringNewNoForce() throws ApexException { - service.updateModel(parameters.getEngineKey(), apexSampleModelString, false); - service.startAll(); - assertEquals(apexSamplePolicyModel.getKey(), ModelService.getModel(AxPolicyModel.class).getKey()); - } - - /** - * Test model update with string model with force. - * - * @throws ApexException if there is an error - */ - @Test - public void testModelUpdateStringNewForce() throws ApexException { - service.updateModel(parameters.getEngineKey(), apexSampleModelString, true); - service.startAll(); - assertEquals(apexSamplePolicyModel.getKey(), ModelService.getModel(AxPolicyModel.class).getKey()); - } - - /** - * Test model update with a new string model without force. - * - * @throws ApexException if there is an error - */ - @Test - public void testModelUpdateStringNewNewNoForce() throws ApexException { - service.updateModel(parameters.getEngineKey(), apexSampleModelString, false); - service.startAll(); - assertEquals(apexSamplePolicyModel.getKey(), ModelService.getModel(AxPolicyModel.class).getKey()); - - sendEvents(); - - service.updateModel(parameters.getEngineKey(), apexSampleModelString, false); - assertEquals(apexSamplePolicyModel.getKey(), ModelService.getModel(AxPolicyModel.class).getKey()); - - sendEvents(); - } - - /** - * Test incompatible model update with a model object without force. - * - * @throws ApexException if there is an error - */ - @Test - public void testModelUpdateIncoNoForce() throws ApexException { - service.updateModel(parameters.getEngineKey(), apexSamplePolicyModel, false); - service.startAll(); - assertEquals(apexSamplePolicyModel.getKey(), ModelService.getModel(AxPolicyModel.class).getKey()); - - // Different model name, incompatible - final AxPolicyModel incoPolicyModel0 = new AxPolicyModel(apexSamplePolicyModel); - incoPolicyModel0.getKey().setName("INCOMPATIBLE"); - - try { - service.updateModel(parameters.getEngineKey(), incoPolicyModel0, false); - fail("model update should fail on incompatible model without force being true"); - } catch (final Exception e) { - System.err.println(e.getMessage()); - assertEquals("apex model update failed, supplied model with key \"INCOMPATIBLE:0.0.1\" is not a compatible " - + "model update from the existing engine model with key \"SamplePolicyModelMVEL:0.0.1\"", - e.getMessage()); - } - - // Still on old model - sendEvents(); - - // Different major version, incompatible - final AxPolicyModel incoPolicyModel1 = new AxPolicyModel(apexSamplePolicyModel); - incoPolicyModel1.getKey().setVersion("1.0.1"); - - try { - service.updateModel(parameters.getEngineKey(), incoPolicyModel1, false); - fail("model update should fail on incompatible model without force being true"); - } catch (final Exception e) { - System.err.println(e.getMessage()); - e.printStackTrace(); - assertEquals("apex model update failed, supplied model with key \"SamplePolicyModelMVEL:1.0.1\" is not " - + "a compatible model update from the existing engine model with key " - + "\"SamplePolicyModelMVEL:0.0.1\"", e.getMessage()); - } - - // Still on old model - sendEvents(); - - // Different minor version, compatible - final AxPolicyModel coPolicyModel0 = new AxPolicyModel(apexSamplePolicyModel); - coPolicyModel0.getKey().setVersion("0.1.0"); - service.updateModel(parameters.getEngineKey(), coPolicyModel0, false); - - // On new compatible model - sendEvents(); - - // Different patch version, compatible - final AxPolicyModel coPolicyModel1 = new AxPolicyModel(apexSamplePolicyModel); - coPolicyModel1.getKey().setVersion("0.0.2"); - service.updateModel(parameters.getEngineKey(), coPolicyModel1, false); - - // On new compatible model - sendEvents(); - - } - - /** - * Test incompatible model update with a model object with force. - * - * @throws ApexException if there is an error - */ - @Test - public void testModelUpdateIncoForce() throws ApexException { - service.updateModel(parameters.getEngineKey(), apexSamplePolicyModel, false); - service.startAll(); - assertEquals(apexSamplePolicyModel.getKey(), ModelService.getModel(AxPolicyModel.class).getKey()); - - // Different model name, incompatible - final AxPolicyModel incoPolicyModel0 = new AxPolicyModel(apexSamplePolicyModel); - incoPolicyModel0.getKey().setName("INCOMPATIBLE"); - service.updateModel(parameters.getEngineKey(), incoPolicyModel0, true); - - // On updated model - sendEvents(); - - // Different major version, incompatible - final AxPolicyModel incoPolicyModel1 = new AxPolicyModel(apexSamplePolicyModel); - incoPolicyModel1.getKey().setVersion("1.0.1"); - service.updateModel(parameters.getEngineKey(), incoPolicyModel1, true); - - // On updated model - sendEvents(); - - // Different minor version, compatible - final AxPolicyModel coPolicyModel0 = new AxPolicyModel(apexSamplePolicyModel); - coPolicyModel0.getKey().setVersion("0.1.0"); - service.updateModel(parameters.getEngineKey(), coPolicyModel0, true); - - // On new compatible model - sendEvents(); - - // Different patch version, compatible - final AxPolicyModel coPolicyModel1 = new AxPolicyModel(apexSamplePolicyModel); - coPolicyModel1.getKey().setVersion("0.0.2"); - service.updateModel(parameters.getEngineKey(), coPolicyModel1, true); - - // On new compatible model - sendEvents(); - - } - - /** - * Utility method to send some events into the test engine. - * - * @throws ApexEventException if there is an error - */ - private void sendEvents() throws ApexEventException { - final EngineServiceEventInterface engineServiceEventInterface = service.getEngineServiceEventInterface(); - - // Send some events - final Date testStartTime = new Date(); - final Map eventDataMap = new HashMap(); - eventDataMap.put("TestSlogan", "This is a test slogan"); - eventDataMap.put("TestMatchCase", (byte) 123); - eventDataMap.put("TestTimestamp", testStartTime.getTime()); - eventDataMap.put("TestTemperature", 34.5445667); - - final ApexEvent event = new ApexEvent("Event0000", "0.0.1", "org.onap.policy.apex.domains.sample.events", - "test", "apex"); - event.putAll(eventDataMap); - engineServiceEventInterface.sendEvent(event); - - final ApexEvent event2 = new ApexEvent("Event0100", "0.0.1", "org.onap.policy.apex.domains.sample.events", - "test", "apex"); - event2.putAll(eventDataMap); - engineServiceEventInterface.sendEvent(event2); - - // Wait for results - while (actionEventsReceived < 2) { - ThreadUtilities.sleep(100); - } - ThreadUtilities.sleep(500); - } - - /** - * The listener interface for receiving test events. The class that is interested in processing a test event - * implements this interface, and the object created with that class is registered with a component using the - * component's addTestListener method. When the test event occurs, that object's appropriate method is - * invoked. - * - * @see TestEvent - */ - private final class TestListener implements ApexEventListener { - - /* - * (non-Javadoc) - * - * @see org.onap.policy.apex.service.engine.runtime.ApexEventListener#onApexEvent(org.onap.policy - * .apex.service.engine.event.ApexEvent) - */ - @Override - public synchronized void onApexEvent(final ApexEvent event) { - LOGGER.debug("result 1 is:" + event); - checkResult(event); - actionEventsReceived++; - - final Date testStartTime = new Date((Long) event.get("TestTimestamp")); - final Date testEndTime = new Date(); - - LOGGER.info("policy execution time: " + (testEndTime.getTime() - testStartTime.getTime()) + "ms"); - } - - /** - * Check result. - * - * @param result the result - */ - private void checkResult(final ApexEvent result) { - assertTrue(result.getName().startsWith("Event0004") || result.getName().startsWith("Event0104")); - - assertTrue(result.get("TestSlogan").equals("This is a test slogan")); - assertTrue(result.get("TestMatchCase").equals(new Byte((byte) 123))); - assertTrue(result.get("TestTemperature").equals(34.5445667)); - assertTrue(((byte) result.get("TestMatchCaseSelected")) >= 0 - && ((byte) result.get("TestMatchCaseSelected") <= 3)); - assertTrue(((byte) result.get("TestEstablishCaseSelected")) >= 0 - && ((byte) result.get("TestEstablishCaseSelected") <= 3)); - assertTrue(((byte) result.get("TestDecideCaseSelected")) >= 0 - && ((byte) result.get("TestDecideCaseSelected") <= 3)); - assertTrue(((byte) result.get("TestActCaseSelected")) >= 0 - && ((byte) result.get("TestActCaseSelected") <= 3)); - } - } -} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/runtime/ApexServiceTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/runtime/ApexServiceTest.java deleted file mode 100644 index e66d1b791..000000000 --- a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/runtime/ApexServiceTest.java +++ /dev/null @@ -1,477 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.testsuites.performance.benchmark.engine.runtime; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities; -import org.onap.policy.apex.model.basicmodel.concepts.ApexException; -import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; -import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; -import org.onap.policy.apex.plugins.executor.mvel.MvelExecutorParameters; -import org.onap.policy.apex.service.engine.event.ApexEvent; -import org.onap.policy.apex.service.engine.runtime.ApexEventListener; -import org.onap.policy.apex.service.engine.runtime.EngineService; -import org.onap.policy.apex.service.engine.runtime.EngineServiceEventInterface; -import org.onap.policy.apex.service.engine.runtime.impl.EngineServiceImpl; -import org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters; -import org.onap.policy.apex.testsuites.integration.common.model.SampleDomainModelFactory; -import org.onap.policy.apex.testsuites.performance.benchmark.engine.utils.Utils; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * The Class ApexServiceTest. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ApexServiceTest { - // Logger for this class - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexServiceTest.class); - - private static final long MAX_STOP_WAIT = 5000; // 5 sec - private static final long MAX_START_WAIT = 5000; // 5 sec - private static final long MAX_RECV_WAIT = 5000; // 5 sec - - private static final AxArtifactKey engineServiceKey = new AxArtifactKey("Machine-1_process-1_engine-1", "0.0.0"); - private static final EngineServiceParameters parameters = new EngineServiceParameters(); - private static EngineService service = null; - private static TestListener listener = null; - private static AxPolicyModel apexPolicyModel = null; - private static int actionEventsReceived = 0; - - private static String apexModelString; - - private boolean waitFlag = true; - - /** - * Sets the up. - * - * @throws Exception the exception - */ - @BeforeClass - public static void setUp() throws Exception { - // create engine with 3 threads - parameters.setInstanceCount(3); - parameters.setName(engineServiceKey.getName()); - parameters.setVersion(engineServiceKey.getVersion()); - parameters.setId(100); - parameters.getEngineParameters().getExecutorParameterMap().put("MVEL", new MvelExecutorParameters()); - service = EngineServiceImpl.create(parameters); - - - LOGGER.debug("Running TestApexEngine. . ."); - - apexPolicyModel = new SampleDomainModelFactory().getSamplePolicyModel("MVEL"); - assertNotNull(apexPolicyModel); - - apexModelString = Utils.getModelString(apexPolicyModel); - - // create engine - listener = new TestListener(); - service.registerActionListener("Listener", listener); - } - - /** - * Update the engine then test the engine with 2 sample events. - * - * @throws ApexException if there is a problem - */ - @Test - public void testExecutionSet1() throws ApexException { - service.updateModel(parameters.getEngineKey(), apexModelString, true); - // Start the service - service.startAll(); - final long starttime = System.currentTimeMillis(); - for (final AxArtifactKey engineKey : service.getEngineKeys()) { - LOGGER.info("{}", service.getStatus(engineKey)); - } - while (!service.isStarted() && System.currentTimeMillis() - starttime < MAX_START_WAIT) { - ThreadUtilities.sleep(200); - } - if (!service.isStarted()) { - fail("Apex Service " + service.getKey() + " failed to start after " + MAX_START_WAIT + " ms"); - } - - final EngineServiceEventInterface engineServiceEventInterface = service.getEngineServiceEventInterface(); - - // Send some events - final Date testStartTime = new Date(); - final Map eventDataMap = new HashMap(); - eventDataMap.put("TestSlogan", "This is a test slogan"); - eventDataMap.put("TestMatchCase", (byte) 123); - eventDataMap.put("TestTimestamp", testStartTime.getTime()); - eventDataMap.put("TestTemperature", 34.5445667); - - final ApexEvent event = - new ApexEvent("Event0000", "0.0.1", "org.onap.policy.apex.domains.sample.events", "test", "apex"); - event.setExecutionId(System.nanoTime()); - event.putAll(eventDataMap); - engineServiceEventInterface.sendEvent(event); - - final ApexEvent event2 = - new ApexEvent("Event0100", "0.0.1", "org.onap.policy.apex.domains.sample.events", "test", "apex"); - event2.setExecutionId(System.nanoTime()); - event2.putAll(eventDataMap); - engineServiceEventInterface.sendEvent(event2); - - // Wait for results - final long recvtime = System.currentTimeMillis(); - while (actionEventsReceived < 2 && System.currentTimeMillis() - recvtime < MAX_RECV_WAIT) { - ThreadUtilities.sleep(100); - } - ThreadUtilities.sleep(500); - assertEquals(2, actionEventsReceived); - actionEventsReceived = 0; - - - // Stop all engines on this engine service - final long stoptime = System.currentTimeMillis(); - service.stop(); - while (!service.isStopped() && System.currentTimeMillis() - stoptime < MAX_STOP_WAIT) { - ThreadUtilities.sleep(200); - } - if (!service.isStopped()) { - fail("Apex Service " + service.getKey() + " failed to stop after " + MAX_STOP_WAIT + " ms"); - } - } - - /** - * Update the engine then test the engine with 2 sample events. - * - * @throws ApexException if there is a problem - */ - @Test - public void testExecutionSet1Sync() throws ApexException { - service.updateModel(parameters.getEngineKey(), apexModelString, true); - // Start the service - service.startAll(); - final long starttime = System.currentTimeMillis(); - for (final AxArtifactKey engineKey : service.getEngineKeys()) { - LOGGER.info("{}", service.getStatus(engineKey)); - } - while (!service.isStarted() && System.currentTimeMillis() - starttime < MAX_START_WAIT) { - ThreadUtilities.sleep(200); - } - if (!service.isStarted()) { - fail("Apex Service " + service.getKey() + " failed to start after " + MAX_START_WAIT + " ms"); - } - - // Send some events - final Date testStartTime = new Date(); - final Map eventDataMap = new HashMap(); - eventDataMap.put("TestSlogan", "This is a test slogan"); - eventDataMap.put("TestMatchCase", (byte) 123); - eventDataMap.put("TestTimestamp", testStartTime.getTime()); - eventDataMap.put("TestTemperature", 34.5445667); - - final ApexEvent event1 = - new ApexEvent("Event0000", "0.0.1", "org.onap.policy.apex.domains.sample.events", "test", "apex"); - event1.putAll(eventDataMap); - event1.setExecutionId(System.nanoTime()); - - final ApexEventListener myEventListener1 = new ApexEventListener() { - @Override - public void onApexEvent(final ApexEvent responseEvent) { - assertNotNull("Synchronous sendEventWait failed", responseEvent); - assertEquals(event1.getExecutionId(), responseEvent.getExecutionId()); - waitFlag = false; - } - }; - - waitFlag = true; - service.registerActionListener("Listener1", myEventListener1); - service.getEngineServiceEventInterface().sendEvent(event1); - - while (waitFlag) { - ThreadUtilities.sleep(100); - } - - final ApexEvent event2 = - new ApexEvent("Event0100", "0.0.1", "org.onap.policy.apex.domains.sample.events", "test", "apex"); - event2.setExecutionId(System.nanoTime()); - event2.putAll(eventDataMap); - - final ApexEventListener myEventListener2 = new ApexEventListener() { - @Override - public void onApexEvent(final ApexEvent responseEvent) { - assertNotNull("Synchronous sendEventWait failed", responseEvent); - assertEquals(event2.getExecutionId(), responseEvent.getExecutionId()); - assertEquals(2, actionEventsReceived); - waitFlag = false; - } - }; - - waitFlag = true; - service.deregisterActionListener("Listener1"); - service.registerActionListener("Listener2", myEventListener2); - service.getEngineServiceEventInterface().sendEvent(event2); - - while (waitFlag) { - ThreadUtilities.sleep(100); - } - service.deregisterActionListener("Listener2"); - - actionEventsReceived = 0; - - // Stop all engines on this engine service - final long stoptime = System.currentTimeMillis(); - service.stop(); - while (!service.isStopped() && System.currentTimeMillis() - stoptime < MAX_STOP_WAIT) { - ThreadUtilities.sleep(200); - } - if (!service.isStopped()) { - fail("Apex Service " + service.getKey() + " failed to stop after " + MAX_STOP_WAIT + " ms"); - } - } - - /** - * Update the engine then test the engine with 2 sample events - again. - * - * @throws ApexException if there is a problem - */ - @Test - public void testExecutionSet2() throws ApexException { - service.updateModel(parameters.getEngineKey(), apexModelString, true); - // Start the service - service.startAll(); - final long starttime = System.currentTimeMillis(); - for (final AxArtifactKey engineKey : service.getEngineKeys()) { - LOGGER.info("{}", service.getStatus(engineKey)); - } - while (!service.isStarted() && System.currentTimeMillis() - starttime < MAX_START_WAIT) { - ThreadUtilities.sleep(200); - } - if (!service.isStarted()) { - fail("Apex Service " + service.getKey() + " failed to start after " + MAX_START_WAIT + " ms"); - } - - final EngineServiceEventInterface engineServiceEventInterface = service.getEngineServiceEventInterface(); - - // Send some events - final Date testStartTime = new Date(); - final Map eventDataMap = new HashMap(); - eventDataMap.put("TestSlogan", "This is a test slogan"); - eventDataMap.put("TestMatchCase", (byte) 123); - eventDataMap.put("TestTimestamp", testStartTime.getTime()); - eventDataMap.put("TestTemperature", 34.5445667); - - final ApexEvent event = - new ApexEvent("Event0000", "0.0.1", "org.onap.policy.apex.domains.sample.events", "test", "apex"); - event.setExecutionId(System.nanoTime()); - event.putAll(eventDataMap); - engineServiceEventInterface.sendEvent(event); - - final ApexEvent event2 = - new ApexEvent("Event0100", "0.0.1", "org.onap.policy.apex.domains.sample.events", "test", "apex"); - event2.setExecutionId(System.nanoTime()); - event2.putAll(eventDataMap); - engineServiceEventInterface.sendEvent(event2); - - // Wait for results - final long recvtime = System.currentTimeMillis(); - while (actionEventsReceived < 2 && System.currentTimeMillis() - recvtime < MAX_RECV_WAIT) { - ThreadUtilities.sleep(100); - } - ThreadUtilities.sleep(500); - assertEquals(2, actionEventsReceived); - actionEventsReceived = 0; - - // Stop all engines on this engine service - final long stoptime = System.currentTimeMillis(); - service.stop(); - while (!service.isStopped() && System.currentTimeMillis() - stoptime < MAX_STOP_WAIT) { - ThreadUtilities.sleep(200); - } - if (!service.isStopped()) { - fail("Apex Service " + service.getKey() + " failed to stop after " + MAX_STOP_WAIT + " ms"); - } - } - - /** - * Update the engine then test the engine with 2 sample events - again. - * - * @throws ApexException if there is a problem - */ - @Test - public void testExecutionSet2Sync() throws ApexException { - service.updateModel(parameters.getEngineKey(), apexModelString, true); - // Start the service - service.startAll(); - final long starttime = System.currentTimeMillis(); - for (final AxArtifactKey engineKey : service.getEngineKeys()) { - LOGGER.info("{}", service.getStatus(engineKey)); - } - while (!service.isStarted() && System.currentTimeMillis() - starttime < MAX_START_WAIT) { - ThreadUtilities.sleep(200); - } - if (!service.isStarted()) { - fail("Apex Service " + service.getKey() + " failed to start after " + MAX_START_WAIT + " ms"); - } - - // Send some events - final Date testStartTime = new Date(); - final Map eventDataMap = new HashMap(); - eventDataMap.put("TestSlogan", "This is a test slogan"); - eventDataMap.put("TestMatchCase", (byte) 123); - eventDataMap.put("TestTimestamp", testStartTime.getTime()); - eventDataMap.put("TestTemperature", 34.5445667); - - final ApexEvent event1 = - new ApexEvent("Event0000", "0.0.1", "org.onap.policy.apex.domains.sample.events", "test", "apex"); - event1.putAll(eventDataMap); - - final ApexEventListener myEventListener1 = new ApexEventListener() { - @Override - public void onApexEvent(final ApexEvent responseEvent) { - assertNotNull("Synchronous sendEventWait failed", responseEvent); - assertEquals(event1.getExecutionId(), responseEvent.getExecutionId()); - waitFlag = false; - } - }; - - waitFlag = true; - service.registerActionListener("Listener1", myEventListener1); - service.getEngineServiceEventInterface().sendEvent(event1); - - while (waitFlag) { - ThreadUtilities.sleep(100); - } - - final ApexEvent event2 = - new ApexEvent("Event0100", "0.0.1", "org.onap.policy.apex.domains.sample.events", "test", "apex"); - event2.putAll(eventDataMap); - - final ApexEventListener myEventListener2 = new ApexEventListener() { - @Override - public void onApexEvent(final ApexEvent responseEvent) { - assertNotNull("Synchronous sendEventWait failed", responseEvent); - assertEquals(event2.getExecutionId(), responseEvent.getExecutionId()); - waitFlag = false; - } - }; - - waitFlag = true; - service.registerActionListener("Listener2", myEventListener2); - service.deregisterActionListener("Listener1"); - service.getEngineServiceEventInterface().sendEvent(event2); - - while (waitFlag) { - ThreadUtilities.sleep(100); - } - - service.deregisterActionListener("Listener2"); - - assertEquals(2, actionEventsReceived); - - actionEventsReceived = 0; - - // Stop all engines on this engine service - final long stoptime = System.currentTimeMillis(); - service.stop(); - while (!service.isStopped() && System.currentTimeMillis() - stoptime < MAX_STOP_WAIT) { - ThreadUtilities.sleep(200); - } - if (!service.isStopped()) { - fail("Apex Service " + service.getKey() + " failed to stop after " + MAX_STOP_WAIT + " ms"); - } - } - - /** - * Tear down the the test infrastructure. - * - * @throws ApexException if there is an error - */ - @AfterClass - public static void tearDown() throws Exception { - // Stop all engines on this engine service - final long stoptime = System.currentTimeMillis(); - service.stop(); - while (!service.isStopped() && System.currentTimeMillis() - stoptime < MAX_STOP_WAIT) { - ThreadUtilities.sleep(200); - } - if (!service.isStopped()) { - fail("Apex Service " + service.getKey() + " failed to stop after " + MAX_STOP_WAIT + " ms"); - } - service = null; - } - - /** - * The listener interface for receiving test events. The class that is interested in processing - * a test event implements this interface, and the object created with that class is registered - * with a component using the component's addTestListener method. When the test - * event occurs, that object's appropriate method is invoked. - * - * @see TestEvent - */ - private static final class TestListener implements ApexEventListener { - - /* - * (non-Javadoc) - * - * @see - * org.onap.policy.apex.service.engine.runtime.ApexEventListener#onApexEvent(org.onap.policy - * .apex.service.engine.event.ApexEvent) - */ - @Override - public synchronized void onApexEvent(final ApexEvent event) { - LOGGER.debug("result 1 is:" + event); - checkResult(event); - actionEventsReceived++; - - final Date testStartTime = new Date((Long) event.get("TestTimestamp")); - final Date testEndTime = new Date(); - - LOGGER.info("policy execution time: " + (testEndTime.getTime() - testStartTime.getTime()) + "ms"); - } - - /** - * Check result. - * - * @param result the result - */ - private void checkResult(final ApexEvent result) { - assertTrue(result.getName().startsWith("Event0004") || result.getName().startsWith("Event0104")); - - assertTrue(result.get("TestSlogan").equals("This is a test slogan")); - assertTrue(result.get("TestMatchCase").equals(new Byte((byte) 123))); - assertTrue(result.get("TestTemperature").equals(34.5445667)); - assertTrue(((byte) result.get("TestMatchCaseSelected")) >= 0 - && ((byte) result.get("TestMatchCaseSelected") <= 3)); - assertTrue(((byte) result.get("TestEstablishCaseSelected")) >= 0 - && ((byte) result.get("TestEstablishCaseSelected") <= 3)); - assertTrue(((byte) result.get("TestDecideCaseSelected")) >= 0 - && ((byte) result.get("TestDecideCaseSelected") <= 3)); - assertTrue( - ((byte) result.get("TestActCaseSelected")) >= 0 && ((byte) result.get("TestActCaseSelected") <= 3)); - } - } -} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/utils/Utils.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/utils/Utils.java deleted file mode 100644 index 0d239a8ef..000000000 --- a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/utils/Utils.java +++ /dev/null @@ -1,55 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.testsuites.performance.benchmark.engine.utils; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -import org.onap.policy.apex.model.basicmodel.handling.ApexModelException; -import org.onap.policy.apex.model.basicmodel.handling.ApexModelWriter; -import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; - -/** - * The Class Utils. - */ -public class Utils { - - /** - * Instantiates a new utils. - */ - private Utils() {} - - /** - * Gets the model string. - * - * @param ecaPolicyModel the eca policy model - * @return the model string - * @throws ApexModelException the apex model exception - * @throws IOException Signals that an I/O exception has occurred. - */ - public static String getModelString(final AxPolicyModel ecaPolicyModel) throws ApexModelException, IOException { - try (final ByteArrayOutputStream baOutputStream = new ByteArrayOutputStream()) { - new ApexModelWriter(AxPolicyModel.class).write(ecaPolicyModel, baOutputStream); - return baOutputStream.toString(); - } - } - -} -- cgit 1.2.3-korg