From f7d2e352a265ff9a3d0fd71d96828da184eeffe7 Mon Sep 17 00:00:00 2001 From: Hein Tibosch Date: Fri, 8 Sep 2023 17:15:18 +0800 Subject: [PATCH] Repaired unit tests --- test/unit-test/FreeRTOS_IP/FreeRTOS_IP_utest.c | 12 ++++++++++++ test/unit-test/FreeRTOS_IP/ut.cmake | 1 + .../FreeRTOS_IPv6/FreeRTOS_IPv6_utest.c | 16 ++++++++++------ test/unit-test/FreeRTOS_IPv6/ut.cmake | 3 +++ test/unit-test/FreeRTOS_ND/FreeRTOS_ND_utest.c | 3 ++- .../FreeRTOS_Routing/FreeRTOS_Routing_utest.c | 4 ++++ 6 files changed, 32 insertions(+), 7 deletions(-) diff --git a/test/unit-test/FreeRTOS_IP/FreeRTOS_IP_utest.c b/test/unit-test/FreeRTOS_IP/FreeRTOS_IP_utest.c index 277081b0f..aa8cb1c73 100644 --- a/test/unit-test/FreeRTOS_IP/FreeRTOS_IP_utest.c +++ b/test/unit-test/FreeRTOS_IP/FreeRTOS_IP_utest.c @@ -2295,6 +2295,7 @@ void test_prvProcessIPPacket_ARPResolutionNotReqd_UDPZeroLength( void ) prvAllowIPPacketIPv4_ExpectAndReturn( pxIPPacket, pxNetworkBuffer, ( pxIPHeader->ucVersionHeaderLength & 0x0FU ) << 2, eProcessBuffer ); prvCheckIP4HeaderOptions_ExpectAndReturn( pxNetworkBuffer, eProcessBuffer ); + xBadIPv4Loopback_ExpectAndReturn( &( pxUDPPacket->xIPHeader ), pdFALSE ); eResult = prvProcessIPPacket( pxIPPacket, pxNetworkBuffer ); @@ -2381,6 +2382,8 @@ void test_prvProcessIPPacket_ARPResolutionNotReqd_UDPHappyPath( void ) pxUDPPacket->xUDPHeader.usLength = FreeRTOS_ntohs( sizeof( UDPPacket_t ) ); prvAllowIPPacketIPv4_ExpectAndReturn( pxIPPacket, pxNetworkBuffer, ( pxIPHeader->ucVersionHeaderLength & 0x0FU ) << 2, eProcessBuffer ); + xBadIPv4Loopback_ExpectAndReturn( &( pxUDPPacket->xIPHeader ), pdFALSE ); + xProcessReceivedUDPPacket_ExpectAnyArgsAndReturn( pdPASS ); eResult = prvProcessIPPacket( pxIPPacket, pxNetworkBuffer ); @@ -2424,6 +2427,8 @@ void test_prvProcessIPPacket_ARPResolutionNotReqd_UDPProcessFail( void ) pxUDPPacket->xUDPHeader.usLength = FreeRTOS_ntohs( sizeof( UDPPacket_t ) ); prvAllowIPPacketIPv4_ExpectAndReturn( pxIPPacket, pxNetworkBuffer, ( pxIPHeader->ucVersionHeaderLength & 0x0FU ) << 2, eProcessBuffer ); + xBadIPv4Loopback_ExpectAndReturn( &( pxUDPPacket->xIPHeader ), pdFALSE ); + xProcessReceivedUDPPacket_ExpectAnyArgsAndReturn( pdFAIL ); eResult = prvProcessIPPacket( pxIPPacket, pxNetworkBuffer ); @@ -2470,6 +2475,8 @@ void test_prvProcessIPPacket_ARPResolutionReqd_UDP( void ) pxUDPPacket->xUDPHeader.usLength = FreeRTOS_ntohs( sizeof( UDPPacket_t ) ); prvAllowIPPacketIPv4_ExpectAndReturn( pxIPPacket, pxNetworkBuffer, ( pxIPHeader->ucVersionHeaderLength & 0x0FU ) << 2, eProcessBuffer ); + xBadIPv4Loopback_ExpectAndReturn( &( pxUDPPacket->xIPHeader ), pdFALSE ); + xProcessReceivedUDPPacket_ExpectAndReturn( pxNetworkBuffer, pxUDPPacket->xUDPHeader.usDestinationPort, NULL, pdFAIL ); xProcessReceivedUDPPacket_IgnoreArg_pxIsWaitingForARPResolution(); xProcessReceivedUDPPacket_ReturnThruPtr_pxIsWaitingForARPResolution( &xReturnValue ); @@ -2520,6 +2527,8 @@ void test_prvProcessIPPacket_ARPResolutionReqd_UDP1( void ) pxUDPPacket->xUDPHeader.usLength = FreeRTOS_ntohs( sizeof( UDPPacket_t ) ); prvAllowIPPacketIPv4_ExpectAndReturn( pxIPPacket, pxNetworkBuffer, ( pxIPHeader->ucVersionHeaderLength & 0x0FU ) << 2, eProcessBuffer ); + xBadIPv4Loopback_ExpectAndReturn( &( pxUDPPacket->xIPHeader ), pdFALSE ); + xProcessReceivedUDPPacket_ExpectAndReturn( pxNetworkBuffer, pxUDPPacket->xUDPHeader.usDestinationPort, NULL, pdFAIL ); xProcessReceivedUDPPacket_IgnoreArg_pxIsWaitingForARPResolution(); xProcessReceivedUDPPacket_ReturnThruPtr_pxIsWaitingForARPResolution( &xReturnValue ); @@ -2651,6 +2660,7 @@ void test_prvProcessIPPacket_UDP_ExternalLoopback( void ) pxIPPacket->xIPHeader.ucProtocol = ipPROTOCOL_UDP; prvAllowIPPacketIPv4_ExpectAndReturn( pxIPPacket, pxNetworkBuffer, ( pxIPHeader->ucVersionHeaderLength & 0x0FU ) << 2, eProcessBuffer ); + xBadIPv4Loopback_ExpectAndReturn( &( pxIPPacket->xIPHeader ), pdFALSE ); eResult = prvProcessIPPacket( pxIPPacket, pxNetworkBuffer ); @@ -2689,6 +2699,7 @@ void test_prvProcessIPPacket_UDP_GreaterLoopbackAddress( void ) pxIPPacket->xIPHeader.ucProtocol = ipPROTOCOL_UDP; prvAllowIPPacketIPv4_ExpectAndReturn( pxIPPacket, pxNetworkBuffer, ( pxIPHeader->ucVersionHeaderLength & 0x0FU ) << 2, eProcessBuffer ); + xBadIPv4Loopback_ExpectAndReturn( &( pxIPPacket->xIPHeader ), pdFALSE ); eResult = prvProcessIPPacket( pxIPPacket, pxNetworkBuffer ); @@ -2727,6 +2738,7 @@ void test_prvProcessIPPacket_UDP_LessLoopbackAddress( void ) pxIPPacket->xIPHeader.ucProtocol = ipPROTOCOL_UDP; prvAllowIPPacketIPv4_ExpectAndReturn( pxIPPacket, pxNetworkBuffer, ( pxIPHeader->ucVersionHeaderLength & 0x0FU ) << 2, eProcessBuffer ); + xBadIPv4Loopback_ExpectAndReturn( &( pxIPPacket->xIPHeader ), pdFALSE ); eResult = prvProcessIPPacket( pxIPPacket, pxNetworkBuffer ); diff --git a/test/unit-test/FreeRTOS_IP/ut.cmake b/test/unit-test/FreeRTOS_IP/ut.cmake index 4b37c1d68..f26cfaff3 100644 --- a/test/unit-test/FreeRTOS_IP/ut.cmake +++ b/test/unit-test/FreeRTOS_IP/ut.cmake @@ -15,6 +15,7 @@ list(APPEND mock_list "${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include/queue.h" "${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include/event_groups.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP.h" + "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_DNS_Cache.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IPv4.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IPv6.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_ND.h" diff --git a/test/unit-test/FreeRTOS_IPv6/FreeRTOS_IPv6_utest.c b/test/unit-test/FreeRTOS_IPv6/FreeRTOS_IPv6_utest.c index 9870ce093..1f24b1f82 100644 --- a/test/unit-test/FreeRTOS_IPv6/FreeRTOS_IPv6_utest.c +++ b/test/unit-test/FreeRTOS_IPv6/FreeRTOS_IPv6_utest.c @@ -120,6 +120,7 @@ void test_prvAllowIPPacketIPv6_MulticastAddress() memcpy( pxTCPPacket->xIPHeader.xDestinationAddress.ucBytes, xMCIPAddress.ucBytes, ipSIZE_OF_IPv6_ADDRESS ); + FreeRTOS_FindEndPointOnIP_IPv6_ExpectAndReturn( &( pxTCPPacket->xIPHeader.xSourceAddress ), pxNetworkBuffer->pxEndPoint ); FreeRTOS_FindEndPointOnMAC_ExpectAndReturn( &pxTCPPacket->xEthernetHeader.xSourceAddress, NULL, NULL ); usGenerateProtocolChecksum_ExpectAndReturn( pxNetworkBuffer->pucEthernetBuffer, pxNetworkBuffer->xDataLength, pdFALSE, ipCORRECT_CRC ); @@ -136,11 +137,15 @@ void test_prvAllowIPPacketIPv6_LoopbackAddress() eFrameProcessingResult_t eResult; NetworkBufferDescriptor_t * pxNetworkBuffer = prvInitializeNetworkDescriptor(); TCPPacket_IPv6_t * pxTCPPacket = ( TCPPacket_IPv6_t * ) pxNetworkBuffer->pucEthernetBuffer; + NetworkEndPoint_t xEndPoint; - memcpy( pxTCPPacket->xIPHeader.xSourceAddress.ucBytes, xIPAddressFive.ucBytes, ipSIZE_OF_IPv6_ADDRESS ); + memcpy( pxTCPPacket->xIPHeader.xSourceAddress.ucBytes, FreeRTOS_in6addr_loopback.ucBytes, ipSIZE_OF_IPv6_ADDRESS ); memcpy( pxTCPPacket->xIPHeader.xDestinationAddress.ucBytes, FreeRTOS_in6addr_loopback.ucBytes, ipSIZE_OF_IPv6_ADDRESS ); - FreeRTOS_FindEndPointOnIP_IPv6_ExpectAndReturn( &pxTCPPacket->xIPHeader.xSourceAddress, pxNetworkBuffer->pxEndPoint ); + FreeRTOS_FindEndPointOnIP_IPv6_ExpectAndReturn( &pxTCPPacket->xIPHeader.xSourceAddress, &xEndPoint ); + + FreeRTOS_IsNetworkUp_IgnoreAndReturn( 0 ); + FreeRTOS_FindEndPointOnMAC_ExpectAndReturn( &pxTCPPacket->xEthernetHeader.xSourceAddress, NULL, NULL ); usGenerateProtocolChecksum_ExpectAndReturn( pxNetworkBuffer->pucEthernetBuffer, pxNetworkBuffer->xDataLength, pdFALSE, ipCORRECT_CRC ); @@ -178,16 +183,15 @@ void test_prvAllowIPPacketIPv6_LoopbackNotMatchSrc() eFrameProcessingResult_t eResult; NetworkBufferDescriptor_t * pxNetworkBuffer = prvInitializeNetworkDescriptor(); TCPPacket_IPv6_t * pxTCPPacket = ( TCPPacket_IPv6_t * ) pxNetworkBuffer->pucEthernetBuffer; + NetworkEndPoint_t xEndPoint; memcpy( pxTCPPacket->xIPHeader.xDestinationAddress.ucBytes, FreeRTOS_in6addr_loopback.ucBytes, ipSIZE_OF_IPv6_ADDRESS ); - FreeRTOS_FindEndPointOnIP_IPv6_ExpectAndReturn( &pxTCPPacket->xIPHeader.xSourceAddress, pxNetworkBuffer->pxEndPoint ); + FreeRTOS_FindEndPointOnIP_IPv6_ExpectAndReturn( &pxTCPPacket->xIPHeader.xSourceAddress, &xEndPoint ); FreeRTOS_IsNetworkUp_IgnoreAndReturn( 0 ); - FreeRTOS_FindEndPointOnMAC_ExpectAndReturn( &pxTCPPacket->xEthernetHeader.xSourceAddress, NULL, NULL ); - usGenerateProtocolChecksum_ExpectAndReturn( pxNetworkBuffer->pucEthernetBuffer, pxNetworkBuffer->xDataLength, pdFALSE, ipCORRECT_CRC ); eResult = prvAllowIPPacketIPv6( &pxTCPPacket->xIPHeader, pxNetworkBuffer, 0U ); - TEST_ASSERT_EQUAL( eProcessBuffer, eResult ); + TEST_ASSERT_EQUAL( eReleaseBuffer, eResult ); } /** diff --git a/test/unit-test/FreeRTOS_IPv6/ut.cmake b/test/unit-test/FreeRTOS_IPv6/ut.cmake index aba573fd0..776178a64 100644 --- a/test/unit-test/FreeRTOS_IPv6/ut.cmake +++ b/test/unit-test/FreeRTOS_IPv6/ut.cmake @@ -15,7 +15,10 @@ list(APPEND mock_list "${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include/queue.h" "${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include/event_groups.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/NetworkBufferManagement.h" + "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IPv6_Utils.h" + "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Private.h" + "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_Routing.h" ) set(mock_include_list "") diff --git a/test/unit-test/FreeRTOS_ND/FreeRTOS_ND_utest.c b/test/unit-test/FreeRTOS_ND/FreeRTOS_ND_utest.c index 9bedde248..b419a0cc1 100644 --- a/test/unit-test/FreeRTOS_ND/FreeRTOS_ND_utest.c +++ b/test/unit-test/FreeRTOS_ND/FreeRTOS_ND_utest.c @@ -1870,7 +1870,8 @@ void test_FreeRTOS_CreateIPv6Address_Assert1( void ) void test_FreeRTOS_CreateIPv6Address_Assert2( void ) { IPv6_Address_t xIPAddress, xPrefix; - size_t uxPrefixLength = 8U * ipSIZE_OF_IPv6_ADDRESS; + /* The maximum allowed prefix length was increased to 128 because of the loopback address. */ + size_t uxPrefixLength = 8U * ipSIZE_OF_IPv6_ADDRESS + 1; BaseType_t xDoRandom = pdFALSE, xReturn, xIndex; catch_assert( FreeRTOS_CreateIPv6Address( &xIPAddress, &xPrefix, uxPrefixLength, xDoRandom ) ); diff --git a/test/unit-test/FreeRTOS_Routing/FreeRTOS_Routing_utest.c b/test/unit-test/FreeRTOS_Routing/FreeRTOS_Routing_utest.c index 64f06e754..93722b21d 100644 --- a/test/unit-test/FreeRTOS_Routing/FreeRTOS_Routing_utest.c +++ b/test/unit-test/FreeRTOS_Routing/FreeRTOS_Routing_utest.c @@ -2656,6 +2656,8 @@ void test_xIPv6_GetIPType_Unknown() const IPv6_Address_t xIPv6Address = { 0x12, 0x34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x01, 0x02 }; IPv6_Type_t xReturn; + xIsIPv6Loopback_ExpectAndReturn( &xIPv6Address, pdFALSE ); + xReturn = xIPv6_GetIPType( &xIPv6Address ); TEST_ASSERT_EQUAL( eIPv6_Unknown, xReturn ); } @@ -3453,6 +3455,8 @@ void test_FreeRTOS_MatchingEndpoint_Type() memcpy( pxTCPPacket->xIPHeader.xSourceAddress.ucBytes, xDefaultIPAddress_IPv6.ucBytes, sizeof( IPv6_Address_t ) ); memcpy( pxTCPPacket->xIPHeader.xDestinationAddress.ucBytes, xDefaultIPAddress_IPv6.ucBytes, sizeof( IPv6_Address_t ) ); + xIsIPv6Loopback_ExpectAndReturn( &( xNonGlobalIPAddress_IPv6 ), pdFALSE ); + /* Query for e0. */ pxEndPoint = FreeRTOS_MatchingEndpoint( &xNetworkInterface, ( const uint8_t * ) ( pxTCPPacket ) ); TEST_ASSERT_EQUAL( &xEndPoint[ 0 ], pxEndPoint );