diff --git a/tests/unit/test_platform.cpp b/tests/unit/test_platform.cpp index f74cbaf6c..055693af9 100644 --- a/tests/unit/test_platform.cpp +++ b/tests/unit/test_platform.cpp @@ -75,6 +75,23 @@ ot::Instance *testInitInstance(void) return static_cast(instance); } +ot::Instance *testResetInstance(ot::Instance *aInstance) +{ + otInstanceFinalize(aInstance); + +#if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE + { + size_t instanceBufferLength = sizeof(ot::Instance); + + aInstance = static_cast(otInstanceInit(aInstance, &instanceBufferLength)); + } +#else + aInstance = static_cast(otInstanceInitSingle()); +#endif + + return aInstance; +} + #if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE && OPENTHREAD_CONFIG_MULTIPLE_STATIC_INSTANCE_ENABLE ot::Instance *testInitAdditionalInstance(uint8_t id) { diff --git a/tests/unit/test_platform.h b/tests/unit/test_platform.h index c72f7471e..4eedd4edc 100644 --- a/tests/unit/test_platform.h +++ b/tests/unit/test_platform.h @@ -51,6 +51,7 @@ #include "test_util.h" ot::Instance *testInitInstance(void); +ot::Instance *testResetInstance(ot::Instance *aInstance); #if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE && OPENTHREAD_CONFIG_MULTIPLE_STATIC_INSTANCE_ENABLE ot::Instance *testInitAdditionalInstance(uint8_t id); #endif diff --git a/tests/unit/test_routing_manager.cpp b/tests/unit/test_routing_manager.cpp index d0e9801b3..e14a9ad1c 100644 --- a/tests/unit/test_routing_manager.cpp +++ b/tests/unit/test_routing_manager.cpp @@ -1386,19 +1386,23 @@ void VerifyFavoredOnLinkPrefix(const Ip6::Prefix &aPrefix) VerifyOrQuit(favoredPrefix == aPrefix); } -void InitTest(bool aEnablBorderRouting = false, bool aAfterReset = false) +void InitTest(bool aEnablBorderRouting = false, bool aResetInstance = false) { uint32_t delay = 10000; //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Initialize OT instance. - sNow = 0; - sAlarmOn = false; - sInstance = static_cast(testInitInstance()); + sNow = 0; + sAlarmOn = false; - if (aAfterReset) + if (!aResetInstance) { + sInstance = testInitInstance(); + } + else + { + sInstance = testResetInstance(sInstance); delay += 26000; // leader reset sync delay } @@ -4285,9 +4289,7 @@ void TestSavedOnLinkPrefixes(void) Log("Disabling and re-enabling OT Instance"); - testFreeInstance(sInstance); - - InitTest(/* aEnablBorderRouting */ true, /* aAfterReset */ true); + InitTest(/* aEnablBorderRouting */ true, /* aResetInstance */ true); sExpectedPio = kPioAdvertisingLocalOnLink; @@ -4331,9 +4333,7 @@ void TestSavedOnLinkPrefixes(void) Log("Disabling and re-enabling OT Instance"); - testFreeInstance(sInstance); - - InitTest(/* aEnablBorderRouting */ false, /* aAfterReset */ true); + InitTest(/* aEnablBorderRouting */ false, /* aResetInstance */ true); //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Start Routing Manager. @@ -4381,8 +4381,7 @@ void TestSavedOnLinkPrefixes(void) Log("Disabling and re-enabling OT Instance again"); - testFreeInstance(sInstance); - InitTest(/* aEnablBorderRouting */ false, /* aAfterReset */ true); + InitTest(/* aEnablBorderRouting */ false, /* aResetInstance */ true); SuccessOrQuit(sInstance->Get().SetEnabled(true)); AdvanceTime(100);