The Big Refactoring of 2019: scheduler should not be global #655
This commit is contained in:
parent
da3d230798
commit
b3ee5ec945
|
@ -34,6 +34,10 @@ int TestExecutor::size() {
|
|||
return schedulingQueue.size();
|
||||
}
|
||||
|
||||
scheduling_s* TestExecutor::getForUnitTest(int index) {
|
||||
return schedulingQueue.getForUnitText(index);
|
||||
}
|
||||
|
||||
void TestExecutor::scheduleByTimestamp(scheduling_s *scheduling, efitimeus_t timeUs, schfunc_t callback, void *param) {
|
||||
if (debugSignalExecutor) {
|
||||
printf("scheduleByTime %d\r\n", timeUs);
|
||||
|
|
|
@ -17,6 +17,7 @@ public:
|
|||
void scheduleForLater(scheduling_s *scheduling, int delayUs, schfunc_t callback, void *param);
|
||||
void clear();
|
||||
int size();
|
||||
scheduling_s* getForUnitTest(int index);
|
||||
};
|
||||
|
||||
#endif /* GLOBAL_EXECUTION_QUEUE_H_ */
|
||||
|
|
|
@ -58,7 +58,7 @@ static void test100dutyCycle() {
|
|||
&testApplyPinState);
|
||||
|
||||
expectedTimeOfNextEvent += 1000;
|
||||
assertEqualsM2("1@1000/100", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("1@1000/100", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
|
||||
assertNextEvent("exec@100", HIGH_VALUE, &executor);
|
||||
|
||||
|
@ -86,7 +86,7 @@ static void testSwitchToNanPeriod() {
|
|||
&testApplyPinState);
|
||||
|
||||
expectedTimeOfNextEvent += 600;
|
||||
assertEqualsM2("1@1000/70", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("1@1000/70", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
|
||||
assertNextEvent("exec@70", LOW_VALUE, &executor);
|
||||
assertEqualsM("time1", 600, timeNowUs);
|
||||
|
@ -97,11 +97,11 @@ static void testSwitchToNanPeriod() {
|
|||
pwm.setFrequency(NAN);
|
||||
|
||||
expectedTimeOfNextEvent += 600;
|
||||
assertEqualsM2("1@1000/NAN", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("1@1000/NAN", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
assertNextEvent("exec2@NAN", LOW_VALUE, &executor);
|
||||
|
||||
expectedTimeOfNextEvent += MS2US(NAN_FREQUENCY_SLEEP_PERIOD_MS);
|
||||
assertEqualsM2("2@1000/NAN", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("2@1000/NAN", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
assertNextEvent("exec3@NAN", LOW_VALUE, &executor);
|
||||
}
|
||||
|
||||
|
@ -127,42 +127,42 @@ void testPwmGenerator() {
|
|||
|
||||
|
||||
expectedTimeOfNextEvent += 800;
|
||||
assertEqualsM2("1@1000/80", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("1@1000/80", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
|
||||
assertNextEvent("exec@0", LOW_VALUE, &executor);
|
||||
assertEqualsM("time1", 800, timeNowUs);
|
||||
|
||||
expectedTimeOfNextEvent += 200;
|
||||
assertEqualsM2("2@1000/80", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("2@1000/80", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
|
||||
// above we had vanilla duty cycle, now let's handle a special case
|
||||
pwm.setSimplePwmDutyCycle(0);
|
||||
assertEqualsM2("2@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("2@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
|
||||
assertNextEvent("exec@1", LOW_VALUE, &executor);
|
||||
assertEqualsM("time2", 1000, timeNowUs);
|
||||
|
||||
expectedTimeOfNextEvent += 1000;
|
||||
assertEqualsM2("3@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("3@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
|
||||
assertNextEvent("exec@2", LOW_VALUE /* pin value */, &executor);
|
||||
assertEqualsM("time3", 2000, timeNowUs);
|
||||
expectedTimeOfNextEvent += 1000;
|
||||
assertEqualsM2("4@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("4@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
|
||||
assertNextEvent("exec@3", LOW_VALUE /* pin value */, &executor);
|
||||
assertEqualsM("time4", 3000, timeNowUs);
|
||||
expectedTimeOfNextEvent += 1000;
|
||||
assertEqualsM2("5@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("5@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
|
||||
assertNextEvent("exec@4", LOW_VALUE /* pin value */, &executor);
|
||||
expectedTimeOfNextEvent += 1000;
|
||||
assertEqualsM2("6@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("6@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
|
||||
assertNextEvent("exec@5", LOW_VALUE /* pin value */, &executor);
|
||||
expectedTimeOfNextEvent += 1000;
|
||||
assertEqualsM("time4", 5000, timeNowUs);
|
||||
assertEqualsM2("7@1000/0", expectedTimeOfNextEvent, schedulingQueue.getForUnitText(0)->momentX, 0);
|
||||
assertEqualsM2("7@1000/0", expectedTimeOfNextEvent, executor.getForUnitTest(0)->momentX, 0);
|
||||
|
||||
|
||||
assertNextEvent("exec@6", LOW_VALUE /* pin value */, &executor);
|
||||
|
|
Loading…
Reference in New Issue