blob: 41da1edb33cb2f0467551c1cd3328f561a7573ce [file] [log] [blame]
/*
* 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());
}
}