#include #include #include #include #include class TCStackNeigh : public ::testing::Test { protected: struct neighbour_manager nbl_object_; struct sk_dev_info dev_info_; virtual void SetUp() { int ret = neighbour_mamanger_init(&nbl_object_, "TestNeighbour", 1024, 8, 0); ASSERT_EQ(ret, 0); } virtual void TearDown() { int ret = neighbour_mamanger_deinit(&nbl_object_); ASSERT_EQ(ret, 0); } }; TEST_F(TCStackNeigh, CreateAndQuery) { int ret = 0; struct in_addr _in_addr; inet_pton(AF_INET, "192.168.11.101", &_in_addr); struct ether_addr _ether_addr = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 }; ret = neigh_create_or_update(&nbl_object_, _in_addr, &_ether_addr, &dev_info_, 1); ASSERT_EQ(ret, 0); struct ether_addr _ether_addr_query; struct sk_dev_info * _dev_info_query; ret = neigh_query(&nbl_object_, _in_addr, &_ether_addr_query, &_dev_info_query); ASSERT_EQ(ret, 0); EXPECT_EQ(is_same_ether_addr(&_ether_addr_query, &_ether_addr), 1); EXPECT_EQ(_dev_info_query, &dev_info_); } TEST_F(TCStackNeigh, CreateAndUpdate) { int ret = 0; struct in_addr _in_addr; inet_pton(AF_INET, "192.168.11.101", &_in_addr); struct ether_addr _ether_addr = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 }; ret = neigh_create_or_update(&nbl_object_, _in_addr, &_ether_addr, &dev_info_, 1); ASSERT_EQ(ret, 0); struct ether_addr _ether_addr_query; struct sk_dev_info * _dev_info_query; ret = neigh_query(&nbl_object_, _in_addr, &_ether_addr_query, &_dev_info_query); ASSERT_EQ(ret, 0); EXPECT_EQ(is_same_ether_addr(&_ether_addr_query, &_ether_addr), 1); EXPECT_EQ(_dev_info_query, &dev_info_); struct ether_addr _ether_addr_update = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; ret = neigh_create_or_update(&nbl_object_, _in_addr, &_ether_addr_update, &dev_info_, 1); ASSERT_EQ(ret, 0); ret = neigh_query(&nbl_object_, _in_addr, &_ether_addr_query, &_dev_info_query); ASSERT_EQ(ret, 0); EXPECT_EQ(is_same_ether_addr(&_ether_addr_query, &_ether_addr_update), 1); EXPECT_EQ(_dev_info_query, &dev_info_); } TEST_F(TCStackNeigh, CreateAndDelete) { int ret = 0; struct in_addr _in_addr; inet_pton(AF_INET, "192.168.11.101", &_in_addr); struct ether_addr _ether_addr = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 }; ret = neigh_create_or_update(&nbl_object_, _in_addr, &_ether_addr, &dev_info_, 1); ASSERT_EQ(ret, 0); ret = neigh_delete(&nbl_object_, _in_addr); ASSERT_EQ(ret, 0); struct ether_addr _ether_addr_query; struct sk_dev_info * _dev_info_query; ret = neigh_query(&nbl_object_, _in_addr, &_ether_addr_query, &_dev_info_query); ASSERT_LE(ret, 0); }