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

added DirWith*2RecordFilter

parent c36a810c
Branches
Tags
No related merge requests found
-a pipeline needs to be a stage, too, to allow the composition of stages -a pipeline needs to be a stage, too, to allow the composition of stages
-instead of using work-stealing, sort the input in desc order to process the most computationally intensive elements first (load-balancing) -instead of using work-stealing, sort the input in desc order to process the most computationally intensive elements first (load-balancing)
-for a novice programmer, it is difficult to select the best choice and combination of patterns to maximize performance -for a novice programmer, it is difficult to select the best choice and combination of patterns to maximize performance
-switch vs. farm:
-switch: different branch logics
-farm: same branch logics
-if executed send() method, execute the corresponding successor stage at once to avoid scheduling, i.e., waste of performance
-same thread: send = put to pipe & execute corresponding successor stage
-different thread: send = put to pipe (only)
- -
\ No newline at end of file
...@@ -38,14 +38,14 @@ import kieker.common.util.filesystem.FSUtil; ...@@ -38,14 +38,14 @@ import kieker.common.util.filesystem.FSUtil;
* *
* @since 1.10 * @since 1.10
*/ */
public class File2RecordFilter extends Pipeline<File, IMonitoringRecord> { public class Dir2RecordFilter extends Pipeline<File, IMonitoringRecord> {
private ClassNameRegistryRepository classNameRegistryRepository; private ClassNameRegistryRepository classNameRegistryRepository;
/** /**
* @since 1.10 * @since 1.10
*/ */
public File2RecordFilter(final ClassNameRegistryRepository classNameRegistryRepository) { public Dir2RecordFilter(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository; this.classNameRegistryRepository = classNameRegistryRepository;
// FIXME does not yet work with more than one thread due to classNameRegistryRepository: classNameRegistryRepository is set after the ctor // 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 File2RecordFilter extends Pipeline<File, IMonitoringRecord> { ...@@ -91,7 +91,7 @@ public class File2RecordFilter extends Pipeline<File, IMonitoringRecord> {
/** /**
* @since 1.10 * @since 1.10
*/ */
public File2RecordFilter() { public Dir2RecordFilter() {
this(null); this(null);
} }
......
package teetime.variant.methodcallWithPorts.stage.kieker;
import java.io.File;
import teetime.variant.methodcallWithPorts.framework.core.Pipeline;
import teetime.variant.methodcallWithPorts.stage.io.Directory2FilesFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryCreationFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryRepository;
import teetime.variant.methodcallWithPorts.stage.kieker.fileToRecord.BinaryFile2RecordFilter;
import kieker.common.record.IMonitoringRecord;
public class DirWithBin2RecordFilter extends Pipeline<File, IMonitoringRecord> {
private ClassNameRegistryRepository classNameRegistryRepository;
public DirWithBin2RecordFilter(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository;
final ClassNameRegistryCreationFilter classNameRegistryCreationFilter = new ClassNameRegistryCreationFilter(classNameRegistryRepository);
final Directory2FilesFilter directory2FilesFilter = new Directory2FilesFilter();
final BinaryFile2RecordFilter binaryFile2RecordFilter = new BinaryFile2RecordFilter(classNameRegistryRepository);
this.setFirstStage(classNameRegistryCreationFilter);
this.addIntermediateStage(directory2FilesFilter);
this.setLastStage(binaryFile2RecordFilter);
}
public DirWithBin2RecordFilter() {
this(null);
}
public ClassNameRegistryRepository getClassNameRegistryRepository() {
return this.classNameRegistryRepository;
}
public void setClassNameRegistryRepository(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository;
}
}
package teetime.variant.methodcallWithPorts.stage.kieker;
import java.io.File;
import teetime.variant.methodcallWithPorts.framework.core.Pipeline;
import teetime.variant.methodcallWithPorts.stage.io.Directory2FilesFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryCreationFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryRepository;
import teetime.variant.methodcallWithPorts.stage.kieker.fileToRecord.DatFile2RecordFilter;
import kieker.common.record.IMonitoringRecord;
public class DirWithDat2RecordFilter extends Pipeline<File, IMonitoringRecord> {
private ClassNameRegistryRepository classNameRegistryRepository;
public DirWithDat2RecordFilter(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository;
final ClassNameRegistryCreationFilter classNameRegistryCreationFilter = new ClassNameRegistryCreationFilter(classNameRegistryRepository);
final Directory2FilesFilter directory2FilesFilter = new Directory2FilesFilter();
final DatFile2RecordFilter datFile2RecordFilter = new DatFile2RecordFilter(classNameRegistryRepository);
this.setFirstStage(classNameRegistryCreationFilter);
this.addIntermediateStage(directory2FilesFilter);
this.setLastStage(datFile2RecordFilter);
}
public DirWithDat2RecordFilter() {
this(null);
}
public ClassNameRegistryRepository getClassNameRegistryRepository() {
return this.classNameRegistryRepository;
}
public void setClassNameRegistryRepository(final ClassNameRegistryRepository classNameRegistryRepository) {
this.classNameRegistryRepository = classNameRegistryRepository;
}
}
...@@ -25,7 +25,7 @@ import teetime.variant.methodcallWithPorts.framework.core.RunnableStage; ...@@ -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.SingleElementPipe;
import teetime.variant.methodcallWithPorts.framework.core.pipe.SpScPipe; import teetime.variant.methodcallWithPorts.framework.core.pipe.SpScPipe;
import teetime.variant.methodcallWithPorts.stage.CollectorSink; import teetime.variant.methodcallWithPorts.stage.CollectorSink;
import teetime.variant.methodcallWithPorts.stage.kieker.File2RecordFilter; import teetime.variant.methodcallWithPorts.stage.kieker.Dir2RecordFilter;
import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryRepository; import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryRepository;
import kieker.common.record.IMonitoringRecord; import kieker.common.record.IMonitoringRecord;
...@@ -53,7 +53,7 @@ public class RecordReaderAnalysis extends Analysis { ...@@ -53,7 +53,7 @@ public class RecordReaderAnalysis extends Analysis {
private Pipeline<File, Object> buildProducerPipeline() { private Pipeline<File, Object> buildProducerPipeline() {
this.classNameRegistryRepository = new ClassNameRegistryRepository(); this.classNameRegistryRepository = new ClassNameRegistryRepository();
// create stages // create stages
File2RecordFilter file2RecordFilter = new File2RecordFilter(this.classNameRegistryRepository); Dir2RecordFilter file2RecordFilter = new Dir2RecordFilter(this.classNameRegistryRepository);
CollectorSink<IMonitoringRecord> collector = new CollectorSink<IMonitoringRecord>(this.elementCollection); CollectorSink<IMonitoringRecord> collector = new CollectorSink<IMonitoringRecord>(this.elementCollection);
final Pipeline<File, Object> pipeline = new Pipeline<File, Object>(); final Pipeline<File, Object> pipeline = new Pipeline<File, Object>();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment