Skip to content

Commit 726d6a5

Browse files
committed
Repaired FreeRTOS_DNS_Parser_utest.c
1 parent 0db698c commit 726d6a5

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

test/unit-test/FreeRTOS_DNS_Parser/FreeRTOS_DNS_Parser_utest.c

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4025,3 +4025,68 @@ void test_prepareReplyDNSMessage_null_pointer( void )
40254025
uxIPHeaderSizePacket_IgnoreAndReturn( ipSIZE_OF_IPv4_HEADER );
40264026
catch_assert( prepareReplyDNSMessage( &pxNetworkBuffer, lNetLength ) );
40274027
}
4028+
4029+
void test_DNS_ParseDNSReply_mdns_request( void )
4030+
{
4031+
uint32_t ret;
4032+
uint8_t pucPacketBuffer[ 312 ];
4033+
size_t uxBufferLength = 250;
4034+
char dns[ 64 ];
4035+
struct freertos_addrinfo * pxAddressInfo;
4036+
uint16_t usPort = ipMDNS_PORT;
4037+
uint8_t * pucPayloadBuffer = pucPacketBuffer + sizeof( UDPPacket_t ); /* Skip 42 bytes. */
4038+
4039+
memset( dns, 'a', 64 );
4040+
memset( pucPacketBuffer, 0x00, sizeof pucPacketBuffer );
4041+
dns[ 63 ] = 0;
4042+
BaseType_t xExpected = pdFALSE;
4043+
size_t beg = sizeof( DNSMessage_t ); /* 8 x 2 = 16 bytes */
4044+
NetworkEndPoint_t xEndPoint = { 0 };
4045+
4046+
DNSMessage_t * dns_header;
4047+
4048+
NetworkBufferDescriptor_t xNetworkBuffer = { 0 };
4049+
4050+
xNetworkBuffer.pucEthernetBuffer = pucPacketBuffer;
4051+
xNetworkBuffer.pxEndPoint = &xEndPoint;
4052+
xEndPoint.ipv4_settings.ulIPAddress = 0xC0A8020B;
4053+
4054+
dns_header = ( DNSMessage_t * ) pucPayloadBuffer; /* pucPayloadBuffer without '&' */
4055+
4056+
dns_header->usQuestions = FreeRTOS_htons( 1 );
4057+
dns_header->usAnswers = FreeRTOS_htons( 2 );
4058+
dns_header->usFlags = 0; /* dnsEXPECTED_RX_FLAGS; */
4059+
4060+
/* Question-1: */
4061+
pucPayloadBuffer[ beg ] = 38; /* Length of name. */
4062+
beg++; /* Skip the length byte. */
4063+
strcpy( pucPayloadBuffer + beg, "FreeRTOSbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" );
4064+
beg += 38 + 1 + 4; /* Skip name, nul-byte, and Type/Class. */
4065+
4066+
/* xApplicationDNSQueryHook_Multi() must be called. */
4067+
hook_return = pdTRUE;
4068+
/* it hasn't been called yet. */
4069+
hook_called = pdFALSE;
4070+
4071+
usChar2u16_ExpectAnyArgsAndReturn( 0x0001 ); /* usType */
4072+
usChar2u16_ExpectAnyArgsAndReturn( 0x0001 ); /* usClass */
4073+
pxUDPPayloadBuffer_to_NetworkBuffer_ExpectAnyArgsAndReturn( &xNetworkBuffer );
4074+
uxIPHeaderSizePacket_IgnoreAndReturn( ipSIZE_OF_IPv4_HEADER );
4075+
4076+
pxDuplicateNetworkBufferWithDescriptor_ExpectAnyArgsAndReturn( &xNetworkBuffer );
4077+
4078+
usGenerateChecksum_ExpectAnyArgsAndReturn( 555 );
4079+
usGenerateProtocolChecksum_ExpectAnyArgsAndReturn( 444 );
4080+
4081+
vReturnEthernetFrame_Expect( &xNetworkBuffer, pdFALSE );
4082+
vReleaseNetworkBufferAndDescriptor_Expect( &xNetworkBuffer );
4083+
4084+
ret = DNS_ParseDNSReply( pucPayloadBuffer,
4085+
beg, /* uxBufferLength, */
4086+
&pxAddressInfo,
4087+
xExpected,
4088+
usPort );
4089+
4090+
TEST_ASSERT_EQUAL( pdFALSE, ret );
4091+
ASSERT_DNS_QUERY_HOOK_CALLED();
4092+
}

0 commit comments

Comments
 (0)