Skip to content
Snippets Groups Projects
Commit a5860edb authored by Christian Wulf's avatar Christian Wulf
Browse files

adapted performance test assertions

parent b1ea9feb
No related branches found
No related tags found
No related merge requests found
......@@ -8,15 +8,17 @@ public class SpScPipe<T> extends AbstractPipe<T> {
private final FFBufferOrdered3<T> queue;
public SpScPipe(final int initialCapacity) {
private SpScPipe(final int initialCapacity) {
this.queue = new FFBufferOrdered3<T>(initialCapacity);
}
public static <T> void connect(final OutputPort<T> sourcePort, final InputPort<T> targetPort, final int initialCapacity) {
IPipe<T> pipe = new SpScPipe<T>(initialCapacity);
sourcePort.setPipe(pipe);
targetPort.setPipe(pipe);
sourcePort.setCachedTargetStage(targetPort.getOwningStage());
if (sourcePort != null) {
sourcePort.setPipe(pipe);
sourcePort.setCachedTargetStage(targetPort.getOwningStage());
}
}
@Override
......
......@@ -38,14 +38,14 @@ import kieker.common.util.filesystem.FSUtil;
*
* @since 1.10
*/
public class Dir2RecordFilter extends Pipeline<File, IMonitoringRecord> {
public class Dir2RecordsFilter extends Pipeline<File, IMonitoringRecord> {
private ClassNameRegistryRepository classNameRegistryRepository;
/**
* @since 1.10
*/
public Dir2RecordFilter(final ClassNameRegistryRepository classNameRegistryRepository) {
public Dir2RecordsFilter(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository;
// FIXME does not yet work with more than one thread due to classNameRegistryRepository: classNameRegistryRepository is set after the ctor
......@@ -91,7 +91,7 @@ public class Dir2RecordFilter extends Pipeline<File, IMonitoringRecord> {
/**
* @since 1.10
*/
public Dir2RecordFilter() {
public Dir2RecordsFilter() {
this(null);
}
......
......@@ -73,11 +73,21 @@ public class ChwComparisonMethodcallWithPorts {
PerformanceResult test19c = performanceResults
.get("testWithManyObjectsAnd4Threads(teetime.variant.methodcallWithPorts.examples.experiment19.MethodCallThoughputTimestampAnalysis19Test)");
assertEquals(60, (double) test14.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
assertEquals(14, (double) test10.quantiles.get(0.5) / test1.quantiles.get(0.5), 2.1);
assertEquals(32, (double) test11.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1);
assertEquals(22, (double) test9.quantiles.get(0.5) / test1.quantiles.get(0.5), 2.1);
assertEquals(44, (double) test15.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1);
// until 25.06.2014 (incl.)
// assertEquals(60, (double) test14.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
// assertEquals(14, (double) test10.quantiles.get(0.5) / test1.quantiles.get(0.5), 2.1);
// assertEquals(32, (double) test11.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1);
// assertEquals(22, (double) test9.quantiles.get(0.5) / test1.quantiles.get(0.5), 2.1);
// assertEquals(44, (double) test15.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1);
// assertEquals(39, (double) test17.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1);
// since 26.06.2014 (incl.)
assertEquals(76, (double) test14.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1); // +16
assertEquals(26, (double) test10.quantiles.get(0.5) / test1.quantiles.get(0.5), 2.1); // +14
assertEquals(44, (double) test11.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1); // +12
assertEquals(36, (double) test9.quantiles.get(0.5) / test1.quantiles.get(0.5), 2.1); // +14
assertEquals(44, (double) test15.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1); // +0
assertEquals(53, (double) test17.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1); // +14
// below results vary too much, possibly due to the OS' scheduler
// assertEquals(RESULT_TESTS_16, (double) test16a.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
......@@ -88,14 +98,12 @@ public class ChwComparisonMethodcallWithPorts {
// assertEquals(RESULT_TESTS_19, (double) test19b.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
// assertEquals(RESULT_TESTS_19, (double) test19c.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
assertEquals(39, (double) test17.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1);
// check speedup
assertEquals(2, (double) test16a.overallDurationInNs / test16b.overallDurationInNs, 0.2);
assertEquals(2, (double) test16a.overallDurationInNs / test16b.overallDurationInNs, 0.3);
assertEquals(2.5, (double) test16a.overallDurationInNs / test16c.overallDurationInNs, 0.2);
assertEquals(2, (double) test19a.overallDurationInNs / test19b.overallDurationInNs, 0.2);
assertEquals(2.5, (double) test19a.overallDurationInNs / test19c.overallDurationInNs, 0.2);
assertEquals(2, (double) test19a.overallDurationInNs / test19b.overallDurationInNs, 0.3);
assertEquals(2.5, (double) test19a.overallDurationInNs / test19c.overallDurationInNs, 0.3);
}
}
......@@ -154,18 +154,12 @@ public class MethodCallThroughputAnalysis17 extends Analysis {
pipeline.addIntermediateStage(stopTimestampFilter);
pipeline.setLastStage(collectorSink);
IPipe<TimestampObject> startPipe = new SpScPipe<TimestampObject>(SPSC_INITIAL_CAPACITY);
try {
for (int i = 0; i < this.numInputObjects; i++) {
startPipe.add(this.inputObjectCreator.create());
}
startPipe.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
SpScPipe.connect(null, relay.getInputPort(), SPSC_INITIAL_CAPACITY);
IPipe<TimestampObject> startPipe = relay.getInputPort().getPipe();
for (int i = 0; i < this.numInputObjects; i++) {
startPipe.add(this.inputObjectCreator.create());
}
relay.getInputPort().setPipe(startPipe);
// previousStage.getOutputPort().pipe = startPipe;
startPipe.close();
UnorderedGrowablePipe.connect(relay.getOutputPort(), startTimestampFilter.getInputPort());
......
......@@ -25,7 +25,7 @@ import teetime.variant.methodcallWithPorts.framework.core.RunnableStage;
import teetime.variant.methodcallWithPorts.framework.core.pipe.SingleElementPipe;
import teetime.variant.methodcallWithPorts.framework.core.pipe.SpScPipe;
import teetime.variant.methodcallWithPorts.stage.CollectorSink;
import teetime.variant.methodcallWithPorts.stage.kieker.Dir2RecordFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.Dir2RecordsFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryRepository;
import kieker.common.record.IMonitoringRecord;
......@@ -53,7 +53,7 @@ public class RecordReaderAnalysis extends Analysis {
private Pipeline<File, Object> buildProducerPipeline() {
this.classNameRegistryRepository = new ClassNameRegistryRepository();
// create stages
Dir2RecordFilter file2RecordFilter = new Dir2RecordFilter(this.classNameRegistryRepository);
Dir2RecordsFilter file2RecordFilter = new Dir2RecordsFilter(this.classNameRegistryRepository);
CollectorSink<IMonitoringRecord> collector = new CollectorSink<IMonitoringRecord>(this.elementCollection);
final Pipeline<File, Object> pipeline = new Pipeline<File, Object>();
......@@ -62,9 +62,8 @@ public class RecordReaderAnalysis extends Analysis {
SingleElementPipe.connect(file2RecordFilter.getOutputPort(), collector.getInputPort());
SpScPipe<File> dirInputPipe = new SpScPipe<File>(1);
dirInputPipe.add(new File("src/test/data/bookstore-logs"));
file2RecordFilter.getInputPort().setPipe(dirInputPipe);
SpScPipe.connect(null, file2RecordFilter.getInputPort(), 1);
file2RecordFilter.getInputPort().getPipe().add(new File("src/test/data/bookstore-logs"));
return pipeline;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment