/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. * */ package org.apache.qpid.disttest.results.aggregation; import java.util.Date; import javax.jms.Session; import org.apache.qpid.disttest.message.ParticipantResult; import org.apache.qpid.test.utils.QpidTestCase; public class ParticipantResultAggregatorTest extends QpidTestCase { private ParticipantResultAggregator _aggregator = new ParticipantResultAggregator(ParticipantResult.class, AGGREGATED_RESULT_NAME); private static final String TEST_NAME = "TEST_NAME"; private static final String AGGREGATED_RESULT_NAME = "AGGREGATED_RESULT_NAME"; private static final int TEST_ITERATION_NUMBER = 1; private static final long PARTICIPANT1_STARTDATE = 50; private static final long PARTICIPANT1_ENDDATE = 20000; private static final long PARTICIPANT1_TOTAL_PROCESSED = 1024; private static final int PARTICIPANT1_NUMBER_OF_MESSAGES_PROCESSED = 20000; private static final long PARTICIPANT2_STARTDATE = 100; private static final long PARTICIPANT2_ENDDATE = 21000; private static final long PARTICIPANT2_TOTAL_PROCESSED = 2048; private static final int PARTICIPANT2_NUMBER_OF_MESSAGES_PROCESSED = 950; private static final long OVERALL_PROCESSED = PARTICIPANT1_TOTAL_PROCESSED + PARTICIPANT2_TOTAL_PROCESSED; private static final double OVERALL_TIMETAKEN = PARTICIPANT2_ENDDATE - PARTICIPANT1_STARTDATE; private static final long OVERALL_NUMBER_OF_MESSAGES_PROCESSED = PARTICIPANT1_NUMBER_OF_MESSAGES_PROCESSED + PARTICIPANT2_NUMBER_OF_MESSAGES_PROCESSED; private static final double EXPECTED_AGGREGATED_ALL_THROUGHPUT = ((OVERALL_PROCESSED)/1024)/((OVERALL_TIMETAKEN)/1000); private static final int EXPECTED_AGGREGATED_MESSAGE_THROUGHPUT = (int)(OVERALL_NUMBER_OF_MESSAGES_PROCESSED * 1000.0d/OVERALL_TIMETAKEN); public void testStartAndEndDateForOneParticipantResult() { ParticipantResult result = new ParticipantResult(); result.setStartDate(new Date(PARTICIPANT1_STARTDATE)); result.setEndDate(new Date(PARTICIPANT1_ENDDATE)); _aggregator.aggregate(result); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(PARTICIPANT1_STARTDATE, aggregratedResult.getStartInMillis()); assertEquals(PARTICIPANT1_ENDDATE, aggregratedResult.getEndInMillis()); } public void testStartAndEndDateForTwoParticipantResults() { ParticipantResult result1 = new ParticipantResult(); result1.setStartDate(new Date(PARTICIPANT1_STARTDATE)); result1.setEndDate(new Date(PARTICIPANT1_ENDDATE)); ParticipantResult result2 = new ParticipantResult(); result2.setStartDate(new Date(PARTICIPANT2_STARTDATE)); result2.setEndDate(new Date(PARTICIPANT2_ENDDATE)); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(PARTICIPANT1_STARTDATE, aggregratedResult.getStartInMillis()); assertEquals(PARTICIPANT2_ENDDATE, aggregratedResult.getEndInMillis()); } public void testComputeNumberOfMessagesProcessed() { ParticipantResult result1 = new ParticipantResult(); result1.setNumberOfMessagesProcessed(10); ParticipantResult result2 = new ParticipantResult(); result2.setNumberOfMessagesProcessed(15); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(25, aggregratedResult.getNumberOfMessagesProcessed()); } public void testComputeTotalPayloadProcessed() { ParticipantResult result1 = new ParticipantResult(); result1.setTotalPayloadProcessed(PARTICIPANT1_TOTAL_PROCESSED); ParticipantResult result2 = new ParticipantResult(); result2.setTotalPayloadProcessed(PARTICIPANT2_TOTAL_PROCESSED); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(OVERALL_PROCESSED, aggregratedResult.getTotalPayloadProcessed()); } public void testComputeThroughput() { ParticipantResult result1 = new ParticipantResult(); result1.setStartDate(new Date(PARTICIPANT1_STARTDATE)); result1.setEndDate(new Date(PARTICIPANT1_ENDDATE)); result1.setTotalPayloadProcessed(PARTICIPANT1_TOTAL_PROCESSED); ParticipantResult result2 = new ParticipantResult(); result2.setStartDate(new Date(PARTICIPANT2_STARTDATE)); result2.setEndDate(new Date(PARTICIPANT2_ENDDATE)); result2.setTotalPayloadProcessed(PARTICIPANT2_TOTAL_PROCESSED); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(EXPECTED_AGGREGATED_ALL_THROUGHPUT, aggregratedResult.getThroughput(), 0.1); } public void testComputeMessageThroughput() { ParticipantResult result1 = new ParticipantResult(); result1.setStartDate(new Date(PARTICIPANT1_STARTDATE)); result1.setEndDate(new Date(PARTICIPANT1_ENDDATE)); result1.setNumberOfMessagesProcessed(PARTICIPANT1_NUMBER_OF_MESSAGES_PROCESSED); ParticipantResult result2 = new ParticipantResult(); result2.setStartDate(new Date(PARTICIPANT2_STARTDATE)); result2.setEndDate(new Date(PARTICIPANT2_ENDDATE)); result2.setNumberOfMessagesProcessed(PARTICIPANT2_NUMBER_OF_MESSAGES_PROCESSED); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(EXPECTED_AGGREGATED_MESSAGE_THROUGHPUT, aggregratedResult.getMessageThroughput()); } public void testConstantTestNameAndIterationNumberRolledUp() throws Exception { ParticipantResult result1 = new ParticipantResult(); result1.setTestName(TEST_NAME); result1.setIterationNumber(TEST_ITERATION_NUMBER); ParticipantResult result2 = new ParticipantResult(); result2.setTestName(TEST_NAME); result2.setIterationNumber(TEST_ITERATION_NUMBER); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(TEST_ITERATION_NUMBER, aggregratedResult.getIterationNumber()); assertEquals(TEST_NAME, aggregratedResult.getTestName()); } public void testConstantPayloadSizesRolledUp() throws Exception { final int payloadSize = 1024; ParticipantResult result1 = new ParticipantResult(); result1.setPayloadSize(payloadSize); ParticipantResult result2 = new ParticipantResult(); result2.setPayloadSize(payloadSize); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(payloadSize, aggregratedResult.getPayloadSize()); } public void testDifferingPayloadSizesNotRolledUp() throws Exception { final int payload1Size = 1024; final int payload2Size = 2048; ParticipantResult result1 = new ParticipantResult(); result1.setPayloadSize(payload1Size); ParticipantResult result2 = new ParticipantResult(); result2.setPayloadSize(payload2Size); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(0, aggregratedResult.getPayloadSize()); } public void testConstantBatchSizesRolledUp() throws Exception { final int batchSize = 10; ParticipantResult result1 = new ParticipantResult(); result1.setBatchSize(batchSize); ParticipantResult result2 = new ParticipantResult(); result2.setBatchSize(batchSize); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(batchSize, aggregratedResult.getBatchSize()); } public void testDifferingBatchSizesNotRolledUp() throws Exception { final int batch1Size = 10; final int batch2Size = 20; ParticipantResult result1 = new ParticipantResult(); result1.setBatchSize(batch1Size); ParticipantResult result2 = new ParticipantResult(); result2.setBatchSize(batch2Size); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(0, aggregratedResult.getBatchSize()); } public void testConstantAcknowledgeModesRolledUp() throws Exception { ParticipantResult result1 = new ParticipantResult(); result1.setAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE); ParticipantResult result2 = new ParticipantResult(); result2.setAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(Session.DUPS_OK_ACKNOWLEDGE, aggregratedResult.getAcknowledgeMode()); } public void testDifferingAcknowledgeModesNotRolledUp() throws Exception { ParticipantResult result1 = new ParticipantResult(); result1.setBatchSize(Session.AUTO_ACKNOWLEDGE); ParticipantResult result2 = new ParticipantResult(); result2.setBatchSize(Session.SESSION_TRANSACTED); _aggregator.aggregate(result1); _aggregator.aggregate(result2); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(-1, aggregratedResult.getAcknowledgeMode()); } public void testSumNumberOfConsumerAndProducers() throws Exception { final int expectedNumberOfProducers = 1; final int expectedNumberOfConsumers = 2; ParticipantResult result1 = new ParticipantResult(); result1.setTotalNumberOfConsumers(1); ParticipantResult result2 = new ParticipantResult(); result2.setTotalNumberOfConsumers(1); ParticipantResult result3 = new ParticipantResult(); result2.setTotalNumberOfProducers(1); _aggregator.aggregate(result1); _aggregator.aggregate(result2); _aggregator.aggregate(result3); ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); assertEquals(expectedNumberOfConsumers, aggregratedResult.getTotalNumberOfConsumers()); assertEquals(expectedNumberOfProducers, aggregratedResult.getTotalNumberOfProducers()); } }