Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.app4mc.multicore.execution.logic/test/org/eclipse/app4mc/multicore/execution/logic/systemproxy/scheduler/test/StepSchedulerTest.java')
-rw-r--r--[-rwxr-xr-x]plugins/org.eclipse.app4mc.multicore.execution.logic/test/org/eclipse/app4mc/multicore/execution/logic/systemproxy/scheduler/test/StepSchedulerTest.java590
1 files changed, 295 insertions, 295 deletions
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.logic/test/org/eclipse/app4mc/multicore/execution/logic/systemproxy/scheduler/test/StepSchedulerTest.java b/plugins/org.eclipse.app4mc.multicore.execution.logic/test/org/eclipse/app4mc/multicore/execution/logic/systemproxy/scheduler/test/StepSchedulerTest.java
index 8bfb9e504..2daced548 100755..100644
--- a/plugins/org.eclipse.app4mc.multicore.execution.logic/test/org/eclipse/app4mc/multicore/execution/logic/systemproxy/scheduler/test/StepSchedulerTest.java
+++ b/plugins/org.eclipse.app4mc.multicore.execution.logic/test/org/eclipse/app4mc/multicore/execution/logic/systemproxy/scheduler/test/StepSchedulerTest.java
@@ -1,295 +1,295 @@
-/**
- ********************************************************************************
- * Copyright (c) 2017 Dortmund University of Applied Sciences and Arts and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Dortmund University of Applied Sciences and Arts - initial API and implementation
- ********************************************************************************
- */
-
-package org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.test;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.app4mc.multicore.execution.logic.executionmodel.types.EMTask;
-import org.eclipse.app4mc.multicore.execution.logic.executionmodel.types.EMTaskHistState;
-import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.ISchedulerTask;
-import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.IStepScheduler;
-import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.SchedulerAlgorithmRegister;
-import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.core.Barrier;
-import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.core.StepScheduler;
-import org.eclipse.app4mc.multicore.execution.logic.systemproxy.tracing.ConsoleSchedulerTracer;
-import org.junit.Test;
-
-public class StepSchedulerTest {
- int[][] example2_rms_1_core_t1_38 = { { 2, 5 }, { 15, 18 }, { 32, 35 } };
-
- int[][] example2_rms_1_core_t2_38 = { { 0, 2 }, { 6, 8 }, { 12, 14 }, { 18, 20 }, { 24, 26 }, { 30, 32 },
- { 36, 38 } };
-
- int[][] example2_rms_1_core_t3_38 = { { 5, 6 }, { 8, 12 }, { 14, 15 }, { 20, 21 }, { 22, 24 }, { 26, 30 },
- { 35, 36 } };
-
- // @Test
- // public void testNormale() throws SchedulerException{
- //
- //
- // StepScheduler sched= new StepScheduler(new PreemptiveRMSAlgo());
- //
- // SimpleEMTaskTracer tracer = new SimpleEMTaskTracer("TestCore");
- // sched.addOSHookListener(tracer);
- //// sched.addOSHookListener(new ConsoleSchedulerTracer("TestCore"));
- //
- //
- // SchedulerTask t = new SchedulerTask("T1", 3, 15);
- // sched.addTask(t);
- // t = new SchedulerTask("T2", 2, 6);
- // sched.addTask(t);
- // t = new SchedulerTask("T3", 7, 22);
- // sched.addTask(t);
- //
- // for(int i = 0; i<=38;i++){
- // sched.update();
- // sched.timeStep();
- // }
- // sched.update();
- //
- //
- // Map<String, EMTask> result = tracer.getEMTasks();
- //
- // List<EMTaskHistState> t1 = result.get("T1").getHistory();
- // TestUtil.testTaskHistoryRunningStates(example2_rms_1_core_t1_38, t1);
- //
- // List<EMTaskHistState> t2 = result.get("T2").getHistory();
- // TestUtil.testTaskHistoryRunningStates(example2_rms_1_core_t2_38, t2);
- //
- // List<EMTaskHistState> t3 = result.get("T3").getHistory();
- // TestUtil.testTaskHistoryRunningStates(example2_rms_1_core_t3_38, t3);
- //
- // }
-
- int[][] example4_edf_3_core_c1t1_30 = { { 4, 6 }, { 8, 9 }, { 17, 18 }, { 20, 22 } };
- int[][] example4_edf_3_core_c1t2_30 = { { 0, 2 }, { 6, 8 }, { 12, 14 }, { 18, 20 }, { 24, 26 } };
- int[][] example4_edf_3_core_c1t3_30 = { { 2, 4 }, { 15, 17 } };
-
- int[][] example4_edf_3_core_c2t1_30 = { { 0, 2 }, { 5, 7 }, { 10, 12 }, { 15, 17 }, { 20, 22 }, { 25, 27 } };
- int[][] example4_edf_3_core_c2t2_30 = { { 9, 10 }, { 12, 15 }, { 22, 25 }, { 27, 28 } };
-
- @Test
- public void testTaskPrecedenceScheduling() {
-
- Map<String, IStepScheduler> schedulers = new HashMap<>();
-
- /* setup cores */
- schedulers.put("C1", new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF()));
- schedulers.put("C2", new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF()));
-
- /* add listener */
- SimpleEMTaskTracer c1tracer = new SimpleEMTaskTracer("C1");
- schedulers.get("C1").addSchedulerEventListener(c1tracer);
- schedulers.get("C1").addSchedulerEventListener(new ConsoleSchedulerTracer("C1"));
- SimpleEMTaskTracer c2tracer = new SimpleEMTaskTracer("C2");
- schedulers.get("C2").addSchedulerEventListener(c2tracer);
- schedulers.get("C2").addSchedulerEventListener(new ConsoleSchedulerTracer("C2"));
-
- /* Setup tasks */
- schedulers.get("C1").addTask("C1T1", 3, 15);
- schedulers.get("C1").addTask("C1T2", 2, 6);
- schedulers.get("C1").addTask("C1T3", 2, 15);
-
- schedulers.get("C2").addTask("C2T1", 2, 5);
- schedulers.get("C2").addTask("C2T2", 4, 15);
-
- /* Setup precedence */
- // C1T3 have to be executed before C1T1
- Barrier m1 = new Barrier();
- ISchedulerTask s = schedulers.get("C1").getTask("C1T3");
- s.addOwnedBarrier(m1, ISchedulerTask.BARRIER_UNLOCK_AT_SUSPENSION);
- s = schedulers.get("C1").getTask("C1T1");
- s.addDependentBarrier(m1);
- // C1T1 have to be executed before C2T2 (other core/scheduler)
- Barrier m2 = new Barrier();
- s = schedulers.get("C1").getTask("C1T1");
- s.addOwnedBarrier(m2, ISchedulerTask.BARRIER_UNLOCK_AT_SUSPENSION);
- s = schedulers.get("C2").getTask("C2T2");
- s.addDependentBarrier(m2);
-
- schedulers.values().forEach(IStepScheduler::init);
- for (int i = 0; i <= 30; i++) {
- schedulers.values().forEach(IStepScheduler::runTaskOrIdleStep);
- schedulers.values().forEach(IStepScheduler::updateTaskSynchronisation);
- schedulers.values().forEach(IStepScheduler::updateTaskSet);
- }
-
- Map<String, EMTask> result = c1tracer.getEMTasks();
-
- List<EMTaskHistState> c1t1 = result.get("C1T1").getStateHistory();
- TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t1_30, c1t1);
-
- List<EMTaskHistState> c1t2 = result.get("C1T2").getStateHistory();
- TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t2_30, c1t2);
-
- List<EMTaskHistState> c1t3 = result.get("C1T3").getStateHistory();
- TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t3_30, c1t3);
-
- result = c2tracer.getEMTasks();
-
- List<EMTaskHistState> c2t1 = result.get("C2T1").getStateHistory();
- TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c2t1_30, c2t1);
-
- List<EMTaskHistState> c2t2 = result.get("C2T2").getStateHistory();
- TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c2t2_30, c2t2);
- }
-
- @Test
- public void testSchedulerChaining() {
-
- IStepScheduler c1 = new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF());
- IStepScheduler c2 = new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF());
- /* setup cores */
-
- /* add listener */
- SimpleEMTaskTracer c1tracer = new SimpleEMTaskTracer("C1");
- c1.addSchedulerEventListener(c1tracer);
- c1.addSchedulerEventListener(new ConsoleSchedulerTracer("C1"));
- SimpleEMTaskTracer c2tracer = new SimpleEMTaskTracer("C2");
- c2.addSchedulerEventListener(c2tracer);
- c2.addSchedulerEventListener(new ConsoleSchedulerTracer("C2"));
-
- /* Setup tasks */
- c1.addTask("C1T1", 3, 15);
- c1.addTask("C1T2", 2, 6);
- c1.addTask("C1T3", 2, 15);
-
- c2.addTask("C2T1", 2, 5);
- c2.addTask("C2T2", 4, 15);
-
- /* Setup precedence */
- // C1T3 have to be executed before C1T1
- Barrier m1 = new Barrier();
- ISchedulerTask s = c1.getTask("C1T3");
- s.addOwnedBarrier(m1, ISchedulerTask.BARRIER_UNLOCK_AT_SUSPENSION);
- s = c1.getTask("C1T1");
- s.addDependentBarrier(m1);
- // C1T1 have to be executed before C2T2 (other core/scheduler)
- Barrier m2 = new Barrier();
- s = c1.getTask("C1T1");
- s.addOwnedBarrier(m2, ISchedulerTask.BARRIER_UNLOCK_AT_SUSPENSION);
- s = c2.getTask("C2T2");
- s.addDependentBarrier(m2);
-
- c1.init();
- c2.init();
- for (int i = 0; i <= 30; i++) {
- c2.runTaskOrIdleStep();
- c1.runTaskOrIdleStep();
-
- c1.updateTaskSynchronisation();
- c2.updateTaskSynchronisation();
-
-
- c2.updateTaskSet();
- c1.updateTaskSet();
-
- }
-
- Map<String, EMTask> result = c1tracer.getEMTasks();
-
- List<EMTaskHistState> c1t1 = result.get("C1T1").getStateHistory();
- TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t1_30, c1t1);
-
- List<EMTaskHistState> c1t2 = result.get("C1T2").getStateHistory();
- TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t2_30, c1t2);
-
- List<EMTaskHistState> c1t3 = result.get("C1T3").getStateHistory();
- TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t3_30, c1t3);
-
- result = c2tracer.getEMTasks();
-
- List<EMTaskHistState> c2t1 = result.get("C2T1").getStateHistory();
- TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c2t1_30, c2t1);
-
- List<EMTaskHistState> c2t2 = result.get("C2T2").getStateHistory();
- TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c2t2_30, c2t2);
- }
-
- int[][] example5_edf_3_core_c1t1_30 = { { 4, 6 }, { 8, 9 }, { 17, 18 }, { 20, 22 } };
- int[][] example5_edf_3_core_c1t2_30 = { { 0, 2 }, { 6, 8 }, { 12, 14 }, { 18, 20 }, { 24, 26 } };
- int[][] example5_edf_3_core_c1t3_30 = { { 2, 4 }, { 15, 17 } };
-
- int[][] example5_edf_3_core_c2t1_30 = { { 0, 2 }, { 5, 7 }, { 10, 12 }, { 15, 17 }, { 20, 22 }, { 25, 27 } };
- int[][] example5_edf_3_core_c2t2_30 = { { 7, 10 }, { 12, 13 }, { 18, 20 }, { 22, 24 } };
-
- @Test
- public void testTaskPrecedenceSchedulingExtended() {
-// Map<String, IStepScheduler> schedulers = new HashMap<>();
-//
-// /* setup cores */
-// schedulers.put("C1", new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF()));
-// schedulers.put("C2", new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF()));
-//
-// /* add listener */
-// SimpleEMTaskTracer c1tracer = new SimpleEMTaskTracer("C1");
-// schedulers.get("C1").addSchedulerEventListener(c1tracer);
-// schedulers.get("C1").addSchedulerEventListener(new ConsoleSchedulerTracer("C1"));
-// SimpleEMTaskTracer c2tracer = new SimpleEMTaskTracer("C2");
-// schedulers.get("C2").addSchedulerEventListener(c2tracer);
-// schedulers.get("C2").addSchedulerEventListener(new ConsoleSchedulerTracer("C2"));
-//
-// /* Setup tasks */
-// schedulers.get("C1").addTask("C1T1", 3, 15);
-// schedulers.get("C1").addTask("C1T2", 2, 6);
-// schedulers.get("C1").addTask("C1T3", 2, 15);
-//
-// schedulers.get("C2").addTask("C2T1", 2, 5);
-// schedulers.get("C2").addTask("C2T2", 4, 15);
-//
-// /* Setup precedence */
-// // C1T3 have to be executed before C1T1
-// Barrier m1 = new Barrier();
-// ISchedulerTask s = schedulers.get("C1").getTask("C1T3");
-// s.addOwnedBarrier(m1, ISchedulerTask.BARRIER_UNLOCK_AT_SUSPENSION);
-// s = schedulers.get("C1").getTask("C1T1");
-// s.addDependentBarrier(m1);
-// // C1T1 have to be executed before C2T2 (other core/scheduler)
-// Barrier m2 = new Barrier();
-// s = schedulers.get("C1").getTask("C1T1");
-// s.addOwnedBarrier(m2, 1); //difference
-// s = schedulers.get("C2").getTask("C2T2");
-// s.addDependentBarrier(m2);
-//
-// schedulers.values().forEach(IStepScheduler::init);
-// for (int i = 0; i <= 30; i++) {
-// schedulers.values().forEach(IStepScheduler::runTaskOrIdleStep);
-// schedulers.values().forEach(IStepScheduler::updateTaskSynchronisation);
-// schedulers.values().forEach(IStepScheduler::updateTaskSet);
-// }
-//
-// Map<String, EMTask> result = c1tracer.getEMTasks();
-//
-// List<EMTaskHistState> c1t1 = result.get("C1T1").getStateHistory();
-// TestUtil.testTaskHistoryRunningStates(example5_edf_3_core_c1t1_30, c1t1);
-//
-// List<EMTaskHistState> c1t2 = result.get("C1T2").getStateHistory();
-// TestUtil.testTaskHistoryRunningStates(example5_edf_3_core_c1t2_30, c1t2);
-//
-// List<EMTaskHistState> c1t3 = result.get("C1T3").getStateHistory();
-// TestUtil.testTaskHistoryRunningStates(example5_edf_3_core_c1t3_30, c1t3);
-//
-// result = c2tracer.getEMTasks();
-//
-// List<EMTaskHistState> c2t1 = result.get("C2T1").getStateHistory();
-// TestUtil.testTaskHistoryRunningStates(example5_edf_3_core_c2t1_30, c2t1);
-//
-// List<EMTaskHistState> c2t2 = result.get("C2T2").getStateHistory();
-// TestUtil.testTaskHistoryRunningStates(example5_edf_3_core_c2t2_30, c2t2);
- }
-}
+/**
+ ********************************************************************************
+ * Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Dortmund University of Applied Sciences and Arts - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.test;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.app4mc.multicore.execution.logic.executionmodel.types.EMTask;
+import org.eclipse.app4mc.multicore.execution.logic.executionmodel.types.EMTaskHistState;
+import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.ISchedulerTask;
+import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.IStepScheduler;
+import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.SchedulerAlgorithmRegister;
+import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.core.Barrier;
+import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.core.StepScheduler;
+import org.eclipse.app4mc.multicore.execution.logic.systemproxy.tracing.ConsoleSchedulerTracer;
+import org.junit.Test;
+
+public class StepSchedulerTest {
+ int[][] example2_rms_1_core_t1_38 = { { 2, 5 }, { 15, 18 }, { 32, 35 } };
+
+ int[][] example2_rms_1_core_t2_38 = { { 0, 2 }, { 6, 8 }, { 12, 14 }, { 18, 20 }, { 24, 26 }, { 30, 32 },
+ { 36, 38 } };
+
+ int[][] example2_rms_1_core_t3_38 = { { 5, 6 }, { 8, 12 }, { 14, 15 }, { 20, 21 }, { 22, 24 }, { 26, 30 },
+ { 35, 36 } };
+
+ // @Test
+ // public void testNormale() throws SchedulerException{
+ //
+ //
+ // StepScheduler sched= new StepScheduler(new PreemptiveRMSAlgo());
+ //
+ // SimpleEMTaskTracer tracer = new SimpleEMTaskTracer("TestCore");
+ // sched.addOSHookListener(tracer);
+ //// sched.addOSHookListener(new ConsoleSchedulerTracer("TestCore"));
+ //
+ //
+ // SchedulerTask t = new SchedulerTask("T1", 3, 15);
+ // sched.addTask(t);
+ // t = new SchedulerTask("T2", 2, 6);
+ // sched.addTask(t);
+ // t = new SchedulerTask("T3", 7, 22);
+ // sched.addTask(t);
+ //
+ // for(int i = 0; i<=38;i++){
+ // sched.update();
+ // sched.timeStep();
+ // }
+ // sched.update();
+ //
+ //
+ // Map<String, EMTask> result = tracer.getEMTasks();
+ //
+ // List<EMTaskHistState> t1 = result.get("T1").getHistory();
+ // TestUtil.testTaskHistoryRunningStates(example2_rms_1_core_t1_38, t1);
+ //
+ // List<EMTaskHistState> t2 = result.get("T2").getHistory();
+ // TestUtil.testTaskHistoryRunningStates(example2_rms_1_core_t2_38, t2);
+ //
+ // List<EMTaskHistState> t3 = result.get("T3").getHistory();
+ // TestUtil.testTaskHistoryRunningStates(example2_rms_1_core_t3_38, t3);
+ //
+ // }
+
+ int[][] example4_edf_3_core_c1t1_30 = { { 4, 6 }, { 8, 9 }, { 17, 18 }, { 20, 22 } };
+ int[][] example4_edf_3_core_c1t2_30 = { { 0, 2 }, { 6, 8 }, { 12, 14 }, { 18, 20 }, { 24, 26 } };
+ int[][] example4_edf_3_core_c1t3_30 = { { 2, 4 }, { 15, 17 } };
+
+ int[][] example4_edf_3_core_c2t1_30 = { { 0, 2 }, { 5, 7 }, { 10, 12 }, { 15, 17 }, { 20, 22 }, { 25, 27 } };
+ int[][] example4_edf_3_core_c2t2_30 = { { 9, 10 }, { 12, 15 }, { 22, 25 }, { 27, 28 } };
+
+ @Test
+ public void testTaskPrecedenceScheduling() {
+
+ Map<String, IStepScheduler> schedulers = new HashMap<>();
+
+ /* setup cores */
+ schedulers.put("C1", new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF()));
+ schedulers.put("C2", new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF()));
+
+ /* add listener */
+ SimpleEMTaskTracer c1tracer = new SimpleEMTaskTracer("C1");
+ schedulers.get("C1").addSchedulerEventListener(c1tracer);
+ schedulers.get("C1").addSchedulerEventListener(new ConsoleSchedulerTracer("C1"));
+ SimpleEMTaskTracer c2tracer = new SimpleEMTaskTracer("C2");
+ schedulers.get("C2").addSchedulerEventListener(c2tracer);
+ schedulers.get("C2").addSchedulerEventListener(new ConsoleSchedulerTracer("C2"));
+
+ /* Setup tasks */
+ schedulers.get("C1").addTask("C1T1", 3, 15);
+ schedulers.get("C1").addTask("C1T2", 2, 6);
+ schedulers.get("C1").addTask("C1T3", 2, 15);
+
+ schedulers.get("C2").addTask("C2T1", 2, 5);
+ schedulers.get("C2").addTask("C2T2", 4, 15);
+
+ /* Setup precedence */
+ // C1T3 have to be executed before C1T1
+ Barrier m1 = new Barrier();
+ ISchedulerTask s = schedulers.get("C1").getTask("C1T3");
+ s.addOwnedBarrier(m1, ISchedulerTask.BARRIER_UNLOCK_AT_SUSPENSION);
+ s = schedulers.get("C1").getTask("C1T1");
+ s.addDependentBarrier(m1);
+ // C1T1 have to be executed before C2T2 (other core/scheduler)
+ Barrier m2 = new Barrier();
+ s = schedulers.get("C1").getTask("C1T1");
+ s.addOwnedBarrier(m2, ISchedulerTask.BARRIER_UNLOCK_AT_SUSPENSION);
+ s = schedulers.get("C2").getTask("C2T2");
+ s.addDependentBarrier(m2);
+
+ schedulers.values().forEach(IStepScheduler::init);
+ for (int i = 0; i <= 30; i++) {
+ schedulers.values().forEach(IStepScheduler::runTaskOrIdleStep);
+ schedulers.values().forEach(IStepScheduler::updateTaskSynchronisation);
+ schedulers.values().forEach(IStepScheduler::updateTaskSet);
+ }
+
+ Map<String, EMTask> result = c1tracer.getEMTasks();
+
+ List<EMTaskHistState> c1t1 = result.get("C1T1").getStateHistory();
+ TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t1_30, c1t1);
+
+ List<EMTaskHistState> c1t2 = result.get("C1T2").getStateHistory();
+ TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t2_30, c1t2);
+
+ List<EMTaskHistState> c1t3 = result.get("C1T3").getStateHistory();
+ TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t3_30, c1t3);
+
+ result = c2tracer.getEMTasks();
+
+ List<EMTaskHistState> c2t1 = result.get("C2T1").getStateHistory();
+ TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c2t1_30, c2t1);
+
+ List<EMTaskHistState> c2t2 = result.get("C2T2").getStateHistory();
+ TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c2t2_30, c2t2);
+ }
+
+ @Test
+ public void testSchedulerChaining() {
+
+ IStepScheduler c1 = new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF());
+ IStepScheduler c2 = new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF());
+ /* setup cores */
+
+ /* add listener */
+ SimpleEMTaskTracer c1tracer = new SimpleEMTaskTracer("C1");
+ c1.addSchedulerEventListener(c1tracer);
+ c1.addSchedulerEventListener(new ConsoleSchedulerTracer("C1"));
+ SimpleEMTaskTracer c2tracer = new SimpleEMTaskTracer("C2");
+ c2.addSchedulerEventListener(c2tracer);
+ c2.addSchedulerEventListener(new ConsoleSchedulerTracer("C2"));
+
+ /* Setup tasks */
+ c1.addTask("C1T1", 3, 15);
+ c1.addTask("C1T2", 2, 6);
+ c1.addTask("C1T3", 2, 15);
+
+ c2.addTask("C2T1", 2, 5);
+ c2.addTask("C2T2", 4, 15);
+
+ /* Setup precedence */
+ // C1T3 have to be executed before C1T1
+ Barrier m1 = new Barrier();
+ ISchedulerTask s = c1.getTask("C1T3");
+ s.addOwnedBarrier(m1, ISchedulerTask.BARRIER_UNLOCK_AT_SUSPENSION);
+ s = c1.getTask("C1T1");
+ s.addDependentBarrier(m1);
+ // C1T1 have to be executed before C2T2 (other core/scheduler)
+ Barrier m2 = new Barrier();
+ s = c1.getTask("C1T1");
+ s.addOwnedBarrier(m2, ISchedulerTask.BARRIER_UNLOCK_AT_SUSPENSION);
+ s = c2.getTask("C2T2");
+ s.addDependentBarrier(m2);
+
+ c1.init();
+ c2.init();
+ for (int i = 0; i <= 30; i++) {
+ c2.runTaskOrIdleStep();
+ c1.runTaskOrIdleStep();
+
+ c1.updateTaskSynchronisation();
+ c2.updateTaskSynchronisation();
+
+
+ c2.updateTaskSet();
+ c1.updateTaskSet();
+
+ }
+
+ Map<String, EMTask> result = c1tracer.getEMTasks();
+
+ List<EMTaskHistState> c1t1 = result.get("C1T1").getStateHistory();
+ TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t1_30, c1t1);
+
+ List<EMTaskHistState> c1t2 = result.get("C1T2").getStateHistory();
+ TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t2_30, c1t2);
+
+ List<EMTaskHistState> c1t3 = result.get("C1T3").getStateHistory();
+ TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c1t3_30, c1t3);
+
+ result = c2tracer.getEMTasks();
+
+ List<EMTaskHistState> c2t1 = result.get("C2T1").getStateHistory();
+ TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c2t1_30, c2t1);
+
+ List<EMTaskHistState> c2t2 = result.get("C2T2").getStateHistory();
+ TestUtil.testTaskHistoryRunningStates(example4_edf_3_core_c2t2_30, c2t2);
+ }
+
+ int[][] example5_edf_3_core_c1t1_30 = { { 4, 6 }, { 8, 9 }, { 17, 18 }, { 20, 22 } };
+ int[][] example5_edf_3_core_c1t2_30 = { { 0, 2 }, { 6, 8 }, { 12, 14 }, { 18, 20 }, { 24, 26 } };
+ int[][] example5_edf_3_core_c1t3_30 = { { 2, 4 }, { 15, 17 } };
+
+ int[][] example5_edf_3_core_c2t1_30 = { { 0, 2 }, { 5, 7 }, { 10, 12 }, { 15, 17 }, { 20, 22 }, { 25, 27 } };
+ int[][] example5_edf_3_core_c2t2_30 = { { 7, 10 }, { 12, 13 }, { 18, 20 }, { 22, 24 } };
+
+ @Test
+ public void testTaskPrecedenceSchedulingExtended() {
+// Map<String, IStepScheduler> schedulers = new HashMap<>();
+//
+// /* setup cores */
+// schedulers.put("C1", new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF()));
+// schedulers.put("C2", new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveEDF()));
+//
+// /* add listener */
+// SimpleEMTaskTracer c1tracer = new SimpleEMTaskTracer("C1");
+// schedulers.get("C1").addSchedulerEventListener(c1tracer);
+// schedulers.get("C1").addSchedulerEventListener(new ConsoleSchedulerTracer("C1"));
+// SimpleEMTaskTracer c2tracer = new SimpleEMTaskTracer("C2");
+// schedulers.get("C2").addSchedulerEventListener(c2tracer);
+// schedulers.get("C2").addSchedulerEventListener(new ConsoleSchedulerTracer("C2"));
+//
+// /* Setup tasks */
+// schedulers.get("C1").addTask("C1T1", 3, 15);
+// schedulers.get("C1").addTask("C1T2", 2, 6);
+// schedulers.get("C1").addTask("C1T3", 2, 15);
+//
+// schedulers.get("C2").addTask("C2T1", 2, 5);
+// schedulers.get("C2").addTask("C2T2", 4, 15);
+//
+// /* Setup precedence */
+// // C1T3 have to be executed before C1T1
+// Barrier m1 = new Barrier();
+// ISchedulerTask s = schedulers.get("C1").getTask("C1T3");
+// s.addOwnedBarrier(m1, ISchedulerTask.BARRIER_UNLOCK_AT_SUSPENSION);
+// s = schedulers.get("C1").getTask("C1T1");
+// s.addDependentBarrier(m1);
+// // C1T1 have to be executed before C2T2 (other core/scheduler)
+// Barrier m2 = new Barrier();
+// s = schedulers.get("C1").getTask("C1T1");
+// s.addOwnedBarrier(m2, 1); //difference
+// s = schedulers.get("C2").getTask("C2T2");
+// s.addDependentBarrier(m2);
+//
+// schedulers.values().forEach(IStepScheduler::init);
+// for (int i = 0; i <= 30; i++) {
+// schedulers.values().forEach(IStepScheduler::runTaskOrIdleStep);
+// schedulers.values().forEach(IStepScheduler::updateTaskSynchronisation);
+// schedulers.values().forEach(IStepScheduler::updateTaskSet);
+// }
+//
+// Map<String, EMTask> result = c1tracer.getEMTasks();
+//
+// List<EMTaskHistState> c1t1 = result.get("C1T1").getStateHistory();
+// TestUtil.testTaskHistoryRunningStates(example5_edf_3_core_c1t1_30, c1t1);
+//
+// List<EMTaskHistState> c1t2 = result.get("C1T2").getStateHistory();
+// TestUtil.testTaskHistoryRunningStates(example5_edf_3_core_c1t2_30, c1t2);
+//
+// List<EMTaskHistState> c1t3 = result.get("C1T3").getStateHistory();
+// TestUtil.testTaskHistoryRunningStates(example5_edf_3_core_c1t3_30, c1t3);
+//
+// result = c2tracer.getEMTasks();
+//
+// List<EMTaskHistState> c2t1 = result.get("C2T1").getStateHistory();
+// TestUtil.testTaskHistoryRunningStates(example5_edf_3_core_c2t1_30, c2t1);
+//
+// List<EMTaskHistState> c2t2 = result.get("C2T2").getStateHistory();
+// TestUtil.testTaskHistoryRunningStates(example5_edf_3_core_c2t2_30, c2t2);
+ }
+}

Back to the top