[sim] Change StepTiming to wait for notifiers (#2603)

Old behavior is available via StepTimingAsync.

This makes it significantly easier to use simulation timing with notifiers.

Also update tests to use simulation framework.  This also speeds up the
timing-dependent tests by using simulation timing.  ResourceLock is used
in the Java tests to prevent parallel execution.

While we're here, tweak HAL Notifier implementation:
- Use wait_for instead of wait_until in WaitForNotifierAlarm
- Check for triggerTime = UINT64_MAX in UpdateNotifierAlarm
This commit is contained in:
Peter Johnson
2020-09-27 13:27:53 -07:00
committed by GitHub
parent 62731bea20
commit c3b3fb8b74
23 changed files with 278 additions and 185 deletions

View File

@@ -18,12 +18,7 @@ CommandTestBase::CommandTestBase() {
CommandScheduler CommandTestBase::GetScheduler() { return CommandScheduler(); }
void CommandTestBase::SetUp() {
frc::sim::DriverStationSim::SetEnabled(true);
while (!frc::sim::DriverStationSim::GetEnabled()) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
}
void CommandTestBase::SetUp() { frc::sim::DriverStationSim::SetEnabled(true); }
void CommandTestBase::TearDown() {
CommandScheduler::GetInstance().ClearButtons();
@@ -31,7 +26,4 @@ void CommandTestBase::TearDown() {
void CommandTestBase::SetDSEnabled(bool enabled) {
frc::sim::DriverStationSim::SetEnabled(enabled);
while (frc::sim::DriverStationSim::GetEnabled() != enabled) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
}