From f5086e76df69fdb473921497c38af14ae86ba931 Mon Sep 17 00:00:00 2001 From: Martine Lenders <m.lenders@fu-berlin.de> Date: Tue, 29 Jan 2019 14:07:07 +0100 Subject: [PATCH] tests/unittests: add tests for exponential NS backoff --- .../tests-gnrc_ipv6_nib-internal.c | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tests/unittests/tests-gnrc_ipv6_nib/tests-gnrc_ipv6_nib-internal.c b/tests/unittests/tests-gnrc_ipv6_nib/tests-gnrc_ipv6_nib-internal.c index 3803f10a33..53ee79bf6d 100644 --- a/tests/unittests/tests-gnrc_ipv6_nib/tests-gnrc_ipv6_nib-internal.c +++ b/tests/unittests/tests-gnrc_ipv6_nib/tests-gnrc_ipv6_nib-internal.c @@ -21,6 +21,7 @@ #include "net/gnrc/ipv6/nib.h" #include "_nib-internal.h" +#include "_nib-arsm.h" #include "unittests-constants.h" @@ -1909,6 +1910,58 @@ static void test_nib_abr_iter__three_elem_middle_removed(void) } #endif +static void test_retrans_exp_backoff(void) +{ + TEST_ASSERT_EQUAL_INT(0, + _exp_backoff_retrans_timer_factor(0, 0, NDP_MIN_RANDOM_FACTOR)); + /* factor 1000 means multiplied by 1 */ + TEST_ASSERT_EQUAL_INT(NDP_RETRANS_TIMER_MS, + _exp_backoff_retrans_timer_factor(0, NDP_RETRANS_TIMER_MS, 1000)); + TEST_ASSERT_EQUAL_INT(2 * NDP_RETRANS_TIMER_MS, /* 2^1 = 2 */ + _exp_backoff_retrans_timer_factor(1, NDP_RETRANS_TIMER_MS, 1000)); + TEST_ASSERT_EQUAL_INT(4 * NDP_RETRANS_TIMER_MS, /* 2^2 = 4 */ + _exp_backoff_retrans_timer_factor(2, NDP_RETRANS_TIMER_MS, 1000)); + TEST_ASSERT_EQUAL_INT(8 * NDP_RETRANS_TIMER_MS, /* 2^3 = 8 */ + _exp_backoff_retrans_timer_factor(3, NDP_RETRANS_TIMER_MS, 1000)); + TEST_ASSERT_EQUAL_INT(16 * NDP_RETRANS_TIMER_MS, /* 2^4 = 16 */ + _exp_backoff_retrans_timer_factor(4, NDP_RETRANS_TIMER_MS, 1000)); + TEST_ASSERT_EQUAL_INT(32 * NDP_RETRANS_TIMER_MS, /* 2^5 = 32 */ + _exp_backoff_retrans_timer_factor(5, NDP_RETRANS_TIMER_MS, 1000)); + TEST_ASSERT_EQUAL_INT(NDP_MAX_RETRANS_TIMER_MS, + _exp_backoff_retrans_timer_factor(6, NDP_RETRANS_TIMER_MS, 1000)); + TEST_ASSERT_EQUAL_INT(NDP_MAX_RETRANS_TIMER_MS, + _exp_backoff_retrans_timer_factor(0, UINT32_MAX, + NDP_MIN_RANDOM_FACTOR)); + TEST_ASSERT_EQUAL_INT(NDP_MAX_RETRANS_TIMER_MS, + _exp_backoff_retrans_timer_factor(0, UINT32_MAX, + NDP_MAX_RANDOM_FACTOR - 1)); + TEST_ASSERT_EQUAL_INT(NDP_MAX_RETRANS_TIMER_MS, + _exp_backoff_retrans_timer_factor(NDP_MAX_NS_NUMOF, UINT32_MAX, + NDP_MAX_RANDOM_FACTOR - 1)); + TEST_ASSERT_EQUAL_INT(NDP_MAX_RETRANS_TIMER_MS, + _exp_backoff_retrans_timer_factor(NDP_MAX_NS_NUMOF, + NDP_RETRANS_TIMER_MS, + NDP_MAX_RANDOM_FACTOR - 1)); + TEST_ASSERT_EQUAL_INT(NDP_MAX_RETRANS_TIMER_MS, + _exp_backoff_retrans_timer_factor(NDP_MAX_NS_NUMOF, + NDP_RETRANS_TIMER_MS, + NDP_MIN_RANDOM_FACTOR)); + TEST_ASSERT_EQUAL_INT(NDP_MAX_RETRANS_TIMER_MS, + _exp_backoff_retrans_timer_factor(NDP_MAX_NS_NUMOF, + NDP_MAX_RETRANS_TIMER_MS, + NDP_MAX_RANDOM_FACTOR - 1)); + TEST_ASSERT_EQUAL_INT(32768, + _exp_backoff_retrans_timer_factor(NDP_MAX_NS_NUMOF - 1, 1, + NDP_MIN_RANDOM_FACTOR)); + TEST_ASSERT_EQUAL_INT(47653, + _exp_backoff_retrans_timer_factor(5U, 1118U, 1332)); + TEST_ASSERT_EQUAL_INT(47653, + _exp_backoff_retrans_timer_factor(5U, 1118U, 1332)); + /* test 64-bit overfrow */ + TEST_ASSERT_EQUAL_INT(NDP_MAX_RETRANS_TIMER_MS, + _exp_backoff_retrans_timer_factor(NDP_MAX_NS_NUMOF, 32768, 1024)); +} + Test *tests_gnrc_ipv6_nib_internal_tests(void) { EMB_UNIT_TESTFIXTURES(fixtures) { @@ -2007,6 +2060,7 @@ Test *tests_gnrc_ipv6_nib_internal_tests(void) new_TestFixture(test_nib_abr_iter__three_elem), new_TestFixture(test_nib_abr_iter__three_elem_middle_removed), #endif + new_TestFixture(test_retrans_exp_backoff), }; EMB_UNIT_TESTCALLER(tests, set_up, NULL, -- GitLab