GlobalTimeSyncSlave: methods isActive(), getMasterNodeID()

This commit is contained in:
Pavel Kirienko
2014-03-24 10:53:41 +04:00
parent d56d5d5dca
commit 438340ae98
3 changed files with 49 additions and 0 deletions
@@ -29,6 +29,8 @@ TEST(GlobalTimeSyncSlave, Basic)
uavcan::Publisher<uavcan::protocol::GlobalTimeSync> gts_pub(nodes.b);
ASSERT_LE(0, gtss.start());
ASSERT_FALSE(gtss.isActive());
ASSERT_FALSE(gtss.getMasterNodeID().isValid());
/*
* Empty broadcast
@@ -44,6 +46,9 @@ TEST(GlobalTimeSyncSlave, Basic)
std::cout << "Master mono=" << master_clock.monotonic << " utc=" << master_clock.utc << std::endl;
std::cout << "Slave mono=" << slave_clock.monotonic << " utc=" << slave_clock.utc << std::endl;
ASSERT_FALSE(gtss.isActive());
ASSERT_FALSE(gtss.getMasterNodeID().isValid());
/*
* Follow-up broadcast with proper time
* Slave must adjust now
@@ -59,6 +64,9 @@ TEST(GlobalTimeSyncSlave, Basic)
master_clock.utc += 1000000;
slave_clock.utc += 1000000;
ASSERT_TRUE(gtss.isActive());
ASSERT_EQ(nodes.b.getNodeID(), gtss.getMasterNodeID());
/*
* Next follow-up, slave is synchronized now
* Will update
@@ -72,6 +80,9 @@ TEST(GlobalTimeSyncSlave, Basic)
master_clock.utc += 1000000;
slave_clock.utc += 1000000;
ASSERT_TRUE(gtss.isActive());
ASSERT_EQ(nodes.b.getNodeID(), gtss.getMasterNodeID());
/*
* Next follow-up, slave is synchronized now
* Will adjust
@@ -87,6 +98,9 @@ TEST(GlobalTimeSyncSlave, Basic)
ASSERT_EQ(4000000, slave_clock.utc);
ASSERT_EQ(4000000, master_clock.utc);
ASSERT_TRUE(gtss.isActive());
ASSERT_EQ(nodes.b.getNodeID(), gtss.getMasterNodeID());
/*
* Another master
* This one has higher priority, so it will be preferred
@@ -112,6 +126,9 @@ TEST(GlobalTimeSyncSlave, Basic)
master2_clock.utc += 1000000;
ASSERT_TRUE(gtss.isActive());
ASSERT_EQ(master2_node.getNodeID(), gtss.getMasterNodeID());
/*
* Adjustment
*/
@@ -119,6 +136,9 @@ TEST(GlobalTimeSyncSlave, Basic)
nodes.spinBoth(uavcan::MonotonicDuration());
ASSERT_EQ(100, slave_clock.utc);
ASSERT_TRUE(gtss.isActive());
ASSERT_EQ(master2_node.getNodeID(), gtss.getMasterNodeID());
/*
* Another master will be ignored now
*/
@@ -131,4 +151,15 @@ TEST(GlobalTimeSyncSlave, Basic)
gts_pub.broadcast(gts);
nodes.spinBoth(uavcan::MonotonicDuration());
ASSERT_EQ(100, slave_clock.utc);
ASSERT_TRUE(gtss.isActive());
ASSERT_EQ(master2_node.getNodeID(), gtss.getMasterNodeID());
/*
* Timeout
*/
slave_clock.advance(100000000);
ASSERT_FALSE(gtss.isActive());
ASSERT_FALSE(gtss.getMasterNodeID().isValid());
}