diff options
author | 2018-11-20 15:59:50 +0000 | |
---|---|---|
committer | 2018-11-20 16:56:18 +0000 | |
commit | 1f7c861c65aa8689f11196581b8ca5e79d7e4e26 (patch) | |
tree | b48c3dc3bec93dd5e52c9a45cb84b88c61d1843f /testsuites/performance/performance-benchmark-test/src/test/java/org/onap | |
parent | e8b197315437cac84872752e2ea090d8fb233941 (diff) |
Refactor Apex benchmark tests
Apex performance tests are refactored and reorganised
to be all in the one place and to be coherent.
A test REST server that can generate events in batches
is introduced and this can be configured to respond to REST
calls from Apex with various batch sizes that can be varied
for performance tests.
Actual performance tests are added for the various executors
in Apex.
Change-Id: I692b41e1e4451e821a618c64dead5cc8e9685d08
Issue-ID: POLICY-812
Signed-off-by: liamfallon <liam.fallon@ericsson.com>
Diffstat (limited to 'testsuites/performance/performance-benchmark-test/src/test/java/org/onap')
12 files changed, 958 insertions, 484 deletions
diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/benchmark/ApexBaseBenchMarkTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/benchmark/ApexBaseBenchMarkTest.java deleted file mode 100644 index fdefd5583..000000000 --- a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/benchmark/ApexBaseBenchMarkTest.java +++ /dev/null @@ -1,175 +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.benchmark; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters; -import org.onap.policy.apex.context.parameters.ContextParameters; -import org.onap.policy.apex.context.parameters.SchemaParameters; -import org.onap.policy.apex.core.engine.EngineParameters; -import org.onap.policy.apex.core.engine.ExecutorParameters; -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.plugins.context.schema.avro.AvroSchemaHelperParameters; -import org.onap.policy.apex.plugins.executor.java.JavaExecutorParameters; -import org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters; -import org.onap.policy.apex.plugins.executor.jruby.JrubyExecutorParameters; -import org.onap.policy.apex.plugins.executor.jython.JythonExecutorParameters; -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.performance.benchmark.engine.runtime.ApexServiceModelUpdateTest; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * The Class ApexBaseBenchMarkTest. - */ -public class ApexBaseBenchMarkTest { - private static final long STOP_TIME_OUT = TimeUnit.SECONDS.toMillis(30); - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexServiceModelUpdateTest.class); - private static final long MAX_START_WAIT = TimeUnit.SECONDS.toMillis(10); - private final AxArtifactKey engineServiceKey = new AxArtifactKey("Machine-1_process-1_engine-1", "0.0.0"); - private final String model; - private final int threads; - private final ApexEventListener listener; - private EngineService service; - private EngineServiceEventInterface engineServiceEventInterface; - - - /** - * Instantiates a new apex base bench mark test. - * - * @param model the model - * @param threads the threads - * @param listener the listener - */ - public ApexBaseBenchMarkTest(final String model, final int threads, final ApexEventListener listener) { - this.model = model; - this.threads = threads; - this.listener = listener; - } - - /** - * Sets the up. - * - * @throws Exception the exception - */ - public void setUp() throws Exception { - final EngineServiceParameters parameters = new EngineServiceParameters(); - parameters.setInstanceCount(threads); - parameters.setName(engineServiceKey.getName()); - parameters.setVersion(engineServiceKey.getVersion()); - parameters.setId(100); - - final EngineParameters engineParameters = parameters.getEngineParameters(); - final Map<String, ExecutorParameters> executorParameterMap = engineParameters.getExecutorParameterMap(); - executorParameterMap.put("MVEL", new MvelExecutorParameters()); - executorParameterMap.put("JAVASCRIPT", new JavascriptExecutorParameters()); - executorParameterMap.put("JYTHON", new JythonExecutorParameters()); - executorParameterMap.put("JAVA", new JavaExecutorParameters()); - executorParameterMap.put("JRUBY", new JrubyExecutorParameters()); - - final ContextParameters contextParameters = engineParameters.getContextParameters(); - final SchemaParameters schemaParameters = contextParameters.getSchemaParameters(); - schemaParameters.getSchemaHelperParameterMap().put("Avro", new AvroSchemaHelperParameters()); - schemaParameters.getSchemaHelperParameterMap().put("Java", new JavaSchemaHelperParameters()); - service = EngineServiceImpl.create(parameters); - - service = EngineServiceImpl.create(parameters); - service.registerActionListener("listener", listener); - service.updateModel(parameters.getEngineKey(), model, true); - - LOGGER.info("Starting EngineService ... "); - service.startAll(); - - final long starttime = System.currentTimeMillis(); - while (!service.isStarted() && System.currentTimeMillis() - starttime < MAX_START_WAIT) { - ThreadUtilities.sleep(50); - } - if (!service.isStarted()) { - LOGGER.error("Apex Service {} failed to start after {} ms", service.getKey(), MAX_START_WAIT); - new ApexException("Unable to start engine service "); - } - - engineServiceEventInterface = service.getEngineServiceEventInterface(); - } - - /** - * Send events. - * - * @param events the events - */ - public void sendEvents(final List<ApexEvent> events) { - for (final ApexEvent event : events) { - engineServiceEventInterface.sendEvent(event); - } - } - - /** - * Send event. - * - * @param event the event - */ - public void sendEvent(final ApexEvent event) { - engineServiceEventInterface.sendEvent(event); - } - - - /** - * Gets the service. - * - * @return the service - */ - public EngineService getService() { - return service; - } - - /** - * Destroy. - * - * @throws Exception the exception - */ - public void destroy() throws Exception { - if (service != null) { - LOGGER.info("Stopping EngineService ... "); - service.stop(); - final long currentTimeInMillSec = System.currentTimeMillis(); - while (!service.isStopped()) { - if (System.currentTimeMillis() - currentTimeInMillSec > STOP_TIME_OUT) { - LOGGER.warn("Timed Out EngineService status: ", service.isStopped()); - break; - } - ThreadUtilities.sleep(500); - } - service = null; - } - } - -} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/benchmark/ApexEngineBenchmarkTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/benchmark/ApexEngineBenchmarkTest.java deleted file mode 100644 index 99035f7bf..000000000 --- a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/benchmark/ApexEngineBenchmarkTest.java +++ /dev/null @@ -1,183 +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.benchmark; - -import static org.junit.Assert.assertEquals; - -import java.util.concurrent.TimeUnit; - -import org.junit.Before; -import org.junit.Test; -import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities; -import org.onap.policy.apex.service.engine.event.ApexEvent; -import org.onap.policy.apex.testsuites.integration.common.model.EvalDomainModelFactory; -import org.onap.policy.apex.testsuites.performance.benchmark.engine.utils.Utils; -import org.python.icu.impl.Assert; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * The Class ApexEngineBenchmark. - */ -public class ApexEngineBenchmarkTest { - // Logger for this class - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEngineBenchmarkTest.class); - - private static final String TARGET = "apex"; - private static final String SOURCE = "test"; - private static final String NAME = "Event0000"; - private static final String VERSION = "0.0.1"; - private static final String PACKAGE = "org.onap.policy.apex.domains.sample.events"; - - private static final long TIME_OUT_IN_MILLISEC = TimeUnit.MINUTES.toMillis(1); - - private String apexEcaModelString; - private String apexOodaModelString; - - /** - * Sets the up. - * - * @throws Exception the exception - */ - @Before - public void setUp() throws Exception { - apexEcaModelString = Utils.getModelString(new EvalDomainModelFactory().getEcaPolicyModel()); - apexOodaModelString = Utils.getModelString(new EvalDomainModelFactory().getOodaPolicyModel()); - } - - /** - * Test benchmark singleton worker. - * - * @throws Exception the exception - */ - @Test - public void testBenchmark_SingletonWorker() throws Exception { - executeTest(apexEcaModelString, 100, 1, 20); - executeTest(apexOodaModelString, 100, 1, 20); - } - - /** - * Test benchmark 3 thread worker. - * - * @throws Exception the exception - */ - @Test - public void testBenchmark_3ThreadWorker() throws Exception { - executeTest(apexEcaModelString, 1000, 3, 10); - executeTest(apexOodaModelString, 100, 3, 10); - } - - /** - * Test benchmark 10 thread worker. - * - * @throws Exception the exception - */ - @Test - public void testBenchmark_10ThreadWorker() throws Exception { - executeTest(apexEcaModelString, 2000, 10, 10); - executeTest(apexOodaModelString, 2000, 10, 10); - } - - /** - * Test benchmark 50 thread worker. - * - * @throws Exception the exception - */ - @Test - public void testBenchmark_50ThreadWorker() throws Exception { - executeTest(apexEcaModelString, 3000, 50, 10); - executeTest(apexOodaModelString, 3000, 50, 10); - } - - /** - * Test available processors thread worker. - * - * @throws Exception the exception - */ - @Test - public void testAvailableProcessorsThreadWorker() throws Exception { - final int cores = Runtime.getRuntime().availableProcessors(); - executeTest(apexEcaModelString, 3000, cores, 10); - executeTest(apexOodaModelString, 3000, cores, 10); - } - - /** - * Execute test. - * - * @param policyModel the policy model - * @param eventsCount the events count - * @param threads the threads - * @param loop the loop - * @throws Exception the exception - */ - private void executeTest(final String policyModel, final int eventsCount, final int threads, final int loop) - throws Exception { - - LOGGER.info("Running Test with Event count: {}, Instance count: {} and loop: {}", eventsCount, threads, loop); - final ApexEventListenerTest apexEventListener = new ApexEventListenerTest(); - - final ApexBaseBenchMarkTest apexBaseBenchMarkTest = - new ApexBaseBenchMarkTest(policyModel, threads, apexEventListener); - - try { - apexBaseBenchMarkTest.setUp(); - for (int i = 0; i < loop; i++) { - sendEvents(apexBaseBenchMarkTest, eventsCount); - final long currentTimeInMillSec = System.currentTimeMillis(); - while (apexEventListener.getEventReceived() < eventsCount) { - if (System.currentTimeMillis() - currentTimeInMillSec > TIME_OUT_IN_MILLISEC) { - LOGGER.warn("Wait timed out ... "); - break; - } - ThreadUtilities.sleep(500); - } - assertEquals(eventsCount, apexEventListener.getEventReceived()); - apexEventListener.printResult(); - apexEventListener.reset(); - } - } catch (final Exception exception) { - Assert.fail(exception); - } finally { - apexBaseBenchMarkTest.destroy(); - LOGGER.info("Finished Running Test with Event count: {}, Instance count: {} and loop: {}", eventsCount, - threads, loop); - } - } - - /** - * Send events. - * - * @param apexBaseBenchMarkTest the apex base bench mark test - * @param eventsCount the events count - * @throws Exception the exception - */ - public void sendEvents(final ApexBaseBenchMarkTest apexBaseBenchMarkTest, final int eventsCount) throws Exception { - for (int eventNum = 0; eventNum < eventsCount; eventNum++) { - final long currentTimeMillis = System.currentTimeMillis(); - final ApexEvent event = new ApexEvent(NAME, VERSION, PACKAGE, SOURCE, TARGET); - event.put("TestTemperature", eventNum); - event.put("FirstEventTimestamp", currentTimeMillis); - event.put("SentTimestamp", currentTimeMillis); - event.put("EventNumber", eventNum); - apexBaseBenchMarkTest.sendEvent(event); - } - } -} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/benchmark/ApexEventListenerTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/benchmark/ApexEventListenerTest.java deleted file mode 100644 index a5950df97..000000000 --- a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/engine/benchmark/ApexEventListenerTest.java +++ /dev/null @@ -1,126 +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.benchmark; - -import static org.junit.Assert.assertNull; - -import java.util.Queue; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.atomic.AtomicLong; - -import org.onap.policy.apex.service.engine.event.ApexEvent; -import org.onap.policy.apex.service.engine.runtime.ApexEventListener; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * The listener interface for receiving testApexEvent events. - * The class that is interested in processing a testApexEvent - * event implements this interface, and the object created - * with that class is registered with a component using the - * component's <code>addTestApexEventListener</code> method. When - * the testApexEvent event occurs, that object's appropriate - * method is invoked. - * - * @see TestApexEventEvent - */ -public class ApexEventListenerTest implements ApexEventListener { - - private static final String SENT_TIMESTAMP = "SentTimestamp"; - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEventListenerTest.class); - private static final String RECVD_TIMESTAMP = "RecvdTimestamp"; - private Queue<ApexEvent> queue; - - private final AtomicLong eventReceived = new AtomicLong(); - - /** - * Instantiates a new test apex event listener. - */ - public ApexEventListenerTest() { - this.queue = new ConcurrentLinkedQueue<ApexEvent>(); - } - - /* (non-Javadoc) - * @see org.onap.policy.apex.service.engine.runtime.ApexEventListener#onApexEventApexEvent) - */ - @Override - public void onApexEvent(final ApexEvent apexEvent) { - apexEvent.put(RECVD_TIMESTAMP, System.currentTimeMillis()); - eventReceived.incrementAndGet(); - queue.add(apexEvent); - } - - /** - * Prints the result. - */ - public void printResult() { - if (!queue.isEmpty()) { - long maxTimeInMilliSeconds = 0; - long minTimeInMilliSeconds = Long.MAX_VALUE; - final long numEvents = queue.size(); - long totalTimeInMilliSeconds = 0; - for (final ApexEvent apexEvent : queue) { - assertNull(apexEvent.getExceptionMessage()); - final Long endTimeInMilliSeconds = (Long) apexEvent.get(RECVD_TIMESTAMP); - final Long startTimeInMilliSeconds = (Long) apexEvent.get(SENT_TIMESTAMP); - final long timeTaken = endTimeInMilliSeconds - startTimeInMilliSeconds; - totalTimeInMilliSeconds += timeTaken; - if (timeTaken > maxTimeInMilliSeconds) { - maxTimeInMilliSeconds = timeTaken; - } - if (timeTaken < minTimeInMilliSeconds) { - minTimeInMilliSeconds = timeTaken; - } - } - LOGGER.info("Average Time Taken to process {} events: {} ms", numEvents, - (totalTimeInMilliSeconds / numEvents)); - LOGGER.info("Max Time Taken: {} ms", maxTimeInMilliSeconds); - LOGGER.info("Min Time Taken: {} ms", minTimeInMilliSeconds); - } - } - - /** - * Reset. - */ - public void reset() { - this.queue = new ConcurrentLinkedQueue<ApexEvent>(); - eventReceived.set(0);; - } - - /** - * Gets the queue. - * - * @return the queue - */ - public Queue<ApexEvent> getQueue() { - return queue; - } - - /** - * Gets the event received. - * - * @return the event received - */ - public long getEventReceived() { - return eventReceived.get(); - } - -} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventBatchStatsTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventBatchStatsTest.java new file mode 100644 index 000000000..b53eb7ace --- /dev/null +++ b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventBatchStatsTest.java @@ -0,0 +1,57 @@ +/*- + * ============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.eventgenerator; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +/** + * Test the EventBatchStats class. + * + */ +public class EventBatchStatsTest { + + @Test + public void test() { + EventBatchStats stats = new EventBatchStats(new EventBatch(1, "Label")); + assertNotNull(stats); + + assertTrue(stats.getBatchNumber() >= 0); + assertEquals(1, stats.getBatchSize()); + assertEquals("Label", stats.getApexClient()); + + List<EventBatchStats> statsList = new ArrayList<>(); + statsList.add(stats); + + EventBatchStats totalStats = new EventBatchStats(statsList); + assertEquals(stats.getBatchSize(), totalStats.getBatchSize()); + + List<EventBatchStats> emptyStatsList = new ArrayList<>(); + EventBatchStats emptyStats = new EventBatchStats(emptyStatsList); + assertEquals(0, emptyStats.getBatchSize()); + } +} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventBatchTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventBatchTest.java new file mode 100644 index 000000000..f315f6402 --- /dev/null +++ b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventBatchTest.java @@ -0,0 +1,48 @@ +/*- + * ============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.eventgenerator; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.junit.Test; +import org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator.events.InputEvent; + +/** + * Test the EventBatch class. + * + */ +public class EventBatchTest { + + @Test + public void testEventBatch() { + EventBatch batch = new EventBatch(1, "TheApexClient"); + assertNotNull(batch); + + assertEquals("\"nameSpace\": \"org.onap.policy.apex.sample.events\"", batch.getBatchAsJsonString().substring(4, 53)); + + EventBatchStats stats = batch.getStats(); + assertEquals(1, stats.getBatchSize()); + + InputEvent ie = batch.getInputEvent(0); + assertEquals("org.onap.policy.apex.sample.events",ie.getNameSpace()); + } +} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorEndpointTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorEndpointTest.java new file mode 100644 index 000000000..2add69857 --- /dev/null +++ b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorEndpointTest.java @@ -0,0 +1,115 @@ +/*- + * ============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.eventgenerator; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import javax.inject.Provider; +import javax.ws.rs.core.Response; + +import org.glassfish.grizzly.http.server.Request; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.onap.policy.apex.model.basicmodel.concepts.ApexException; +import org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator.events.OutputEvent; + +/** + * Test the EventGeneratorEndpoint class. + * + */ +public class EventGeneratorEndpointTest { + @Mock + private Provider<Request> httpRequestProviderMock; + + @Mock + private Request httpRequestMock; + + /** + * Set up mocking of the engine service facade. + * + * @throws ApexException on engine service facade setup errors + */ + @Before + public void initializeMocking() throws ApexException { + MockitoAnnotations.initMocks(this); + + Mockito.doReturn(httpRequestMock).when(httpRequestProviderMock).get(); + + Mockito.doReturn("zooby").when(httpRequestMock).getRemoteHost(); + Mockito.doReturn(12345).when(httpRequestMock).getRemotePort(); + + } + + @Test + public void testEventGeneratorEndpointGetStats() { + EventGeneratorEndpoint.clearEventGenerationStats(); + EventGeneratorEndpoint.setFinished(false); + + EventGeneratorEndpoint egep = new EventGeneratorEndpoint(null); + assertNotNull(egep); + + Response stats = egep.serviceGetStats(); + assertEquals(200, stats.getStatus()); + } + + @Test + public void testEventGeneratorEndpointGetEventsZeroBatchCount() { + EventGeneratorParameters incomingParameters = new EventGeneratorParameters(); + incomingParameters.setBatchCount(1); + + EventGeneratorEndpoint.setParameters(incomingParameters); + EventGeneratorEndpoint.clearEventGenerationStats(); + EventGeneratorEndpoint.setFinished(false); + + EventGeneratorEndpoint egep = new EventGeneratorEndpoint(httpRequestProviderMock); + assertNotNull(egep); + + Response events = egep.getEvents(); + assertEquals(200, events.getStatus()); + + incomingParameters.setBatchCount(1); + events = egep.getEvents(); + assertEquals(204, events.getStatus()); + } + + @Test + public void testEventGeneratorEndpointPostBadEvent() { + EventGeneratorParameters incomingParameters = new EventGeneratorParameters(); + incomingParameters.setBatchCount(1); + + EventGeneratorEndpoint.setParameters(incomingParameters); + EventGeneratorEndpoint.clearEventGenerationStats(); + EventGeneratorEndpoint.setFinished(false); + + EventGeneratorEndpoint egep = new EventGeneratorEndpoint(httpRequestProviderMock); + assertNotNull(egep); + + OutputEvent oe = new OutputEvent(); + oe.setTestSlogan("99-99: Whatever"); + + Response events = egep.postEventResponse(oe.asJson()); + assertEquals(409, events.getStatus()); + } +} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorParametersHandlerTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorParametersHandlerTest.java new file mode 100644 index 000000000..dd8766dc3 --- /dev/null +++ b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorParametersHandlerTest.java @@ -0,0 +1,325 @@ +/*- + * ============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.eventgenerator; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; + +import org.apache.commons.cli.ParseException; +import org.junit.Test; +import org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator.EventGenerator; +import org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator.EventGeneratorParameterHandler; +import org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator.EventGeneratorParameters; + +/** + * Test event generator parameters. + */ +public class EventGeneratorParametersHandlerTest { + + @Test + public void testEventGeneratorParameterhandler() { + EventGeneratorParameterHandler handler = new EventGeneratorParameterHandler(); + assertNotNull(handler); + + try { + String[] args = + { "-h" }; + EventGeneratorParameters parameters = handler.parse(args); + assertNull(parameters); + assertEquals("usage: EventGenerator [options...]", + handler.getHelp(EventGenerator.class.getSimpleName()).substring(0, 34)); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + {}; + EventGeneratorParameters parameters = handler.parse(args); + assertEquals("localhost", parameters.getHost()); + assertEquals(32801, parameters.getPort()); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-H", "MyHost" }; + EventGeneratorParameters parameters = handler.parse(args); + assertEquals("MyHost", parameters.getHost()); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-p", "12345" }; + EventGeneratorParameters parameters = handler.parse(args); + assertEquals(12345, parameters.getPort()); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-H", "MyHost", "-p", "12345" }; + EventGeneratorParameters parameters = handler.parse(args); + assertEquals("MyHost", parameters.getHost()); + assertEquals(12345, parameters.getPort()); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/Valid.json" }; + EventGeneratorParameters parameters = handler.parse(args); + assertEquals("ValidPars", parameters.getName()); + assertEquals("FileHost", parameters.getHost()); + assertEquals(54321, parameters.getPort()); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/Default.json" }; + EventGeneratorParameters parameters = handler.parse(args); + assertEquals("localhost", parameters.getHost()); + assertEquals(32801, parameters.getPort()); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/Default.json", "-bc", "100" }; + EventGeneratorParameters parameters = handler.parse(args); + assertEquals(100, parameters.getBatchCount()); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/Default.json", "-bc", "-1" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("specified parameters are not valid: parameter group \"EventGeneratorParameters\" " + + "type \"org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator." + + "EventGeneratorParameters\" INVALID, parameter group has status INVALID\n" + + " field \"batchCount\" type \"int\" value \"-1\" INVALID, " + + "batchCount must be an integer with a value of zero or more, " + + "zero means generate batches forever\n", pe.getMessage()); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/Default.json", "-bs", "12345" }; + EventGeneratorParameters parameters = handler.parse(args); + assertEquals(12345, parameters.getBatchSize()); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/Default.json", "-bs", "0" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("specified parameters are not valid: parameter group \"EventGeneratorParameters\" " + + "type \"org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator." + + "EventGeneratorParameters\" INVALID, parameter group has status INVALID\n" + + " field \"batchSize\" type \"int\" value \"0\" INVALID, " + + "batchSize must be an integer greater than zero\n", pe.getMessage()); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/Default.json", "-bd", "1000" }; + EventGeneratorParameters parameters = handler.parse(args); + assertEquals(1000, parameters.getDelayBetweenBatches()); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/Default.json", "-bd", "-1" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("specified parameters are not valid: parameter group \"EventGeneratorParameters\" " + + "type \"org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator." + + "EventGeneratorParameters\" INVALID, parameter group has status INVALID\n" + + " field \"batchSize\" type \"int\" value \"1\" INVALID, " + + "batchSize must be an integer with a value of zero or more\n", pe.getMessage()); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/Default.json", "-o", "Zooby" }; + EventGeneratorParameters parameters = handler.parse(args); + assertEquals("Zooby", parameters.getOutFile()); + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-z" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("Unrecognized option: -z", pe.getMessage()); + } + + try { + String[] args = + { "-H" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("Missing argument for option: H", pe.getMessage()); + } + + try { + String[] args = + { "-p" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("Missing argument for option: p", pe.getMessage()); + } + + try { + String[] args = + { "-p", "12345", "-z" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("Unrecognized option: -z", pe.getMessage()); + } + + try { + String[] args = + { "-p", "12345", "somethingElse" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("too many command line arguments specified : [somethingElse]", pe.getMessage()); + } + + try { + String[] args = + { "-c" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("Missing argument for option: c", pe.getMessage()); + } + + try { + String[] args = + { "-H", "MyHost", "-c", "src/test/resources/parameters/unit/Valid.json" }; + EventGeneratorParameters pars = handler.parse(args); + assertEquals("MyHost", pars.getHost()); + + } catch (ParseException pe) { + fail("test should not throw an exception"); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/NonExistant.json" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("Could not read parameters from configuration file " + + "\"src/test/resources/parameters/unit/NonExistant.json\": " + + "src/test/resources/parameters/unit/NonExistant.json", pe.getMessage()); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/BadHost.json" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("Error parsing JSON parameters from configuration file " + + "\"src/test/resources/parameters/unit/BadHost.json\": " + + "com.google.gson.stream.MalformedJsonException: " + + "Unexpected value at line 3 column 14 path $.host", pe.getMessage()); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/BadPort.json" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("Error parsing JSON parameters from configuration file " + + "\"src/test/resources/parameters/unit/BadPort.json\": " + + "java.lang.IllegalStateException: Expected an int " + + "but was BOOLEAN at line 4 column 18 path $.port", pe.getMessage()); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/Empty.json" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("No parameters found in configuration file " + + "\"src/test/resources/parameters/unit/Empty.json\"", pe.getMessage()); + } + + try { + String[] args = + { "-c", "src/test/resources/parameters/unit/NullHost.json" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("specified parameters are not valid: parameter group \"ValidPars\" " + + "type \"org.onap.policy.apex.testsuites.performance." + + "benchmark.eventgenerator.EventGeneratorParameters\" INVALID, " + + "parameter group has status INVALID\n" + " field \"host\" type \"java.lang.String\" " + + "value \"null\" INVALID, host must be a non-blank string\n", pe.getMessage()); + } + + try { + String[] args = + { "-p", "1023" }; + handler.parse(args); + fail("test should throw an exception"); + } catch (ParseException pe) { + assertEquals("specified parameters are not valid: parameter group \"" + + "EventGeneratorParameters\" type \"org.onap.policy.apex.testsuites.performance.benchmark." + + "eventgenerator.EventGeneratorParameters\" INVALID, parameter group has status INVALID\n" + + " field \"port\" type \"int\" value \"1023\" INVALID, " + + "port must be an integer between 1024 and 65535 inclusive\n" + "", pe.getMessage()); + } + } +} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorParametersTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorParametersTest.java new file mode 100644 index 000000000..1071c2f8e --- /dev/null +++ b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorParametersTest.java @@ -0,0 +1,71 @@ +/*- + * ============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.eventgenerator; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator.EventGeneratorParameters; + +/** + * Test event generator parameters. + */ +public class EventGeneratorParametersTest { + + @Test + public void testEventGeneratorParameters() { + EventGeneratorParameters parameters = new EventGeneratorParameters(); + + parameters.setName("TheName"); + assertEquals("TheName", parameters.getName()); + + parameters.setHost("TheHost"); + assertEquals("TheHost", parameters.getHost()); + + parameters.setPort(12345); + assertEquals(12345, parameters.getPort()); + + assertTrue(parameters.isValid()); + + parameters.setName(null); + assertFalse(parameters.isValid()); + parameters.setName(" "); + assertFalse(parameters.isValid()); + parameters.setName("TheName"); + assertTrue(parameters.isValid()); + + parameters.setHost(null); + assertFalse(parameters.isValid()); + parameters.setHost(" "); + assertFalse(parameters.isValid()); + parameters.setHost("TheHost"); + assertTrue(parameters.isValid()); + + parameters.setPort(1023); + assertFalse(parameters.isValid()); + parameters.setPort(65536); + assertFalse(parameters.isValid()); + parameters.setPort(12345); + assertTrue(parameters.isValid()); + } +} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorStatsTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorStatsTest.java new file mode 100644 index 000000000..a40bcb5f1 --- /dev/null +++ b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorStatsTest.java @@ -0,0 +1,44 @@ +/*- + * ============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.eventgenerator; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.LinkedHashMap; +import java.util.Map; + +import org.junit.Test; + +/** + * Test the EventGeneratorStats class. + * + */ +public class EventGeneratorStatsTest { + @Test + public void testEventGeneratorStats() { + Map<Integer, EventBatch> batchMap = new LinkedHashMap<>(); + EventGeneratorStats egs = new EventGeneratorStats(batchMap ); + assertNotNull(egs); + + assertEquals(-1, egs.getTotalStats().getBatchNumber()); + } +} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorTest.java new file mode 100644 index 000000000..e37ea963c --- /dev/null +++ b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/EventGeneratorTest.java @@ -0,0 +1,160 @@ +/*- + * ============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.eventgenerator; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.PrintStream; + +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.service.engine.main.ApexMain; +import org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator.EventGenerator; +import org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator.EventGeneratorParameters; + +/** + * This class tests the event generator. + */ +public class EventGeneratorTest { + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + + private final PrintStream stdout = System.out; + + /** + * Test event generation. + * + * @throws ApexException on Apex exceptions + */ + @Test + public void testEventGeneration() throws ApexException { + EventGeneratorParameters pars = new EventGeneratorParameters(); + pars.setBatchCount(1); + pars.setBatchSize(10); + + EventGenerator eventGenerator = new EventGenerator(pars); + + final String[] args = + { "-rfr", "target", "-c", "target/examples/config/SampleDomain/REST2RESTJsonEventJavascript.json" }; + + final ApexMain apexMain = new ApexMain(args); + + while (!eventGenerator.isFinished()) { + ThreadUtilities.sleep(200); + } + + apexMain.shutdown(); + + ThreadUtilities.sleep(5000); + eventGenerator.tearDown(); + + assertTrue(eventGenerator.getEventGenerationStats().contains("\"apexClient\": \"TOTAL\"")); + } + + @Test + public void testEventGeneratorBadParams() { + System.setOut(new PrintStream(outContent)); + + final String[] args = + { "-zzz" }; + + EventGenerator.main(args); + + final String outString = outContent.toString(); + + System.setOut(stdout); + + assertTrue(outString.contains("Start of event generator failed: Unrecognized option: -zzz")); + } + + @Test + public void testEventGeneratorHelp() { + System.setOut(new PrintStream(outContent)); + + final String[] args = { + "-h" + }; + + EventGenerator.main(args); + + final String outString = outContent.toString(); + + System.setOut(stdout); + + assertTrue(outString.contains("outputs the usage of this command")); + } + + @Test + public void testEventGeneratorStart() { + + System.setOut(new PrintStream(outContent)); + + (new Thread() { + public void run() { + EventGenerator.main(null); + } + }).start(); + + ThreadUtilities.sleep(1000); + final String outString = outContent.toString(); + + System.setOut(stdout); + + assertTrue(outString.contains("Event generator started")); + assertTrue(outString.contains("Event generator shut down")); + } + + @Test + public void testEventGeneratorOutfileGood() { + EventGeneratorParameters pars =new EventGeneratorParameters(); + pars.setOutFile("target/statsOutFile.json"); + + EventGenerator generator = new EventGenerator(pars); + assertNotNull(generator); + + generator.tearDown(); + + File outFile = new File("target/statsOutFile.json"); + assertTrue(outFile.exists()); + outFile.delete(); + } + + @Test + public void testEventGeneratorOutfileBad() { + EventGeneratorParameters pars = new EventGeneratorParameters(); + pars.setOutFile("/I/Dont/Exist"); + + EventGenerator generator = new EventGenerator(pars); + assertNotNull(generator); + + System.setOut(new PrintStream(outContent)); + + generator.tearDown(); + + final String outString = outContent.toString(); + System.setOut(stdout); + + assertTrue(outString.contains("could not output statistics to file \"/I/Dont/Exist\"")); + } +} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/events/InputEventTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/events/InputEventTest.java new file mode 100644 index 000000000..82b4cca88 --- /dev/null +++ b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/events/InputEventTest.java @@ -0,0 +1,68 @@ +/*- + * ============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.eventgenerator.events; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.junit.Test; + +/** + * Test the InputEvent class. + * + */ +public class InputEventTest { + + @Test + public void testInputEvent() { + InputEvent ie = new InputEvent(); + assertNotNull(ie); + + ie.setName("EventName"); + assertEquals("EventName", ie.getName()); + + ie.setNameSpace("a.b.c.d"); + assertEquals("a.b.c.d", ie.getNameSpace()); + + ie.setSource("Source"); + assertEquals("Source", ie.getSource()); + + ie.setTarget("Target"); + assertEquals("Target", ie.getTarget()); + + ie.setTestMatchCase(123); + assertEquals(123, ie.getTestMatchCase()); + + ie.setTestSlogan("A Slogan"); + assertEquals("A Slogan", ie.getTestSlogan()); + + ie.setTestTemperature(123.45); + assertEquals((Double)123.45, (Double)ie.getTestTemperature()); + + ie.setTestTimestamp(1234567879); + assertEquals(1234567879, ie.getTestTimestamp()); + + ie.setVersion("1.2.3"); + assertEquals("1.2.3", ie.getVersion()); + + assertEquals("\"nameSpace\": \"a.b.c.d\",", ie.asJson().substring(4, 27)); + } +} diff --git a/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/events/OutputEventTest.java b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/events/OutputEventTest.java new file mode 100644 index 000000000..8af87ddbd --- /dev/null +++ b/testsuites/performance/performance-benchmark-test/src/test/java/org/onap/policy/apex/testsuites/performance/benchmark/eventgenerator/events/OutputEventTest.java @@ -0,0 +1,70 @@ +/*- + * ============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.eventgenerator.events; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.junit.Test; + +/** + * Test the OutputEvent class. + * + */ +public class OutputEventTest { + + @Test + public void test() { + OutputEvent oe = new OutputEvent(); + assertNotNull(oe); + + oe.setTestMatchCaseSelected(32112); + assertEquals(32112, oe.getTestMatchCaseSelected()); + + oe.setTestMatchStateTime(34455778822L); + assertEquals(34455778822L, oe.getTestMatchStateTime()); + + oe.setTestEstablishCaseSelected(1321); + assertEquals(1321, oe.getTestEstablishCaseSelected()); + + oe.setTestEstablishStateTime(13445566778822L); + assertEquals(13445566778822L, oe.getTestEstablishStateTime()); + + oe.setTestDecideCaseSelected(321); + assertEquals(321, oe.getTestDecideCaseSelected()); + + oe.setTestDecideStateTime(3445566778822L); + assertEquals(3445566778822L, oe.getTestDecideStateTime()); + + oe.setTestActCaseSelected(332); + assertEquals(332, oe.getTestActCaseSelected()); + + oe.setTestActStateTime(34455667788L); + assertEquals(34455667788L, oe.getTestActStateTime()); + + oe.setTestReceviedTimestamp(134455667788222L); + assertEquals(134455667788222L, oe.getTestReceviedTimestamp()); + + oe.setTestSlogan("0-0: Whatever"); + assertEquals(0, oe.findBatchNumber()); + assertEquals(0, oe.findEventNumber()); + } +} |