Skip to content

Commit

Permalink
♻️ (tests): on device - refactor deep sleep tests into utils::sleep f…
Browse files Browse the repository at this point in the history
…unction
  • Loading branch information
ladislas committed Nov 25, 2022
1 parent fc8e800 commit 99c5c01
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 39 deletions.
27 changes: 27 additions & 0 deletions tests/functional/include/tests/utils_sleep.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,31 @@ inline void lp_ticker_isr(const ticker_data_t *const ticker_data)
}
#endif

struct DeepSleepStatus {
bool can_deep_sleep = {false};
bool test_check_ok = {false};
};

using deep_sleep_status_t = DeepSleepStatus;

inline auto system_deep_sleep_check() -> deep_sleep_status_t
{
const ticker_data_t *lp_ticker = get_lp_ticker_data();
const unsigned int lp_ticker_freq = lp_ticker->interface->get_info()->frequency;

// ? Give time to test to finish UART transmission before entering deep sleep mode
utils::sleep::busy_wait(utils::sleep::SERIAL_FLUSH_TIME_MS);

auto can_deep_sleep = sleep_manager_can_deep_sleep();
// expect(can_deep_sleep) << "deep sleep not possible";

const timestamp_t wakeup_time = lp_ticker_read() + utils::sleep::us_to_ticks(20000, lp_ticker_freq);
lp_ticker_set_interrupt(wakeup_time);

auto can_deep_sleep_test_check = sleep_manager_can_deep_sleep_test_check();
// expect(can_deep_sleep_test_check);

return {can_deep_sleep, can_deep_sleep_test_check};
}

} // namespace utils::sleep
48 changes: 9 additions & 39 deletions tests/functional/tests/deep_sleep_log_kit/suite_log_kit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,10 @@ suite suite_log_kit = [] {
rtos::ThisThread::sleep_for(500ms);

then("I expect deep sleep to be possible") = [] {
const ticker_data_t *lp_ticker = get_lp_ticker_data();
const unsigned int lp_ticker_freq = lp_ticker->interface->get_info()->frequency;
auto status = utils::sleep::system_deep_sleep_check();

// ? Give time to test to finish UART transmission before entering deep sleep mode
utils::sleep::busy_wait(utils::sleep::SERIAL_FLUSH_TIME_MS);

auto can_deep_sleep = sleep_manager_can_deep_sleep();
expect(can_deep_sleep) << "deep sleep not possible";

const timestamp_t wakeup_time = lp_ticker_read() + utils::sleep::us_to_ticks(20000, lp_ticker_freq);
lp_ticker_set_interrupt(wakeup_time);

auto can_deep_sleep_test_check = sleep_manager_can_deep_sleep_test_check();
expect(can_deep_sleep_test_check);
expect(status.can_deep_sleep);
expect(status.test_check_ok);
};
};
};
Expand All @@ -49,20 +39,10 @@ suite suite_log_kit = [] {
rtos::ThisThread::sleep_for(500ms);

then("I expect deep sleep to NOT be possible") = [] {
const ticker_data_t *lp_ticker = get_lp_ticker_data();
const unsigned int lp_ticker_freq = lp_ticker->interface->get_info()->frequency;

// ? Give time to test to finish UART transmission before entering deep sleep mode
utils::sleep::busy_wait(utils::sleep::SERIAL_FLUSH_TIME_MS);

auto can_deep_sleep = sleep_manager_can_deep_sleep();
expect(not can_deep_sleep) << "deep sleep STILL possible";
auto status = utils::sleep::system_deep_sleep_check();

const timestamp_t wakeup_time = lp_ticker_read() + utils::sleep::us_to_ticks(20000, lp_ticker_freq);
lp_ticker_set_interrupt(wakeup_time);

auto can_deep_sleep_test_check = sleep_manager_can_deep_sleep_test_check();
expect(not can_deep_sleep_test_check);
expect(not status.can_deep_sleep);
expect(not status.test_check_ok);
};
};
};
Expand All @@ -74,20 +54,10 @@ suite suite_log_kit = [] {
rtos::ThisThread::sleep_for(500ms);

then("I expect deep sleep to NOT be possible") = [] {
const ticker_data_t *lp_ticker = get_lp_ticker_data();
const unsigned int lp_ticker_freq = lp_ticker->interface->get_info()->frequency;

// ? Give time to test to finish UART transmission before entering deep sleep mode
utils::sleep::busy_wait(utils::sleep::SERIAL_FLUSH_TIME_MS);

auto can_deep_sleep = sleep_manager_can_deep_sleep();
expect(can_deep_sleep) << "deep sleep not possible";

const timestamp_t wakeup_time = lp_ticker_read() + utils::sleep::us_to_ticks(20000, lp_ticker_freq);
lp_ticker_set_interrupt(wakeup_time);
auto status = utils::sleep::system_deep_sleep_check();

auto can_deep_sleep_test_check = sleep_manager_can_deep_sleep_test_check();
expect(can_deep_sleep_test_check);
expect(status.can_deep_sleep);
expect(status.test_check_ok);
};
};
};
Expand Down

0 comments on commit 99c5c01

Please sign in to comment.