blob: c4e5ca46efb56a13f30ad55d4a40cb5d2174441b [file] [log] [blame]
/**
********************************************************************************
* 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 static org.junit.Assert.assertEquals;
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.IStepScheduler;
import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.SchedulerAlgorithmRegister;
import org.eclipse.app4mc.multicore.execution.logic.systemproxy.scheduler.core.StepScheduler;
import org.junit.Test;
public class PreemptiveRMSTest {
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 test_example2_rms_1_core() throws SchedulerException {
//
// StepScheduler s =
// SchedulerAlgorithmFactory.createPreemptiveRMSScheduler();
// SimpleEMTaskTracer tracer = new SimpleEMTaskTracer("TestCore");
// s.addOSHookListener(tracer);
//// s.addListener(new ConsoleSchedulerTracer());
//
// SchedulerTask t = new SchedulerTask("T1", 3, 15);
// s.addTask(t);
// t = new SchedulerTask("T2", 2, 6);
// s.addTask(t);
// t = new SchedulerTask("T3", 7, 22);
// s.addTask(t);
//
// s.init();
// s.scheduleUntil(38);
//
// 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);
// }
@Test
public void test_example2_rms_1_core_single_steps() {
final IStepScheduler s = new StepScheduler(SchedulerAlgorithmRegister.createPreemptiveRMS());
final SimpleEMTaskTracer tracer = new SimpleEMTaskTracer("TestCore");
s.addSchedulerEventListener(tracer);
// s.addSchedulerEventListener(new ConsoleSchedulerTracer("TestCore"));
s.addTask("T1", 3, 15);
s.addTask("T2", 2, 6);
s.addTask("T3", 7, 22);
s.init();
for (int i = 0; i < 38; i++) {
s.runTaskOrIdleStep();
s.updateTaskSynchronisation();
s.updateTaskSet();
}
assertEquals(38, s.getSimTime());
final Map<String, EMTask> result = tracer.getEMTasks();
final List<EMTaskHistState> t1 = result.get("T1").getStateHistory();
TestUtil.testTaskHistoryRunningStates(this.example2_rms_1_core_t1_38, t1);
final List<EMTaskHistState> t2 = result.get("T2").getStateHistory();
TestUtil.testTaskHistoryRunningStates(this.example2_rms_1_core_t2_38, t2);
final List<EMTaskHistState> t3 = result.get("T3").getStateHistory();
TestUtil.testTaskHistoryRunningStates(this.example2_rms_1_core_t3_38, t3);
}
// @Test
// public void test_example5_rms_1_core_single_steps(){
// StepScheduler s = new
// StepScheduler(SchedulerAlgorithmRegister.createPreemptiveRMS());
//
// SimpleEMTaskTracer tracer = new SimpleEMTaskTracer("TestCore");
// s.addSchedulerEventListener(tracer);
// s.addSchedulerEventListener(new ConsoleSchedulerTracer("TestCore"));
//
// SchedulerTask t = new SchedulerTask("T1", 3, 15);
// s.addTask(t);
// t = new SchedulerTask("T2", 2, 6);
// s.addTask(t);
// t = new SchedulerTask("T3", 9, 22);
// s.addTask(t);
//
// s.init();
// for(int i =0; i<38;i++){
// s.runTaskOrIdleStep();
// s.updateTaskSynchronisation();
//// s.updateTaskSet();
// }
// }
}