Skip to content
Snippets Groups Projects
Commit c32b1a52 authored by Nelson Tavares de Sousa's avatar Nelson Tavares de Sousa
Browse files

Merge remote-tracking branch 'origin/master' into runtime-pipe-check

Conflicts:
	src/test/java/teetime/framework/AbstractStageTest.java
	src/test/java/teetime/stage/basic/merger/MergerSignalTest.java
parents 55c79ff4 4d542a15
Branches
Tags
No related merge requests found
...@@ -209,7 +209,7 @@ public abstract class AbstractStage { ...@@ -209,7 +209,7 @@ public abstract class AbstractStage {
* The port which received the signal * The port which received the signal
*/ */
@SuppressWarnings("PMD.DataflowAnomalyAnalysis") @SuppressWarnings("PMD.DataflowAnomalyAnalysis")
public final void onSignal(final ISignal signal, final InputPort<?> inputPort) { final void onSignal(final ISignal signal, final InputPort<?> inputPort) {
Class<? extends ISignal> signalClass = signal.getClass(); Class<? extends ISignal> signalClass = signal.getClass();
Set<InputPort<?>> signalReceivedInputPorts; Set<InputPort<?>> signalReceivedInputPorts;
......
...@@ -23,11 +23,16 @@ import static org.junit.Assert.assertThat; ...@@ -23,11 +23,16 @@ import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import teetime.framework.signal.StartingSignal;
import teetime.framework.signal.TerminatingSignal;
import teetime.stage.Cache; import teetime.stage.Cache;
import teetime.stage.Counter; import teetime.stage.Counter;
import teetime.stage.InitialElementProducer; import teetime.stage.InitialElementProducer;
import teetime.stage.basic.merger.Merger;
import teetime.stage.basic.merger.MergerTestingPipe;
public class AbstractStageTest { public class AbstractStageTest {
...@@ -117,7 +122,92 @@ public class AbstractStageTest { ...@@ -117,7 +122,92 @@ public class AbstractStageTest {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
}
//
//
// Moved from MergerSignalTest
//
//
private Merger<Integer> arbitraryStage;
private InputPort<Integer> firstPort;
private InputPort<Integer> secondPort;
private MergerTestingPipe mergerOutputPipe;
@Before
public void beforeSignalTesting() {
arbitraryStage = new Merger<Integer>();
arbitraryStage.declareActive(); // necessary to initialize the owning thread for onStarting()
firstPort = arbitraryStage.getNewInputPort();
secondPort = arbitraryStage.getNewInputPort();
mergerOutputPipe = new MergerTestingPipe();
arbitraryStage.getOutputPort().setPipe(mergerOutputPipe);
}
@Test
public void testSameSignal() {
((AbstractStage) arbitraryStage).onSignal(new StartingSignal(), firstPort);
assertTrue(mergerOutputPipe.startSent());
mergerOutputPipe.reset();
((AbstractStage) arbitraryStage).onSignal(new StartingSignal(), secondPort);
assertFalse(mergerOutputPipe.startSent());
}
@Test
public void testDifferentSignals() {
((AbstractStage) arbitraryStage).onSignal(new StartingSignal(), firstPort);
assertTrue(mergerOutputPipe.startSent());
mergerOutputPipe.reset();
((AbstractStage) arbitraryStage).onSignal(new TerminatingSignal(), secondPort);
assertFalse(mergerOutputPipe.startSent());
}
@Test
public void testInterleavedSignals() {
((AbstractStage) arbitraryStage).onSignal(new StartingSignal(), firstPort);
assertTrue(mergerOutputPipe.startSent());
assertFalse(mergerOutputPipe.terminateSent());
mergerOutputPipe.reset();
((AbstractStage) arbitraryStage).onSignal(new TerminatingSignal(), secondPort);
assertFalse(mergerOutputPipe.startSent());
assertFalse(mergerOutputPipe.terminateSent());
mergerOutputPipe.reset();
((AbstractStage) arbitraryStage).onSignal(new TerminatingSignal(), firstPort);
assertFalse(mergerOutputPipe.startSent());
assertTrue(mergerOutputPipe.terminateSent());
mergerOutputPipe.reset();
((AbstractStage) arbitraryStage).onSignal(new TerminatingSignal(), firstPort);
assertFalse(mergerOutputPipe.startSent());
assertFalse(mergerOutputPipe.terminateSent());
mergerOutputPipe.reset();
((AbstractStage) arbitraryStage).onSignal(new StartingSignal(), secondPort);
assertFalse(mergerOutputPipe.startSent());
assertFalse(mergerOutputPipe.terminateSent());
}
@Test
public void testMultipleSignals() {
((AbstractStage) arbitraryStage).onSignal(new StartingSignal(), firstPort);
assertTrue(mergerOutputPipe.startSent());
mergerOutputPipe.reset();
((AbstractStage) arbitraryStage).onSignal(new StartingSignal(), firstPort);
assertFalse(mergerOutputPipe.startSent());
mergerOutputPipe.reset();
((AbstractStage) arbitraryStage).onSignal(new StartingSignal(), firstPort);
assertFalse(mergerOutputPipe.startSent());
mergerOutputPipe.reset();
((AbstractStage) arbitraryStage).onSignal(new StartingSignal(), secondPort);
assertFalse(mergerOutputPipe.startSent());
} }
} }
/**
* Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime-framework.github.io)
*
* Licensed 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 teetime.stage.basic.merger;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
import teetime.framework.Configuration;
import teetime.framework.Execution;
import teetime.framework.InputPort;
import teetime.framework.signal.StartingSignal;
import teetime.framework.signal.TerminatingSignal;
import teetime.stage.InitialElementProducer;
import teetime.stage.basic.Sink;
public class MergerSignalTest extends Configuration {
private Merger<Integer> merger;
private InputPort<Integer> firstPort;
private InputPort<Integer> secondPort;
private MergerTestingPipe mergerOutputPipe;
@Before
public void beforeSignalTesting() {
merger = new Merger<Integer>();
merger.declareActive(); // necessary to initialize the owning thread for onStarting()
firstPort = merger.getNewInputPort();
secondPort = merger.getNewInputPort();
connectPorts(merger.getOutputPort(), new Sink<Integer>().getInputPort()); // We need to initialze the context to avoid NPE
connectPorts(new InitialElementProducer<Integer>(new Integer(1)).getOutputPort(), firstPort);
connectPorts(new InitialElementProducer<Integer>(new Integer(2)).getOutputPort(), secondPort);
new Execution<Configuration>(this);
mergerOutputPipe = new MergerTestingPipe();
merger.getOutputPort().setPipe(mergerOutputPipe);
}
@Test
public void testSameSignal() {
merger.onSignal(new StartingSignal(), firstPort);
assertTrue(mergerOutputPipe.startSent());
mergerOutputPipe.reset();
merger.onSignal(new StartingSignal(), secondPort);
assertFalse(mergerOutputPipe.startSent());
}
@Test
public void testDifferentSignals() {
merger.onSignal(new StartingSignal(), firstPort);
assertTrue(mergerOutputPipe.startSent());
mergerOutputPipe.reset();
merger.onSignal(new TerminatingSignal(), secondPort);
assertFalse(mergerOutputPipe.startSent());
}
@Test
public void testInterleavedSignals() {
merger.onSignal(new StartingSignal(), firstPort);
assertTrue(mergerOutputPipe.startSent());
assertFalse(mergerOutputPipe.terminateSent());
mergerOutputPipe.reset();
merger.onSignal(new TerminatingSignal(), secondPort);
assertFalse(mergerOutputPipe.startSent());
assertFalse(mergerOutputPipe.terminateSent());
mergerOutputPipe.reset();
merger.onSignal(new TerminatingSignal(), firstPort);
assertFalse(mergerOutputPipe.startSent());
assertTrue(mergerOutputPipe.terminateSent());
mergerOutputPipe.reset();
merger.onSignal(new TerminatingSignal(), firstPort);
assertFalse(mergerOutputPipe.startSent());
assertFalse(mergerOutputPipe.terminateSent());
mergerOutputPipe.reset();
merger.onSignal(new StartingSignal(), secondPort);
assertFalse(mergerOutputPipe.startSent());
assertFalse(mergerOutputPipe.terminateSent());
}
@Test
public void testMultipleSignals() {
merger.onSignal(new StartingSignal(), firstPort);
assertTrue(mergerOutputPipe.startSent());
mergerOutputPipe.reset();
merger.onSignal(new StartingSignal(), firstPort);
assertFalse(mergerOutputPipe.startSent());
mergerOutputPipe.reset();
merger.onSignal(new StartingSignal(), firstPort);
assertFalse(mergerOutputPipe.startSent());
mergerOutputPipe.reset();
merger.onSignal(new StartingSignal(), secondPort);
assertFalse(mergerOutputPipe.startSent());
}
}
...@@ -22,7 +22,7 @@ import teetime.framework.signal.ISignal; ...@@ -22,7 +22,7 @@ import teetime.framework.signal.ISignal;
import teetime.framework.signal.StartingSignal; import teetime.framework.signal.StartingSignal;
import teetime.framework.signal.TerminatingSignal; import teetime.framework.signal.TerminatingSignal;
class MergerTestingPipe implements IPipe<Object> { public class MergerTestingPipe implements IPipe<Object> {
private boolean startSent = false; private boolean startSent = false;
private boolean terminateSent = false; private boolean terminateSent = false;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment