From 1b9e1e0f0b65f31e0edec75f36a7b95532f9317c Mon Sep 17 00:00:00 2001 From: Christian Wulf <chw@informatik.uni-kiel.de> Date: Wed, 2 Jul 2014 21:56:23 +0200 Subject: [PATCH] added IRecordFactoryMethod concept --- scripts/MooBench-cmd/startMooBench.cmd | 4 +- .../stage/io/IRecordFactoryMethod.java | 12 +++++ .../stage/io/RecordFactory.java | 27 ++++++++++ .../stage/io/TCPReader.java | 50 ++++++++++++++++++- 4 files changed, 89 insertions(+), 4 deletions(-) create mode 100644 src/main/java/teetime/variant/methodcallWithPorts/stage/io/IRecordFactoryMethod.java create mode 100644 src/main/java/teetime/variant/methodcallWithPorts/stage/io/RecordFactory.java diff --git a/scripts/MooBench-cmd/startMooBench.cmd b/scripts/MooBench-cmd/startMooBench.cmd index a3735bd3..46e8aef4 100644 --- a/scripts/MooBench-cmd/startMooBench.cmd +++ b/scripts/MooBench-cmd/startMooBench.cmd @@ -1,9 +1,9 @@ set cp=.;MooBench.jar;META-INF/kieker.monitoring.properties;META-INF/kieker.logging.properties set jvmParams=-javaagent:lib/kieker-1.9_aspectj.jar -Dorg.aspectj.weaver.loadtime.configuration=META-INF/kieker.aop.xml -Dorg.aspectj.weaver.showWeaveInfo=true -Daj.weaving.verbose=true -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -set params=-d 10 -h 1 -m 0 -t 1000000 -o tmp/test.txt -q +set params=-d 10 -h 1 -m 0 -t 3000000 -o tmp/test.txt -q set runs=%1 -for %%i in (1,1,%runs%) do ( +for %%i in (%runs%) do ( java -cp %cp% %jvmParams% mooBench.benchmark.Benchmark %params% ) \ No newline at end of file diff --git a/src/main/java/teetime/variant/methodcallWithPorts/stage/io/IRecordFactoryMethod.java b/src/main/java/teetime/variant/methodcallWithPorts/stage/io/IRecordFactoryMethod.java new file mode 100644 index 00000000..d1d997c2 --- /dev/null +++ b/src/main/java/teetime/variant/methodcallWithPorts/stage/io/IRecordFactoryMethod.java @@ -0,0 +1,12 @@ +package teetime.variant.methodcallWithPorts.stage.io; + +import java.nio.ByteBuffer; + +import kieker.common.record.IMonitoringRecord; +import kieker.common.util.registry.ILookup; + +public interface IRecordFactoryMethod { + + IMonitoringRecord create(ByteBuffer buffer, ILookup<String> stringRegistry); + +} diff --git a/src/main/java/teetime/variant/methodcallWithPorts/stage/io/RecordFactory.java b/src/main/java/teetime/variant/methodcallWithPorts/stage/io/RecordFactory.java new file mode 100644 index 00000000..9e46798f --- /dev/null +++ b/src/main/java/teetime/variant/methodcallWithPorts/stage/io/RecordFactory.java @@ -0,0 +1,27 @@ +package teetime.variant.methodcallWithPorts.stage.io; + +import java.nio.ByteBuffer; +import java.util.HashMap; +import java.util.Map; + +import kieker.common.exception.MonitoringRecordException; +import kieker.common.record.IMonitoringRecord; +import kieker.common.util.registry.ILookup; + +public final class RecordFactory { + + private final Map<String, IRecordFactoryMethod> recordFactoryMethods = new HashMap<String, IRecordFactoryMethod>(); + + public IMonitoringRecord create(final int clazzId, final ByteBuffer buffer, final ILookup<String> stringRegistry) throws MonitoringRecordException { + String recordClassName = stringRegistry.get(clazzId); + IRecordFactoryMethod recordFactoryMethod = this.recordFactoryMethods.get(recordClassName); + if (recordFactoryMethod == null) { + throw new IllegalStateException("recordClassName: " + recordClassName); + } + return recordFactoryMethod.create(buffer, stringRegistry); + } + + public void register(final String recordClassName, final IRecordFactoryMethod recordFactoryMethod) { + this.recordFactoryMethods.put(recordClassName, recordFactoryMethod); + } +} diff --git a/src/main/java/teetime/variant/methodcallWithPorts/stage/io/TCPReader.java b/src/main/java/teetime/variant/methodcallWithPorts/stage/io/TCPReader.java index 9a775c4e..4ad70dcc 100644 --- a/src/main/java/teetime/variant/methodcallWithPorts/stage/io/TCPReader.java +++ b/src/main/java/teetime/variant/methodcallWithPorts/stage/io/TCPReader.java @@ -28,8 +28,11 @@ import teetime.variant.methodcallWithPorts.framework.core.ProducerStage; import kieker.common.exception.MonitoringRecordException; import kieker.common.logging.Log; import kieker.common.logging.LogFactory; -import kieker.common.record.AbstractMonitoringRecord; import kieker.common.record.IMonitoringRecord; +import kieker.common.record.flow.trace.operation.AfterOperationEvent; +import kieker.common.record.flow.trace.operation.BeforeOperationEvent; +import kieker.common.record.flow.trace.operation.CallOperationEvent; +import kieker.common.record.misc.KiekerMetadataRecord; import kieker.common.record.misc.RegistryRecord; import kieker.common.util.registry.ILookup; import kieker.common.util.registry.Lookup; @@ -52,6 +55,8 @@ public class TCPReader extends ProducerStage<Void, IMonitoringRecord> { private TCPStringReader tcpStringReader; + private RecordFactory recordFactory; + // @Override // implement onStop // public void onPipelineStops() { // super.logger.info("Shutdown of TCPReader requested."); @@ -77,11 +82,51 @@ public class TCPReader extends ProducerStage<Void, IMonitoringRecord> { @Override public void onStart() { + this.recordFactory = new RecordFactory(); + this.register(); + this.tcpStringReader = new TCPStringReader(this.port2, this.stringRegistry); this.tcpStringReader.start(); super.onStart(); } + private void register() { + this.recordFactory.register(kieker.common.record.flow.trace.TraceMetadata.class.getCanonicalName(), new IRecordFactoryMethod() { + @Override + public IMonitoringRecord create(final ByteBuffer buffer, final ILookup<String> stringRegistry) { + return new kieker.common.record.flow.trace.TraceMetadata(buffer, stringRegistry); + } + }); + + this.recordFactory.register(KiekerMetadataRecord.class.getCanonicalName(), new IRecordFactoryMethod() { + @Override + public IMonitoringRecord create(final ByteBuffer buffer, final ILookup<String> stringRegistry) { + return new KiekerMetadataRecord(buffer, stringRegistry); + } + }); + + this.recordFactory.register(BeforeOperationEvent.class.getCanonicalName(), new IRecordFactoryMethod() { + @Override + public IMonitoringRecord create(final ByteBuffer buffer, final ILookup<String> stringRegistry) { + return new BeforeOperationEvent(buffer, stringRegistry); + } + }); + + this.recordFactory.register(AfterOperationEvent.class.getCanonicalName(), new IRecordFactoryMethod() { + @Override + public IMonitoringRecord create(final ByteBuffer buffer, final ILookup<String> stringRegistry) { + return new AfterOperationEvent(buffer, stringRegistry); + } + }); + + this.recordFactory.register(CallOperationEvent.class.getCanonicalName(), new IRecordFactoryMethod() { + @Override + public IMonitoringRecord create(final ByteBuffer buffer, final ILookup<String> stringRegistry) { + return new CallOperationEvent(buffer, stringRegistry); + } + }); + } + @Override protected void execute5(final Void element) { ServerSocketChannel serversocket = null; @@ -104,7 +149,8 @@ public class TCPReader extends ProducerStage<Void, IMonitoringRecord> { final long loggingTimestamp = buffer.getLong(); final IMonitoringRecord record; try { // NOCS (Nested try-catch) - record = AbstractMonitoringRecord.createFromByteBuffer(clazzid, buffer, this.stringRegistry); + record = this.recordFactory.create(clazzid, buffer, this.stringRegistry); + // record = AbstractMonitoringRecord.createFromByteBuffer(clazzid, buffer, this.stringRegistry); record.setLoggingTimestamp(loggingTimestamp); this.send(record); } catch (final MonitoringRecordException ex) { -- GitLab