summaryrefslogtreecommitdiff
path: root/Simulator
diff options
context:
space:
mode:
Diffstat (limited to 'Simulator')
-rw-r--r--Simulator/include/simulation/Experiment.h8
-rw-r--r--Simulator/src/database/Database.cpp2
2 files changed, 8 insertions, 2 deletions
diff --git a/Simulator/include/simulation/Experiment.h b/Simulator/include/simulation/Experiment.h
index 54a861e6..2e77b924 100644
--- a/Simulator/include/simulation/Experiment.h
+++ b/Simulator/include/simulation/Experiment.h
@@ -32,6 +32,12 @@ namespace Simulation
auto machineAccumulator = path.getCurrentSection(currentTick).getMachines();
+ if (machineAccumulator.size() == 0)
+ {
+ finished = true;
+ return;
+ }
+
// Schedule the workload over each machine
scheduler->schedule(machineAccumulator, workloadPool.getWorkloads(currentTick));
@@ -159,7 +165,7 @@ namespace Simulation
/**
* \brief The number of ticks that have passed.
*/
- uint32_t currentTick;
+ uint32_t currentTick = 0;
/**
* \brief The pool of workloads in this simulation, to be distributed by the scheduler.
diff --git a/Simulator/src/database/Database.cpp b/Simulator/src/database/Database.cpp
index d1bb2af5..f9ef6f7e 100644
--- a/Simulator/src/database/Database.cpp
+++ b/Simulator/src/database/Database.cpp
@@ -78,7 +78,7 @@ namespace Database
history.clearHistory();
- uint32_t lastSimulatedTick = experiment.getCurrentTick() - 1;
+ uint32_t lastSimulatedTick = experiment.getCurrentTick() != 0 ? experiment.getCurrentTick() - 1 : 0;
QueryExecuter<> writeLastSimulatedTick(db);
writeLastSimulatedTick.setQuery(Queries::WRITE_EXPERIMENT_LAST_SIMULATED_TICK)
.bindParams<int, int>(lastSimulatedTick, experiment.getId())