@@ -211,6 +211,12 @@ void LinkManagerStateMachineTest::handleMuxConfig(std::string config, uint32_t c
211
211
runIoService (count);
212
212
}
213
213
214
+ void LinkManagerStateMachineTest::handleResetSuspendTimer (uint32_t count)
215
+ {
216
+ mFakeMuxPort .handleResetSuspendTimer ();
217
+ runIoService (count);
218
+ }
219
+
214
220
void LinkManagerStateMachineTest::activateStateMachine ()
215
221
{
216
222
mFakeMuxPort .activateStateMachine ();
@@ -1607,4 +1613,43 @@ TEST_F(LinkManagerStateMachineTest, DefaultRouteStateRaceCondition)
1607
1613
stopIoServiceThreaded ();
1608
1614
}
1609
1615
1616
+ TEST_F (LinkManagerStateMachineTest, ResetSuspendTimer)
1617
+ {
1618
+ setMuxActive ();
1619
+
1620
+ // swss notification
1621
+ handleMuxState (" active" , 3 );
1622
+ VALIDATE_STATE (Active, Active, Up);
1623
+
1624
+ EXPECT_EQ (mFakeMuxPort .mFakeLinkProber ->mSuspendTxProbeCallCount , 0 );
1625
+ EXPECT_EQ (mFakeMuxPort .mFakeLinkProber ->mResumeTxProbeCallCount , 1 );
1626
+
1627
+ handleResetSuspendTimer ();
1628
+
1629
+ EXPECT_EQ (mFakeMuxPort .mFakeLinkProber ->mSuspendTxProbeCallCount , 0 );
1630
+ EXPECT_EQ (mFakeMuxPort .mFakeLinkProber ->mResumeTxProbeCallCount , 1 );
1631
+
1632
+ EXPECT_EQ (mDbInterfacePtr ->mProbeMuxStateInvokeCount , 0 );
1633
+ EXPECT_EQ (mDbInterfacePtr ->mGetMuxStateInvokeCount , 1 );
1634
+ postLinkProberEvent (link_prober::LinkProberState::Unknown, 2 );
1635
+ VALIDATE_STATE (Unknown, Active, Up);
1636
+ EXPECT_EQ (mDbInterfacePtr ->mProbeMuxStateInvokeCount , 0 );
1637
+ EXPECT_EQ (mFakeMuxPort .mFakeLinkProber ->mSuspendTxProbeCallCount , 1 );
1638
+ EXPECT_EQ (mFakeMuxPort .mFakeLinkProber ->mResumeTxProbeCallCount , 1 );
1639
+ EXPECT_EQ (mFakeMuxPort .getActiveStandbyStateMachineSuspendBackoffFactor (), 2 );
1640
+
1641
+ handleResetSuspendTimer ();
1642
+
1643
+ // once suspend timer is reset, the tx probe is resumed
1644
+ EXPECT_EQ (mFakeMuxPort .mFakeLinkProber ->mSuspendTxProbeCallCount , 1 );
1645
+ EXPECT_EQ (mFakeMuxPort .mFakeLinkProber ->mResumeTxProbeCallCount , 2 );
1646
+ // the backoff factor is restored to 1
1647
+ EXPECT_EQ (mFakeMuxPort .getActiveStandbyStateMachineSuspendBackoffFactor (), 1 );
1648
+
1649
+ postSuspendTimerExpiredEvent (2 );
1650
+ VALIDATE_STATE (Unknown, Wait, Up);
1651
+ EXPECT_EQ (mFakeMuxPort .mFakeLinkProber ->mDetectLinkCallCount , 1 );
1652
+ EXPECT_EQ (mDbInterfacePtr ->mProbeMuxStateInvokeCount , 1 );
1653
+ }
1654
+
1610
1655
} /* namespace test */
0 commit comments