ADD EventQueue for static_scheduling
This commit is contained in:
@ -72,6 +72,39 @@ static void test_bike_system() {
|
||||
}
|
||||
}
|
||||
|
||||
// test_bike_system_event_queue handler function
|
||||
static void test_bike_system_event_queue() {
|
||||
// create the BikeSystem instance
|
||||
static_scheduling::BikeSystem bikeSystem;
|
||||
|
||||
// run the bike system in a separate thread
|
||||
Thread thread;
|
||||
thread.start(callback(&bikeSystem, &static_scheduling::BikeSystem::startWithEventQueue));
|
||||
|
||||
// let the bike system run for 20 secs
|
||||
ThisThread::sleep_for(20s);
|
||||
|
||||
// stop the bike system
|
||||
bikeSystem.stop();
|
||||
|
||||
// check whether scheduling was correct
|
||||
// Order is kGearTaskIndex, kSpeedTaskIndex, kTemperatureTaskIndex,
|
||||
// kResetTaskIndex, kDisplayTask1Index, kDisplayTask2Index
|
||||
// When we use the event queue, we do not check the computation time
|
||||
constexpr std::chrono::microseconds taskPeriods[] = {
|
||||
800000us, 400000us, 1600000us, 800000us, 1600000us, 1600000us};
|
||||
|
||||
// allow for 2 msecs offset (with EventQueue)
|
||||
uint64_t deltaUs = 2000;
|
||||
for (uint8_t taskIndex = 0; taskIndex < advembsof::TaskLogger::kNbrOfTasks;
|
||||
taskIndex++) {
|
||||
TEST_ASSERT_UINT64_WITHIN(
|
||||
deltaUs,
|
||||
taskPeriods[taskIndex].count(),
|
||||
bikeSystem.getTaskLogger().getPeriod(taskIndex).count());
|
||||
}
|
||||
}
|
||||
|
||||
static utest::v1::status_t greentea_setup(const size_t number_of_cases) {
|
||||
// Here, we specify the timeout (60s) and the host test (a built-in host test or the
|
||||
// name of our Python file)
|
||||
@ -81,7 +114,10 @@ static utest::v1::status_t greentea_setup(const size_t number_of_cases) {
|
||||
}
|
||||
|
||||
// List of test cases in this file
|
||||
static Case cases[] = {Case("test bike system", test_bike_system)};
|
||||
static Case cases[] = {
|
||||
Case("test bike system", test_bike_system),
|
||||
Case("test bike system with event queue", test_bike_system_event_queue)
|
||||
};
|
||||
|
||||
static Specification specification(greentea_setup, cases);
|
||||
|
||||
|
Reference in New Issue
Block a user