Skip to content
Snippets Groups Projects
Commit 630a19b8 authored by Christian Claus Wiechmann's avatar Christian Claus Wiechmann
Browse files

Bugfixes

parent 86408546
No related branches found
No related tags found
1 merge request!67Task Farm branch
......@@ -33,13 +33,13 @@ public class TaskFarmConfiguration<I, O, T extends ITaskFarmDuplicable<I, O>> {
public static final int INIT_SAMPLES_UNTIL_REMOVE = -1;
private int analysisWindow = 3;
private String throughputAlgorithm = "RegressionAlgorithm";
private WeightMethod weightedAlgorithmMethod = WeightMethod.EXPONENTIAL;
private int maxSamplesUntilRemove = 5;
private double throughputScoreBoundary = 0.2d;
private volatile int analysisWindow = 3;
private volatile String throughputAlgorithm = "RegressionAlgorithm";
private volatile WeightMethod weightedAlgorithmMethod = WeightMethod.EXPONENTIAL;
private volatile int maxSamplesUntilRemove = 5;
private volatile double throughputScoreBoundary = 0.2d;
private boolean stillParallelizable = true;
private volatile boolean stillParallelizable = true;
TaskFarmConfiguration() {}
......
......
......@@ -20,26 +20,25 @@ import java.util.List;
import teetime.stage.taskfarm.ITaskFarmDuplicable;
import teetime.stage.taskfarm.TaskFarmStage;
import teetime.stage.taskfarm.exception.TaskFarmAdaptationThreadException;
final public class AdaptationThread extends Thread {
private static int sampleRateMillis = 50;
private volatile static int sampleRateMillis = 50;
private final List<TaskFarmComponents<?, ?, ?>> taskFarmServices = new LinkedList<TaskFarmComponents<?, ?, ?>>();
private boolean stopping = false;
private volatile boolean stopped = false;
@Override
public void run() {
while (!stopping) {
try {
while (!Thread.currentThread().isInterrupted() && !stopped) {
Thread.sleep(sampleRateMillis);
} catch (InterruptedException e) {
throw new TaskFarmAdaptationThreadException("AdaptationThread was interrupted!");
}
executeNextStageToBeReconfigured();
checkForStopping();
}
} catch (InterruptedException e) {
}
}
......@@ -66,7 +65,25 @@ final public class AdaptationThread extends Thread {
}
}
private void checkForStopping() {
boolean parallelizableStageRemaining = false;
// checks if there is still a parallelizable Task Farm
synchronized (taskFarmServices) {
for (TaskFarmComponents<?, ?, ?> service : taskFarmServices) {
if (service.getTaskFarmStage().getConfiguration().isStillParallelizable()) {
parallelizableStageRemaining = true;
}
}
}
if (!parallelizableStageRemaining) {
stopAdaptationThread();
}
}
public void stopAdaptationThread() {
stopping = true;
stopped = true;
interrupt();
}
}
......@@ -128,7 +128,7 @@ class TaskFarmController<I, O, T extends ITaskFarmDuplicable<I, O>> {
+ port.getPipe().getClass().getSimpleName() + ".");
}
if (monitorablePipe.size() < currentMinimum) {
if (monitorablePipe != null && monitorablePipe.size() < currentMinimum) {
currentMinimum = monitorablePipe.size();
currentMinumumStageIndex = i;
}
......
......
......@@ -18,7 +18,6 @@ package teetime.stage.taskfarm;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import java.util.List;
......@@ -34,7 +33,7 @@ import teetime.stage.basic.AbstractTransformation;
public class TaskFarmStageTest {
static final int NUMBER_OF_TEST_ELEMENTS = 10000;
static final int NUMBER_OF_TEST_ELEMENTS = 1000;
@Test
public void simpleTaskFarmStageTest() {
......@@ -43,13 +42,12 @@ public class TaskFarmStageTest {
execution.executeBlocking();
try {
Thread.sleep(200);
} catch (InterruptedException e) {
}
System.out.println("Checking test result...");
final List<String> results = configuration.getCollection();
for (int i = 1; i <= NUMBER_OF_TEST_ELEMENTS; i++) {
final int n = i + 1;
final String s = Integer.toString(n) + Integer.toString(n) + Integer.toString(n) + Integer.toString(n);
assertTrue("Does not contain: " + s, results.contains(s));
}
assertThat(results.size(), is(equalTo(NUMBER_OF_TEST_ELEMENTS)));
}
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment