From 394a05374ab1d85d9335099618f4ffb137330d5d Mon Sep 17 00:00:00 2001 From: Christian Herdtweck Date: Thu, 19 Mar 2015 18:26:17 +0100 Subject: [PATCH] added more tests, fixed trouble with position of test data relative to build dir --- test/CMakeLists.test_icmppacket.txt | 4 ++ test/test_icmppacket.cpp | 71 +++++++++++++++++++++++++++++----- 2 files changed, 64 insertions(+), 11 deletions(-) diff --git a/test/CMakeLists.test_icmppacket.txt b/test/CMakeLists.test_icmppacket.txt index 260ba6d..8899167 100644 --- a/test/CMakeLists.test_icmppacket.txt +++ b/test/CMakeLists.test_icmppacket.txt @@ -1,3 +1,7 @@ +add_definitions( + -DDATA_DIR_STRING=\"${CMAKE_BINARY_DIR}/test/data\" +) + # compiler: creates the binaries add_executable(test_icmppacket ${CMAKE_SOURCE_DIR}/src/boost_assert_handler.cpp diff --git a/test/test_icmppacket.cpp b/test/test_icmppacket.cpp index 5322624..559b095 100644 --- a/test/test_icmppacket.cpp +++ b/test/test_icmppacket.cpp @@ -24,6 +24,7 @@ #define BOOST_TEST_DYN_LINK #include +#include #include #include #include @@ -75,19 +76,12 @@ IcmpPacketItem read_packet(const std::string &file_name) BOOST_AUTO_TEST_SUITE( TestIcmpPacket ) -// just read a pcap file to see if helpers work -BOOST_AUTO_TEST_CASE( TestInternal ) -{ - std::string file_name = "test_icmppacket_echorequest.pcap"; - IcmpPacketItem packet = read_packet(file_name); - BOOST_CHECK( packet ); -} - - BOOST_AUTO_TEST_CASE( EchoRequest ) { - std::string file_name = "test_icmppacket_echorequest.pcap"; - IcmpPacketItem packet = read_packet(file_name); + std::string request_file = "icmp_echorequest.pcap"; + + // read request file + IcmpPacketItem packet = read_packet(request_file); BOOST_REQUIRE( packet ); BOOST_CHECK_EQUAL( packet->get_type_v4(), Icmpv4Type_EchoRequest ); BOOST_CHECK_EQUAL( packet->get_source_address().to_string(), @@ -98,6 +92,61 @@ BOOST_AUTO_TEST_CASE( EchoRequest ) BOOST_CHECK_EQUAL( packet->get_icmp_size(), 20 ); } + +BOOST_AUTO_TEST_CASE( EchoReply ) +{ + std::string reply_file = "icmp_echoreply.pcap"; + + // read reply file + IcmpPacketItem packet = read_packet(reply_file); + BOOST_REQUIRE( packet ); + BOOST_CHECK_EQUAL( packet->get_type_v4(), Icmpv4Type_EchoReply ); + BOOST_CHECK_EQUAL( packet->get_source_address().to_string(), + "38.100.128.10"); + BOOST_CHECK_EQUAL( packet->get_destination_address().to_string(), + "172.16.1.141"); + BOOST_CHECK_EQUAL( packet->get_icmp_code(), 0 ); + BOOST_CHECK_EQUAL( packet->get_icmp_size(), 20 ); + BOOST_CHECK( packet->match_echo_reply(0xaf36, 1, + boost::asio::ip::address_v4::from_string("38.100.128.10")) ); +} + +BOOST_AUTO_TEST_CASE( TimeExceeded ) +{ + std::string file_name = "icmp_timeexceeded.pcap"; + + // read file + IcmpPacketItem packet = read_packet(file_name); + BOOST_REQUIRE( packet ); + BOOST_CHECK_EQUAL( packet->get_type_v4(), Icmpv4Type_TimeExceeded ); + BOOST_CHECK_EQUAL( packet->get_source_address().to_string(), + "193.186.7.1"); + BOOST_CHECK_EQUAL( packet->get_destination_address().to_string(), + "172.16.1.141"); + BOOST_CHECK_EQUAL( packet->get_icmp_code(), 0 ); + BOOST_CHECK_EQUAL( packet->get_icmp_size(), 48 ); + BOOST_CHECK( packet->match_time_exceeded(0x4ae3, 1, + boost::asio::ip::address_v4::from_string("193.168.7.1")) ); +} + +BOOST_AUTO_TEST_CASE( DestinationUnreachable ) +{ + std::string file_name = "icmp_destinationunreachable.pcap"; + + // read file + IcmpPacketItem packet = read_packet(file_name); + BOOST_REQUIRE( packet ); + BOOST_CHECK_EQUAL( packet->get_type_v4(), Icmpv4Type_DestinationUnreachable ); + BOOST_CHECK_EQUAL( packet->get_source_address().to_string(), + "172.16.1.254"); + BOOST_CHECK_EQUAL( packet->get_destination_address().to_string(), + "172.16.1.141"); + BOOST_CHECK_EQUAL( packet->get_icmp_code(), 3 ); + BOOST_CHECK_EQUAL( packet->get_icmp_size(), 92 ); + BOOST_CHECK( packet->match_destination_unreachable(0x077b, 1, + boost::asio::ip::address_v4::from_string("85.214.66.2")) ); +} + BOOST_AUTO_TEST_SUITE_END() // (created using vim -- the world's best text editor) -- 1.7.1