--- /dev/null
+#!/usr/bin/env python
+
+import unittest
+
+from framework import VppTestCase, VppTestRunner
+
+class TestFIB(VppTestCase):
+ """ FIB Test Case """
+
+ @classmethod
+ def setUpClass(cls):
+ super(TestFIB, cls).setUpClass()
+
+ def setUp(self):
+ super(TestFIB, self).setUp()
+
+ def tearDown(self):
+ super(TestFIB, self).tearDown()
+
+ def test_fib(self):
+ """ FIB Unit Tests """
+ error = self.vapi.cli("test fib")
+
+ self.logger.critical(error)
+ self.assertEqual(error.find("Failed"), -1)
+
+if __name__ == '__main__':
+ unittest.main(testRunner=VppTestRunner)
#define FIB_TEST(_cond, _comment, _args...) \
{ \
if (!FIB_TEST_I(_cond, _comment, ##_args)) { \
- return;\
+ return 1; \
ASSERT(!("FAIL: " _comment)); \
} \
}
static u8 *hw_address;
-static void
+static int
fib_test_mk_intf (u32 ninterfaces)
{
clib_error_t * error = NULL;
tm->hw[i] = vnet_get_hw_interface(vnet_get_main(),
tm->hw_if_indicies[i]);
}
+
+ return (0);
}
#define FIB_TEST_REC_FORW(_rec_prefix, _via_prefix, _bucket) \
return (res);
}
-static void
+static int
fib_test_v4 (void)
{
/*
FIB_TEST((NBR-5 == pool_elts(fib_urpf_list_pool)), "uRPF pool size is %d",
pool_elts(fib_urpf_list_pool));
- return;
+ return 0;
}
-static void
+static int
fib_test_v6 (void)
{
/*
FIB_TEST((0 == adj_nbr_db_size()), "ADJ DB size is %d",
adj_nbr_db_size());
+
+ return (0);
}
/*
* Test Attached Exports
*/
-static void
+static int
fib_test_ae (void)
{
const dpo_id_t *dpo, *dpo_drop;
FIB_TEST((0 == adj_nbr_db_size()), "ADJ DB size is %d",
adj_nbr_db_size());
+
+ return (0);
}
/*
* Test the recursive route route handling for GRE tunnels
*/
-static void
+static int
fib_test_label (void)
{
fib_node_index_t fei, ai_mpls_10_10_10_1, ai_v4_10_10_11_1, ai_v4_10_10_11_2, ai_mpls_10_10_11_2, ai_mpls_10_10_11_1;
FIB_TEST(lb_count+1 == pool_elts(load_balance_pool),
"Load-balance resources freed %d of %d",
lb_count+1, pool_elts(load_balance_pool));
+
+ return (0);
}
#define N_TEST_CHILDREN 4
const f64 quota);
u32 fib_walk_queue_get_size(fib_walk_priority_t prio);
-static void
+static int
fib_test_walk (void)
{
fib_node_back_walk_ctx_t high_ctx = {}, low_ctx = {};
*/
FIB_TEST((1 == fib_test_nodes[PARENT_INDEX].destroyed),
"Parent was destroyed");
+
+ return (0);
}
-static void
-lfib_test_deagg (void)
+static int
+lfib_test (void)
{
const mpls_label_t deag_label = 50;
const u32 lfib_index = 0;
FIB_TEST(lb_count == pool_elts(load_balance_pool),
"Load-balance resources freed %d of %d",
lb_count, pool_elts(load_balance_pool));
+
+ return (0);
}
static clib_error_t *
unformat_input_t * input,
vlib_cli_command_t * cmd_arg)
{
+ int res;
+
+ res = 0;
fib_test_mk_intf(4);
if (unformat (input, "ip"))
{
- fib_test_v4();
- fib_test_v6();
+ res += fib_test_v4();
+ res += fib_test_v6();
}
else if (unformat (input, "label"))
{
- fib_test_label();
+ res += fib_test_label();
}
else if (unformat (input, "ae"))
{
- fib_test_ae();
+ res += fib_test_ae();
}
else if (unformat (input, "lfib"))
{
- lfib_test_deagg();
+ res += lfib_test();
}
else if (unformat (input, "walk"))
{
- fib_test_walk();
+ res += fib_test_walk();
}
else
{
*
* fib_test_walk();
*/
- fib_test_v4();
- fib_test_v6();
- fib_test_ae();
- fib_test_label();
- lfib_test_deagg();
+ res += fib_test_v4();
+ res += fib_test_v6();
+ res += fib_test_ae();
+ res += fib_test_label();
+ res += lfib_test();
}
- return (NULL);
+ if (res)
+ {
+ return clib_error_return(0, "FIB Unit Test Failed");
+ }
+ else
+ {
+ return (NULL);
+ }
}
VLIB_CLI_COMMAND (test_fib_command, static) = {