mirror of https://github.com/getdnsapi/getdns.git
Merge pull request #190 from saradickinson/bugfix/transport_test
Split the recursive transport test 6 into 3 and add a shorter timeout…
This commit is contained in:
commit
66b7bb2ca1
|
@ -131,7 +131,7 @@
|
|||
struct getdns_dict *extensions = getdns_dict_create();
|
||||
uint32_t tc;
|
||||
uint32_t transport;
|
||||
uint32_t mode;
|
||||
uint32_t type;
|
||||
|
||||
/* Note that stricly this test just establishes that the requested transport
|
||||
and the reported transport are consistent, it does not guarentee which
|
||||
|
@ -158,9 +158,9 @@
|
|||
ASSERT_RC(getdns_dict_get_int(response, "/call_reporting/0/transport", &transport),
|
||||
GETDNS_RETURN_GOOD, "Failed to extract \"transport\"");
|
||||
ASSERT_RC(transport, GETDNS_TRANSPORT_UDP, "Query did not go over UDP");
|
||||
ASSERT_RC(getdns_dict_get_int(response, "/call_reporting/0/resolution_type", &mode),
|
||||
ASSERT_RC(getdns_dict_get_int(response, "/call_reporting/0/resolution_type", &type),
|
||||
GETDNS_RETURN_GOOD, "Failed to extract \"resolution_type\"");
|
||||
ASSERT_RC(mode, GETDNS_RESOLUTION_STUB, "Query did not use stub mode");
|
||||
ASSERT_RC(type, GETDNS_RESOLUTION_STUB, "Query did not use stub mode");
|
||||
ASSERT_RC(getdns_dict_get_int(response, "/replies_tree/0/header/tc", &tc),
|
||||
GETDNS_RETURN_GOOD, "Failed to extract \"tc\"");
|
||||
ASSERT_RC(tc, 1, "Packet not trucated as expected");
|
||||
|
@ -203,17 +203,11 @@
|
|||
* Request answer larger then 512 bytes but set UDP payload to that
|
||||
* Call getdns_context_set_dns_transport() with value = GETDNS_TRANSPORT_UDP_ONLY
|
||||
* expect: No response returned
|
||||
* Call getdns_context_set_dns_transport() with value = GETDNS_TRANSPORT_TCP_ONLY
|
||||
* expect: Response returned
|
||||
* Call getdns_context_set_dns_transport() with value = GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP
|
||||
* expect: Response returned
|
||||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
struct getdns_dict *response = NULL;
|
||||
struct getdns_dict *extensions = getdns_dict_create();
|
||||
uint32_t status;
|
||||
uint32_t mode;
|
||||
uint32_t tc;
|
||||
|
||||
/* Recursive mode does not report the transport used and does not answer
|
||||
if the response is trucated. Also, transport can't be changed on a ub ctx.*/
|
||||
|
@ -230,7 +224,8 @@
|
|||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_dns_transport()");
|
||||
ASSERT_RC(getdns_context_set_edns_maximum_udp_payload_size(context, 512),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_maximum_udp_payload_size()");
|
||||
|
||||
ASSERT_RC(getdns_context_set_timeout(context, 2000),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_maximum_udp_payload_size()");
|
||||
ASSERT_RC(getdns_general_sync(context, "getdnsapi.net", 48, extensions, &response),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_general_sync()");
|
||||
|
||||
|
@ -239,9 +234,32 @@
|
|||
|
||||
/* TODO: INVESTIGATE THIS AS IT SHOULDN'T BE A TIMEOUT...*/
|
||||
ASSERT_RC(status, GETDNS_RESPSTATUS_ALL_TIMEOUT, "Status not as expected");
|
||||
}
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST (getdns_context_set_dns_transport_recursing_7)
|
||||
{
|
||||
/*
|
||||
* Call getdns_context_set_dns_transport() with value = GETDNS_TRANSPORT_TCP_ONLY
|
||||
* expect: Response returned
|
||||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
struct getdns_dict *response = NULL;
|
||||
struct getdns_dict *extensions = getdns_dict_create();
|
||||
uint32_t status;
|
||||
uint32_t type;
|
||||
uint32_t tc;
|
||||
|
||||
CONTEXT_CREATE(TRUE);
|
||||
/* Need to explicit check as we may be compiled stub-only*/
|
||||
getdns_resolution_t resolution_type;
|
||||
ASSERT_RC(getdns_context_get_resolution_type(context, &resolution_type),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_resolution_type()");
|
||||
if (resolution_type == GETDNS_RESOLUTION_RECURSING) {
|
||||
|
||||
/* Re-do over TCP */
|
||||
ASSERT_RC(getdns_dict_set_int(extensions,"return_call_reporting", GETDNS_EXTENSION_TRUE),
|
||||
|
@ -253,15 +271,40 @@
|
|||
ASSERT_RC(getdns_general_sync(context, "getdnsapi.net", 48, extensions, &response),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_general_sync()");
|
||||
|
||||
ASSERT_RC(getdns_dict_get_int(response, "/call_reporting/0/resolution_type", &mode),
|
||||
ASSERT_RC(getdns_dict_get_int(response, "status", &status),
|
||||
GETDNS_RETURN_GOOD, "Failed to extract \"status\"");
|
||||
ASSERT_RC(status, GETDNS_RESPSTATUS_GOOD, "Status not as expected");
|
||||
ASSERT_RC(getdns_dict_get_int(response, "/call_reporting/0/resolution_type", &type),
|
||||
GETDNS_RETURN_GOOD, "Failed to extract \"resolution_type\"");
|
||||
ASSERT_RC(mode, GETDNS_RESOLUTION_RECURSING, "Query did not use Recursive mode");
|
||||
ASSERT_RC(type, GETDNS_RESOLUTION_RECURSING, "Query did not use Recursive mode");
|
||||
ASSERT_RC(getdns_dict_get_int(response, "/replies_tree/0/header/tc", &tc),
|
||||
GETDNS_RETURN_GOOD, "Failed to extract \"tc\"");
|
||||
ASSERT_RC(tc, 0, "Packet trucated - not as expected");
|
||||
}
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST (getdns_context_set_dns_transport_recursing_8)
|
||||
{
|
||||
/*
|
||||
* Call getdns_context_set_dns_transport() with value = GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP
|
||||
* expect: Response returned
|
||||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
struct getdns_dict *response = NULL;
|
||||
struct getdns_dict *extensions = getdns_dict_create();
|
||||
uint32_t status;
|
||||
uint32_t tc;
|
||||
|
||||
CONTEXT_CREATE(TRUE);
|
||||
/* Need to explicit check as we may be compiled stub-only*/
|
||||
getdns_resolution_t resolution_type;
|
||||
ASSERT_RC(getdns_context_get_resolution_type(context, &resolution_type),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_resolution_type()");
|
||||
if (resolution_type == GETDNS_RESOLUTION_RECURSING) {
|
||||
|
||||
/* Now let it fall back to TCP */
|
||||
ASSERT_RC(getdns_context_set_dns_transport(context, GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP),
|
||||
|
@ -271,6 +314,10 @@
|
|||
ASSERT_RC(getdns_general_sync(context, "getdnsapi.net", 48, extensions, &response),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_general_sync()");
|
||||
|
||||
ASSERT_RC(getdns_dict_get_int(response, "status", &status),
|
||||
GETDNS_RETURN_GOOD, "Failed to extract \"status\"");
|
||||
ASSERT_RC(status, GETDNS_RESPSTATUS_GOOD, "Status not as expected");
|
||||
|
||||
ASSERT_RC(getdns_dict_get_int(response, "/replies_tree/0/header/tc", &tc),
|
||||
GETDNS_RETURN_GOOD, "Failed to extract \"tc\"");
|
||||
ASSERT_RC(tc, 0, "Packet trucated - not as expected");
|
||||
|
@ -282,6 +329,8 @@
|
|||
END_TEST
|
||||
|
||||
|
||||
|
||||
|
||||
Suite *
|
||||
getdns_context_set_dns_transport_suite (void)
|
||||
{
|
||||
|
@ -301,6 +350,8 @@
|
|||
/* TODO: Test which specific lists are supported */
|
||||
tcase_add_test(tc_pos, getdns_context_set_dns_transport_stub_5);
|
||||
tcase_add_test(tc_pos, getdns_context_set_dns_transport_recursing_6);
|
||||
tcase_add_test(tc_pos, getdns_context_set_dns_transport_recursing_7);
|
||||
tcase_add_test(tc_pos, getdns_context_set_dns_transport_recursing_8);
|
||||
/* TODO: TLS... */
|
||||
|
||||
suite_add_tcase(s, tc_pos);
|
||||
|
|
Loading…
Reference in New Issue