TeeTime issueshttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues2018-03-25T13:44:55+02:00https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/364Add Changelog for 3.0 to Website2018-03-25T13:44:55+02:00Sören HenningAdd Changelog for 3.0 to WebsiteVersion 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/363Add marker interface for producers2018-02-26T14:02:50+01:00Christian WulfAdd marker interface for producersUseful for the testing framework. Allows to detect a producer at compile-time so that we can write ``test(producer).start();``. We should validate that ``has producer interface <=> has no input ports``.Useful for the testing framework. Allows to detect a producer at compile-time so that we can write ``test(producer).start();``. We should validate that ``has producer interface <=> has no input ports``.Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/360Automatically generate @since tag2018-01-16T13:41:00+01:00Christian WulfAutomatically generate @since taghttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/358Let each node have its individual scheduling2018-01-08T14:58:06+01:00Christian WulfLet each node have its individual schedulingProposals:
1. ``nodeToStages(scheduler, name, stages...)``
1. ``new Execution(Scheduler...)``
1. Allow to assign each named node not only an IP address, but also a scheduler (using the fqn)Proposals:
1. ``nodeToStages(scheduler, name, stages...)``
1. ``new Execution(Scheduler...)``
1. Allow to assign each named node not only an IP address, but also a scheduler (using the fqn)https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/357Add wiki entry for logging2017-12-31T11:36:39+01:00Christian WulfAdd wiki entry for loggingmaven dep + xml config filemaven dep + xml config fileVersion 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/351Add new Java 9 hint for spin waits2017-10-20T21:05:00+02:00Christian WulfAdd new Java 9 hint for spin waitssee JEP 285: Spin-Wait Hints (http://openjdk.java.net/jeps/285)see JEP 285: Spin-Wait Hints (http://openjdk.java.net/jeps/285)https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/350Let threads start their execution not until receiving a sign by the scheduler2017-08-16T13:52:37+02:00Christian WulfLet threads start their execution not until receiving a sign by the schedulertry to use a similar/same methodology for both schedulerstry to use a similar/same methodology for both schedulersChristian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/348Fix FIXMEs2017-08-15T15:05:47+02:00Christian WulfFix FIXMEsChristian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/347Fix concurrency bug in DynamicDistributorTest.shouldWorkWithCreateActionTrigg...2017-08-15T13:06:25+02:00Christian WulfFix concurrency bug in DynamicDistributorTest.shouldWorkWithCreateActionTriggers()```java
java.lang.AssertionError:
Expected: is <[2]>
but: was <[2]>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:956)
at org.junit.Assert.assertThat(Assert.java:923)
...```java
java.lang.AssertionError:
Expected: is <[2]>
but: was <[2]>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:956)
at org.junit.Assert.assertThat(Assert.java:923)
at teetime.stage.basic.distributor.dynamic.DynamicDistributorTest.assertValuesForIndex(DynamicDistributorTest.java:119)
at teetime.stage.basic.distributor.dynamic.DynamicDistributorTest.shouldWorkWithCreateActionTriggers(DynamicDistributorTest.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
```Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/345Speed up the scheduling of stateless stages2017-08-15T11:20:26+02:00Christian WulfSpeed up the scheduling of stateless stagesIdea:
The instance of a stateless stage could be executed by multiple threads at the same time.
Current Problems:
- The user must still indicate whether the ordering should be preserved. However, we could set the default to "preserve or...Idea:
The instance of a stateless stage could be executed by multiple threads at the same time.
Current Problems:
- The user must still indicate whether the ordering should be preserved. However, we could set the default to "preserve ordering".
- Each thread must reserve or copy its required number of input elements. For this purpose, such a stateless stage must consume a **fixed** number of elements per execution.
- What should happen with unprocessed input elements if an error occurs?Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/343Use an atomic bit vector to represent non-empty stage levels2017-08-15T12:40:10+02:00Christian WulfUse an atomic bit vector to represent non-empty stage levelsRequirements:
- arbitrary vector length (not only 32 or 64 bits)
- low synchronization overhead (e.g., by using compare and set)Requirements:
- arbitrary vector length (not only 32 or 64 bits)
- low synchronization overhead (e.g., by using compare and set)Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/341Finish implementation of DynamicTaskFarmStage2017-10-20T20:14:50+02:00Christian WulfFinish implementation of DynamicTaskFarmStageSo far, ``declareActive()`` at runtime is required, but not yet implemented/mergedSo far, ``declareActive()`` at runtime is required, but not yet implemented/mergedVersion 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/339How to handle time-triggered stages?2017-08-02T14:28:38+02:00Christian WulfHow to handle time-triggered stages?Some time-triggered stages:
* Delay
* ElementDelayMeasuringStage
* ElementThroughputMeasuringStage
The semantics of a time-triggered stage depends on whether it should react on a time trigger
* instantly (out-of-scheduling), or
* on the...Some time-triggered stages:
* Delay
* ElementDelayMeasuringStage
* ElementThroughputMeasuringStage
The semantics of a time-triggered stage depends on whether it should react on a time trigger
* instantly (out-of-scheduling), or
* on the next regular scheduling cycle by enforcing a new cycle, or
* on the next regular scheduling cycle by waiting for the next regular cycle.
Hence, such stages require a particular scheduling approach. This implies that we must provide more than one scheduling. And this implies that there is no single optimal scheduling approach for all cases.Version 3.0https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/338Add method CompositeStage.declareActive()2017-08-01T21:30:45+02:00Christian WulfAdd method CompositeStage.declareActive()Currently, a composite stage can be set active by setting one or more of its substages active:
```java
wc.getInputPort().getOwningStage().declareActive();
```
We should also add ``declareActive()`` to ``CompositeStage``. The stage devel...Currently, a composite stage can be set active by setting one or more of its substages active:
```java
wc.getInputPort().getOwningStage().declareActive();
```
We should also add ``declareActive()`` to ``CompositeStage``. The stage developer can then decide what ``declareActive()`` should mean for the particular composite stage.Version 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/335Automatically determine a reasonable capacity in TaskQueue2017-12-22T10:32:01+01:00Christian WulfAutomatically determine a reasonable capacity in TaskQueueChristian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/331Reconsider map with threads and exceptions for other scheduling approaches2017-06-14T12:49:45+02:00Christian WulfReconsider map with threads and exceptions for other scheduling approachesThere is no dedicated thread for a stage when using the global task queue scheduling. The following interface is thus suboptimal:
``teetime.framework.exceptionHandling.AbstractExceptionListenerFactory.createInstance(Thread)``
Same appli...There is no dedicated thread for a stage when using the global task queue scheduling. The following interface is thus suboptimal:
``teetime.framework.exceptionHandling.AbstractExceptionListenerFactory.createInstance(Thread)``
Same applies for ``Stage.setOwningThread``Version 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/330Use Jenkins DSL for description of build pipelines2017-06-01T09:24:40+02:00Nelson Tavares de SousaUse Jenkins DSL for description of build pipelinesJenkins allows to use a groovy based DSL to describe the build process. See: https://jenkinsci.github.io/job-dsl-plugin/
Cool thing about this, it allows to implement and modify the CI process like "normal" program code. Even static an...Jenkins allows to use a groovy based DSL to describe the build process. See: https://jenkinsci.github.io/job-dsl-plugin/
Cool thing about this, it allows to implement and modify the CI process like "normal" program code. Even static analysis can be performed on the build config.
Furthermore, it allows for a more fine-grained configuration of the build process (for instance, individual branches can be handled differently). Otherwise, a seperate job needs to be created for this.
#DevOpsChristian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/329Use jupyter notebook for the tutorials2017-05-30T14:20:42+02:00Nelson Tavares de SousaUse jupyter notebook for the tutorialsThere is a Java kernel for Jupyter Notebook which allows to put the tutorial which we have in our wiki into an interactive notebook.
See: https://github.com/hadim/scijava-jupyter-kernel/blob/master/notebooks/Scijava.ipynbThere is a Java kernel for Jupyter Notebook which allows to put the tutorial which we have in our wiki into an interactive notebook.
See: https://github.com/hadim/scijava-jupyter-kernel/blob/master/notebooks/Scijava.ipynbChristian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/328Reconsider Default Distributor Strategy2017-05-04T16:06:18+02:00Sören HenningReconsider Default Distributor StrategyCurrently, the default strategy for Distributor is a round robin strategy. However, from a user perspective this strategy can lead to errors, which are hard to find, if I expect that my elements are passed to all connected stages.
My su...Currently, the default strategy for Distributor is a round robin strategy. However, from a user perspective this strategy can lead to errors, which are hard to find, if I expect that my elements are passed to all connected stages.
My suggestion is to redefine the default behavior of the Distributor either as using the `CopyByReferenceStrategy` as default or do not give a default strategy (i.e., a constructor without a parameter).https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/326Add Default Scheduler for Pipes2017-04-26T14:37:22+02:00Sören HenningAdd Default Scheduler for PipesSee TeeTime Benchmarks projectSee TeeTime Benchmarks project