mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-20 12:39:06 +08:00
Dispatcher spin timeout test
This commit is contained in:
parent
f186888b04
commit
2f9c0087ef
@ -11,15 +11,17 @@
|
||||
class SystemClockMock : public uavcan::ISystemClock
|
||||
{
|
||||
public:
|
||||
uint64_t monotonic;
|
||||
uint64_t utc;
|
||||
mutable uint64_t monotonic;
|
||||
mutable uint64_t utc;
|
||||
int64_t monotonic_auto_advance;
|
||||
|
||||
SystemClockMock(uint64_t initial = 0)
|
||||
: monotonic(initial)
|
||||
, utc(initial)
|
||||
, monotonic_auto_advance(0)
|
||||
{ }
|
||||
|
||||
void advance(uint64_t usec)
|
||||
void advance(uint64_t usec) const
|
||||
{
|
||||
monotonic += usec;
|
||||
utc += usec;
|
||||
@ -28,7 +30,9 @@ public:
|
||||
uint64_t getMonotonicMicroseconds() const
|
||||
{
|
||||
assert(this);
|
||||
return monotonic;
|
||||
const uint64_t res = monotonic;
|
||||
advance(monotonic_auto_advance);
|
||||
return res;
|
||||
}
|
||||
|
||||
uint64_t getUtcMicroseconds() const
|
||||
|
||||
@ -221,3 +221,26 @@ TEST(Dispatcher, Transmission)
|
||||
ASSERT_TRUE(driver.ifaces.at(0).tx.empty());
|
||||
ASSERT_TRUE(driver.ifaces.at(1).tx.empty());
|
||||
}
|
||||
|
||||
|
||||
TEST(Dispatcher, Spin)
|
||||
{
|
||||
uavcan::PoolManager<1> poolmgr;
|
||||
|
||||
SystemClockMock clockmock(100);
|
||||
CanDriverMock driver(2, clockmock);
|
||||
|
||||
uavcan::OutgoingTransferRegistry<8> out_trans_reg(&poolmgr);
|
||||
|
||||
uavcan::Dispatcher dispatcher(&driver, &poolmgr, &clockmock, &out_trans_reg, SELF_NODE_ID);
|
||||
|
||||
clockmock.monotonic_auto_advance = 100;
|
||||
|
||||
ASSERT_EQ(100, clockmock.monotonic);
|
||||
ASSERT_EQ(0, dispatcher.spin(1000));
|
||||
ASSERT_LE(1000, clockmock.monotonic);
|
||||
ASSERT_EQ(0, dispatcher.spin(0));
|
||||
ASSERT_LE(1000, clockmock.monotonic);
|
||||
ASSERT_EQ(0, dispatcher.spin(1100));
|
||||
ASSERT_LE(1100, clockmock.monotonic);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user