mirror of https://github.com/getdnsapi/getdns.git
Merge pull request #305 from hodarh/coverage
Improve code coverage in unit tests
This commit is contained in:
commit
9a48664b51
|
@ -55,9 +55,13 @@
|
|||
* GETDNS_RETURN_GOOD
|
||||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
getdns_append_name_t append_name;
|
||||
|
||||
CONTEXT_CREATE(TRUE);
|
||||
// TODO: Do something here to verify set_from_os = TRUE
|
||||
getdns_context_set_append_name(context, GETDNS_APPEND_NAME_TO_SINGLE_LABEL_FIRST);
|
||||
getdns_context_get_append_name(context, &append_name);
|
||||
ck_assert_msg(append_name == GETDNS_APPEND_NAME_TO_SINGLE_LABEL_FIRST, "suffix is not correct");
|
||||
CONTEXT_DESTROY;
|
||||
}
|
||||
END_TEST
|
||||
|
|
|
@ -111,6 +111,8 @@
|
|||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
getdns_namespace_t namespace_arr[2] = {GETDNS_NAMESPACE_DNS, GETDNS_NAMESPACE_LOCALNAMES};
|
||||
size_t count;
|
||||
getdns_namespace_t *namespaces;
|
||||
CONTEXT_CREATE(TRUE);
|
||||
|
||||
ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn),
|
||||
|
@ -118,8 +120,12 @@
|
|||
|
||||
expected_changed_item = GETDNS_CONTEXT_CODE_NAMESPACES;
|
||||
|
||||
ASSERT_RC(getdns_context_set_namespaces(context, 2,namespace_arr),
|
||||
ASSERT_RC(getdns_context_set_namespaces(context, 2, namespace_arr),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_namespaces()");
|
||||
ASSERT_RC(getdns_context_get_namespaces(context, &count, &namespaces),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_namespaces()");
|
||||
ck_assert_msg(count == 2 && namespaces[0] == 500 && namespaces[1] == 501, "namespaces are not correctly set");
|
||||
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
|
@ -207,6 +213,7 @@
|
|||
* expect: GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS
|
||||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
getdns_redirects_t redir;
|
||||
CONTEXT_CREATE(TRUE);
|
||||
|
||||
ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn),
|
||||
|
@ -215,6 +222,8 @@
|
|||
expected_changed_item = GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS;
|
||||
|
||||
(void) getdns_context_set_follow_redirects(context, GETDNS_REDIRECTS_DO_NOT_FOLLOW);
|
||||
(void) getdns_context_get_follow_redirects(context, &redir);
|
||||
ck_assert_msg(redir == GETDNS_REDIRECTS_DO_NOT_FOLLOW, "getdns_context_get_follow_redirects failed");
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
|
@ -301,6 +310,8 @@
|
|||
* expect: GETDNS_CONTEXT_CODE_EDNS_EXTENDED_RCODE
|
||||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
uint8_t extended_rcode;
|
||||
|
||||
CONTEXT_CREATE(TRUE);
|
||||
|
||||
ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn),
|
||||
|
@ -310,6 +321,9 @@
|
|||
|
||||
ASSERT_RC(getdns_context_set_edns_extended_rcode(context, 1),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_extended_rcode()");
|
||||
ASSERT_RC(getdns_context_get_edns_extended_rcode(context, &extended_rcode),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_edns_extended_rcode()");
|
||||
ck_assert_msg(extended_rcode == 1, "extended_rcode should be 1, got %d", (int)extended_rcode);
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
|
@ -325,6 +339,8 @@
|
|||
* expect: GETDNS_CONTEXT_CODE_EDNS_VERSION
|
||||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
uint8_t version;
|
||||
|
||||
CONTEXT_CREATE(TRUE);
|
||||
|
||||
ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn),
|
||||
|
@ -334,6 +350,9 @@
|
|||
|
||||
ASSERT_RC(getdns_context_set_edns_version(context, 1),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_version()");
|
||||
ASSERT_RC(getdns_context_get_edns_version(context, &version),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_edns_version()");
|
||||
ck_assert_msg(version == 1, "version should be 1, got %d", (int)version);
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
|
@ -373,6 +392,8 @@
|
|||
* expect: GETDNS_CONTEXT_CODE_EDNS_CLIENT_SUBNET_PRIVATE
|
||||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
uint8_t client_subnet_private;
|
||||
|
||||
CONTEXT_CREATE(TRUE);
|
||||
|
||||
ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn),
|
||||
|
@ -382,6 +403,9 @@
|
|||
|
||||
ASSERT_RC(getdns_context_set_edns_client_subnet_private(context, 1),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_client_subnet_private()");
|
||||
ASSERT_RC(getdns_context_get_edns_client_subnet_private(context, &client_subnet_private),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_edns_client_subnet_private()");
|
||||
ck_assert_msg(client_subnet_private == 1, "client_subnet_private should be 1, got %d", (int)client_subnet_private);
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
|
@ -397,6 +421,8 @@
|
|||
* expect: GETDNS_CONTEXT_CODE_TLS_QUERY_PADDING_BLOCKSIZE
|
||||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
uint16_t pad;
|
||||
|
||||
CONTEXT_CREATE(TRUE);
|
||||
|
||||
ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn),
|
||||
|
@ -406,6 +432,9 @@
|
|||
|
||||
ASSERT_RC(getdns_context_set_tls_query_padding_blocksize(context, 1400),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_tls_query_padding_blocksize()");
|
||||
ASSERT_RC(getdns_context_get_tls_query_padding_blocksize(context, &pad),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_tls_query_padding_blocksize()");
|
||||
ck_assert_msg(pad == 1400, "padding_blocksize should be 1400 but got %d", (int) pad);
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
|
@ -438,11 +467,12 @@
|
|||
START_TEST (getdns_context_set_context_update_callback_23)
|
||||
{
|
||||
/*
|
||||
* value is NULL
|
||||
* expect: GETDNS_RETURN_INVALID_PARAMETER
|
||||
* expect: GETDNS_RETURN_GOOD
|
||||
*/
|
||||
|
||||
struct getdns_context *context = NULL;
|
||||
uint8_t round_robin;
|
||||
|
||||
CONTEXT_CREATE(TRUE);
|
||||
|
||||
ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn),
|
||||
|
@ -451,7 +481,10 @@
|
|||
expected_changed_item = GETDNS_CONTEXT_CODE_ROUND_ROBIN_UPSTREAMS;
|
||||
|
||||
ASSERT_RC(getdns_context_set_round_robin_upstreams(context, 1),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_timeout()");
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_round_robin_upstream()");
|
||||
ASSERT_RC(getdns_context_get_round_robin_upstreams(context, &round_robin),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_round_robin_upstream()");
|
||||
ck_assert_msg( round_robin == 1, "round_robin should be 1, got %d", (int)round_robin);
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
{
|
||||
/*
|
||||
* context is NULL
|
||||
* expect: GETDNS_RETURN_BAD_CONTEXT
|
||||
* expect: GETDNS_RETURN_INVALID_PARAMETER
|
||||
*/
|
||||
|
||||
struct getdns_context *context = NULL;
|
||||
|
@ -48,6 +48,11 @@
|
|||
ASSERT_RC(getdns_context_set_dns_transport(context, value),
|
||||
GETDNS_RETURN_INVALID_PARAMETER, "Return code from getdns_context_set_dns_transport()");
|
||||
|
||||
ASSERT_RC(getdns_context_set_edns_maximum_udp_payload_size(context, 512),
|
||||
GETDNS_RETURN_INVALID_PARAMETER, "Return code from getdns_context_set_edns_maximum_udp_payload_size()");
|
||||
|
||||
ASSERT_RC(getdns_context_unset_edns_maximum_udp_payload_size(context),
|
||||
GETDNS_RETURN_INVALID_PARAMETER, "Return code from getdns_context_unset_edns_maximum_udp_payload_size()");
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
@ -55,6 +60,7 @@
|
|||
{
|
||||
/*
|
||||
* value is an undefined transport value
|
||||
* do_bit is not correct
|
||||
* expect: GETDNS_RETURN_CONTEXT_UPDATE_FAIL
|
||||
*/
|
||||
|
||||
|
@ -66,6 +72,9 @@
|
|||
ASSERT_RC(getdns_context_set_dns_transport(context, 233),
|
||||
GETDNS_RETURN_CONTEXT_UPDATE_FAIL, "Return code from getdns_context_set_dns_transport()");
|
||||
|
||||
ASSERT_RC(getdns_context_set_edns_do_bit(context, 5),
|
||||
GETDNS_RETURN_CONTEXT_UPDATE_FAIL, "Return code from getdns_context_set_edns_do_bit()");
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
}
|
||||
|
@ -132,6 +141,9 @@
|
|||
uint32_t tc;
|
||||
uint32_t transport;
|
||||
uint32_t type;
|
||||
uint16_t payload_size;
|
||||
uint8_t do_bit;
|
||||
getdns_transport_t trans;
|
||||
|
||||
/* Note that stricly this test just establishes that the requested transport
|
||||
and the reported transport are consistent, it does not guarentee which
|
||||
|
@ -147,10 +159,22 @@
|
|||
/* Request a response that should be truncated over UDP */
|
||||
ASSERT_RC(getdns_context_set_dns_transport(context, GETDNS_TRANSPORT_UDP_ONLY),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_dns_transport()");
|
||||
ASSERT_RC(getdns_context_get_dns_transport(context, &trans),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_dns_transport()");
|
||||
ck_assert_msg(trans == 541, "dns_transport should be 541(GETDNS_TRANSPORT_UDP_ONLY) but got %d", (int)trans);
|
||||
|
||||
|
||||
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_get_edns_maximum_udp_payload_size(context, &payload_size),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_edns_maximum_udp_payload_size()");
|
||||
ck_assert_msg(payload_size == 512, "payload_size should be 512, got %d", (int)payload_size);
|
||||
|
||||
ASSERT_RC(getdns_context_set_edns_do_bit(context, 1),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_do_bit()");
|
||||
ASSERT_RC(getdns_context_get_edns_do_bit(context, &do_bit),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_edns_do_bit()");
|
||||
ck_assert_msg(do_bit == 1, "do_bit should be 1, got %d", (int)do_bit);
|
||||
|
||||
ASSERT_RC(getdns_general_sync(context, "large.getdnsapi.net", GETDNS_RRTYPE_TXT, extensions, &response),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_general_sync()");
|
||||
|
@ -192,6 +216,9 @@
|
|||
GETDNS_RETURN_GOOD, "Failed to extract \"tc\"");
|
||||
ASSERT_RC(tc, 0, "Packet trucated - not as expected");
|
||||
|
||||
ASSERT_RC(getdns_context_unset_edns_maximum_udp_payload_size(context),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_unset_edns_maximum_udp_payload_size()");
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
}
|
||||
|
@ -261,7 +288,9 @@
|
|||
* suspect them to be a bit more reliable.
|
||||
*/
|
||||
struct getdns_list *root_servers = getdns_list_create();
|
||||
struct getdns_list *root_servers2 = getdns_list_create();
|
||||
struct getdns_bindata nlnetlabs_root = { 4, (void *)"\xB9\x31\x8D\x25" };
|
||||
struct getdns_bindata *answer = NULL;
|
||||
|
||||
uint32_t status;
|
||||
uint32_t type;
|
||||
|
@ -277,10 +306,17 @@
|
|||
/* Re-do over TCP */
|
||||
ASSERT_RC(getdns_dict_set_int(extensions,"return_call_reporting", GETDNS_EXTENSION_TRUE),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_dict_set_int()");
|
||||
ASSERT_RC(getdns_list_set_bindata(root_servers,0,&nlnetlabs_root),
|
||||
ASSERT_RC(getdns_list_set_bindata(root_servers, 0, &nlnetlabs_root),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_list_set_bindata()");
|
||||
|
||||
ASSERT_RC(getdns_context_set_dns_root_servers(context, root_servers),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_dns_root_servers()");
|
||||
ASSERT_RC(getdns_context_get_dns_root_servers(context, &root_servers2),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_dns_root_servers()");
|
||||
ASSERT_RC(getdns_list_get_bindata(root_servers2, 0, &answer),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_list_get_bindata()");
|
||||
ck_assert_msg(strncmp((char *)answer->data, (char *)nlnetlabs_root.data, 4) == 0,
|
||||
"Expected answer data to be 185.49.141.37");
|
||||
ASSERT_RC(getdns_context_set_dns_transport(context, GETDNS_TRANSPORT_TCP_ONLY),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_dns_transport()");
|
||||
ASSERT_RC(getdns_context_set_edns_maximum_udp_payload_size(context, 512),
|
||||
|
@ -348,6 +384,60 @@
|
|||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST (getdns_context_set_dns_transport_recursing_9)
|
||||
{
|
||||
/*
|
||||
* Check TLS
|
||||
*/
|
||||
struct getdns_context *context = NULL;
|
||||
getdns_resolution_t resolution_type;
|
||||
getdns_transport_list_t transport_list[1];
|
||||
getdns_transport_list_t *transport_list2;
|
||||
size_t count;
|
||||
getdns_tls_authentication_t auth;
|
||||
uint16_t backoff;
|
||||
uint16_t retries;
|
||||
|
||||
transport_list[0] = GETDNS_TRANSPORT_TLS;
|
||||
|
||||
CONTEXT_CREATE(TRUE);
|
||||
|
||||
ASSERT_RC(getdns_context_set_resolution_type(context, GETDNS_RESOLUTION_STUB),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_resolution_type()");
|
||||
ASSERT_RC(getdns_context_get_resolution_type(context, &resolution_type),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_resolution_type()");
|
||||
ck_assert_msg(resolution_type == GETDNS_RESOLUTION_STUB, "resolution_type should be stub (520), got %d", (int)resolution_type);
|
||||
|
||||
ASSERT_RC(getdns_context_set_dns_transport_list(context, 1, transport_list),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_dns_transport_list()");
|
||||
ASSERT_RC(getdns_context_get_dns_transport_list(context, &count, &transport_list2),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_dns_transport_list()");
|
||||
ck_assert_msg(transport_list2[0] == GETDNS_TRANSPORT_TLS, "transport_list should be 1202 but got %d", (int) transport_list2[0]);
|
||||
|
||||
ASSERT_RC(getdns_context_set_tls_authentication(context, GETDNS_AUTHENTICATION_REQUIRED),
|
||||
GETDNS_RETURN_GOOD, "Return cond from getdns_context_set_tls_authentication()");
|
||||
ASSERT_RC(getdns_context_get_tls_authentication(context, &auth),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_tls_authentication()");
|
||||
ck_assert_msg(auth == 1301, "tls_authentication should be 1301, but got %d", (int) auth);
|
||||
|
||||
ASSERT_RC(getdns_context_set_tls_backoff_time(context, 1000),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_tls_backoff_time()");
|
||||
ASSERT_RC(getdns_context_get_tls_backoff_time(context, &backoff),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_tls_backoff_time()");
|
||||
ck_assert_msg(backoff == 1000, "backoff should be 1000, but got %d", (int) backoff);
|
||||
|
||||
ASSERT_RC(getdns_context_set_tls_connection_retries(context, 5),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_tls_connection_retries()");
|
||||
ASSERT_RC(getdns_context_get_tls_connection_retries(context, &retries),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_tls_connection_retries()");
|
||||
ck_assert_msg(retries == 5, "retries should be 5 but got %d", (int) retries);
|
||||
|
||||
/*TODO: should extend the test */
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -372,7 +462,8 @@
|
|||
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... */
|
||||
/* TLS */
|
||||
tcase_add_test(tc_pos, getdns_context_set_dns_transport_recursing_9);
|
||||
|
||||
suite_add_tcase(s, tc_pos);
|
||||
|
||||
|
|
|
@ -94,15 +94,21 @@ END_TEST
|
|||
START_TEST (getdns_context_set_idle_timeout_2)
|
||||
{
|
||||
/*
|
||||
* timeout is 0
|
||||
* timeout is 0 and then 100
|
||||
* expect: GETDNS_RETURN_GOOD
|
||||
*/
|
||||
|
||||
struct getdns_context *context = NULL;
|
||||
uint64_t time;
|
||||
CONTEXT_CREATE(TRUE);
|
||||
|
||||
ASSERT_RC(getdns_context_set_idle_timeout(context, 0),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_timeout()");
|
||||
ASSERT_RC(getdns_context_set_idle_timeout(context, 100),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_timeout()");
|
||||
ASSERT_RC(getdns_context_get_idle_timeout(context, &time),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_set_timeout()");
|
||||
ck_assert_msg(time == 100, "idle_timeout should be 100, got %d", (int)time);
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
|
@ -298,6 +304,7 @@ START_TEST (getdns_context_set_timeout_3)
|
|||
t_data.running = 0;
|
||||
t_data.num_callbacks = 0;
|
||||
t_data.num_timeouts = 0;
|
||||
uint64_t timeout;
|
||||
t_data.port = get_test_port();
|
||||
|
||||
pthread_create(&thread, NULL, run_server, (void *)&t_data);
|
||||
|
@ -341,6 +348,10 @@ START_TEST (getdns_context_set_timeout_3)
|
|||
|
||||
RUN_EVENT_LOOP;
|
||||
|
||||
ASSERT_RC(getdns_context_get_timeout(context, &timeout),
|
||||
GETDNS_RETURN_GOOD, "Return code from getdns_context_get_timeout()");
|
||||
ck_assert_msg(timeout == 500, "timeout should be 500, got %d", (int)timeout);
|
||||
|
||||
CONTEXT_DESTROY;
|
||||
|
||||
t_data.running = 0;
|
||||
|
|
|
@ -88,6 +88,68 @@ static const char pretty_expected[] = "{\n"
|
|||
" ]\n"
|
||||
"}";
|
||||
|
||||
static const char pretty_expected2[] = "{\n"
|
||||
" \"bindata\":\"bindata\",\n"
|
||||
" \"dict\":\n"
|
||||
" {\n"
|
||||
" \"bindata\":\"bindata\",\n"
|
||||
" \"dict\":\n"
|
||||
" {\n"
|
||||
" \"bindata\":\"bindata\",\n"
|
||||
" \"dict\":\n"
|
||||
" {\n"
|
||||
" \"int\": 4\n"
|
||||
" },\n"
|
||||
" \"int\": 3,\n"
|
||||
" \"list\":\n"
|
||||
" [\n"
|
||||
" 5\n"
|
||||
" ]\n"
|
||||
" },\n"
|
||||
" \"int\": 2,\n"
|
||||
" \"list\":\n"
|
||||
" [\n"
|
||||
" 6,\n"
|
||||
" \"bindata\",\n"
|
||||
" {\n"
|
||||
" \"bindata\":\"bindata\"\n"
|
||||
" },\n"
|
||||
" [\n"
|
||||
" \"bindata\"\n"
|
||||
" ]\n"
|
||||
" ]\n"
|
||||
" },\n"
|
||||
" \"int\": 1,\n"
|
||||
" \"list\":\n"
|
||||
" [\n"
|
||||
" 7,\n"
|
||||
" \"bindata\",\n"
|
||||
" {\n"
|
||||
" \"bindata\":\"bindata\",\n"
|
||||
" \"dict\":\n"
|
||||
" {\n"
|
||||
" \"int\": 9\n"
|
||||
" },\n"
|
||||
" \"int\": 8,\n"
|
||||
" \"list\":\n"
|
||||
" [\n"
|
||||
" 10\n"
|
||||
" ]\n"
|
||||
" },\n"
|
||||
" [\n"
|
||||
" 11,\n"
|
||||
" \"bindata\",\n"
|
||||
" {\n"
|
||||
" \"bindata\":\"bindata\"\n"
|
||||
" },\n"
|
||||
" [\n"
|
||||
" \"bindata\"\n"
|
||||
" ]\n"
|
||||
" ]\n"
|
||||
" ]\n"
|
||||
"}";
|
||||
|
||||
|
||||
/*
|
||||
**************************************************************************
|
||||
* *
|
||||
|
@ -267,6 +329,11 @@ static const char pretty_expected[] = "{\n"
|
|||
ck_assert_msg(strcmp(pretty_expected, pretty) == 0,
|
||||
"Expected:\n%s\ngot:\n%s\n", pretty_expected, pretty);
|
||||
|
||||
pretty = getdns_print_json_dict(dict1, 1);
|
||||
ck_assert_msg(pretty != NULL, "NULL returned by getdns_print_json_dict()");
|
||||
ck_assert_msg(strcmp(pretty_expected2, pretty) == 0,
|
||||
"Expected:\n%s\ngot:\n%s\n", pretty_expected2, pretty);
|
||||
|
||||
/*
|
||||
* Destroy all of the sub-dicts and sub-lists
|
||||
*/
|
||||
|
|
|
@ -27,6 +27,14 @@ void print_list(getdns_list *rr_list)
|
|||
free(str);
|
||||
}
|
||||
|
||||
void print_json_list(getdns_list *rr_list, int pretty)
|
||||
{
|
||||
char *str = getdns_print_json_list(rr_list, pretty);
|
||||
printf("%s\n", str);
|
||||
free(str);
|
||||
}
|
||||
|
||||
|
||||
void print_wire(uint8_t *wire, size_t wire_len)
|
||||
{
|
||||
size_t pos, i;
|
||||
|
@ -254,6 +262,7 @@ int main(int argc, char const * const argv[])
|
|||
fclose(in);
|
||||
|
||||
print_list(rr_list);
|
||||
print_json_list(rr_list, 1);
|
||||
|
||||
|
||||
/* Fill the wire_buf with wireformat RR's in rr_list
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -918,9 +918,23 @@
|
|||
"rdata":
|
||||
{
|
||||
"certificate_association_data": <bindata of 0x274c6f96c9885c8050e8a05ad1c3162c...>,
|
||||
"certificate_usage": 3,
|
||||
"certificate_usage": 0,
|
||||
"matching_type": 1,
|
||||
"rdata_raw": <bindata of 0x030101274c6f96c9885c8050e8a05ad1...>,
|
||||
"rdata_raw": <bindata of 0x000001274c6f96c9885c8050e8a05ad1...>,
|
||||
"selector": 0
|
||||
},
|
||||
"ttl": 30,
|
||||
"type": GETDNS_RRTYPE_TLSA
|
||||
},
|
||||
{
|
||||
"class": GETDNS_RRCLASS_IN,
|
||||
"name": <bindata for _443._tcp.ww.net-dns.org.>,
|
||||
"rdata":
|
||||
{
|
||||
"certificate_association_data": <bindata of 0x92003ba34942dc74152e2f2c408d29ec...>,
|
||||
"certificate_usage": 1,
|
||||
"matching_type": 2,
|
||||
"rdata_raw": <bindata of 0x01010292003ba34942dc74152e2f2c40...>,
|
||||
"selector": 1
|
||||
},
|
||||
"ttl": 30,
|
||||
|
@ -1008,7 +1022,7 @@
|
|||
}
|
||||
]
|
||||
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 0
|
||||
;; flags: ; QUERY: 0, ANSWER: 77, AUTHORITY: 0, ADDITIONAL: 0
|
||||
;; flags: ; QUERY: 0, ANSWER: 78, AUTHORITY: 0, ADDITIONAL: 0
|
||||
;; QUESTION SECTION:
|
||||
|
||||
;; ANSWER SECTION:
|
||||
|
@ -1082,7 +1096,8 @@ spf.net-dns.org. 30 IN SPF "v=spf1 +mx a:colo.nlnetlabs.nl/28 -all"
|
|||
srv.net-dns.org. 30 IN SRV 0 5 80 www.net-dns.org.
|
||||
sshfp.net-dns.org. 30 IN SSHFP 1 1 450C7D19D5DA9A3A5B7C19992D1FBDE15D8DAD44
|
||||
talink.net-dns.org. 30 IN TALINK h0.net-dns.org. h2.net-dns.org.
|
||||
_443._tcp.net-dns.org. 30 IN TLSA 3 1 1 274C6F96C9885C8050E8A05AD1C3162C1D51752C35B6196474E3F05AD31CD923
|
||||
_443._tcp.net-dns.org. 30 IN TLSA 0 0 1 274C6F96C9885C8050E8A05AD1C3162C1D51752C35B6196474E3F05AD31CD923
|
||||
_443._tcp.ww.net-dns.org. 30 IN TLSA 1 1 2 92003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA346BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE51FFD48C43326CBC
|
||||
_443._tcp.www.net-dns.org. 30 IN TLSA 3 1 1 274C6F96C9885C8050E8A05AD1C3162C1D51752C35B6196474E3F05AD31CD923
|
||||
dynup.net-dns.org. 30 IN TXT "fooFoo2" "Bla ; Foo"
|
||||
default._domainkey.net-dns.org. 30 IN TXT "v=DKIM1; r=postmaster; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVG/lfF5GtPlMOcSGnfbp5u+EWM+OOg/f6QmbDXOW/zKQkRIRIZ+BtfSYchP8MeFPfMvUZtdRPzCWg1G7OdD7qaTUqc6kV84on6/8kPVMgdDLyLl2DeU/Lts9hfVHVDSpWuChwDAFXnbnW8jpp54zuof9OIbWSWIxZqLL8flgOsQIDAQAB"
|
||||
|
@ -1093,5 +1108,5 @@ x25.net-dns.org. 30 IN X25 "1234567"
|
|||
;; AUTHORITY SECTION:
|
||||
|
||||
;; ADDITIONAL SECTION:
|
||||
;; MSG SIZE rcvd: 6561
|
||||
;; MSG SIZE rcvd: 6664
|
||||
|
||||
|
|
|
@ -94,7 +94,8 @@ sshfp SSHFP 1 1 450c7d19d5da9a3a5b7c19992d1fbde15d8dad44
|
|||
;ta TA
|
||||
talink TALINK h0 h2
|
||||
;tkey TKEY
|
||||
_443._tcp TLSA 3 1 1 274c6f96c9885c8050e8a05ad1c3162c1d51752c35b6196474e3f05ad31cd923
|
||||
_443._tcp TLSA 0 0 1 274c6f96c9885c8050e8a05ad1c3162c1d51752c35b6196474e3f05ad31cd923
|
||||
_443._tcp.ww TLSA 1 1 2 92003ba34942dc74152e2f2c408d29eca5a520e7f2e06bb944f4dca346baf63c1b177615d466f6c4b71c216a50292bd58c9ebdd2f74e38fe51ffd48c43326cbc
|
||||
_443._tcp.www TLSA 3 1 1 274c6f96c9885c8050e8a05ad1c3162c1d51752c35b6196474e3f05ad31cd923
|
||||
;tsig TSIG
|
||||
dynup TXT "fooFoo2" "Bla \; Foo"
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
BaseName: 290-transports
|
||||
Version: 1.0
|
||||
Description: Run the test_transports
|
||||
CreationDate: di 9 mei 2017 14:16:58 CEST
|
||||
Maintainer: Hoda Rohani
|
||||
Category:
|
||||
Component:
|
||||
CmdDepends:
|
||||
Depends: 110-link.tpkg
|
||||
Help:
|
||||
Pre:
|
||||
Post:
|
||||
Test: 290-transports.test
|
||||
AuxFiles:
|
||||
Passed:
|
||||
Failure:
|
|
@ -0,0 +1,200 @@
|
|||
# #-- 290-transports.test --#
|
||||
# source the master var file when it's there
|
||||
[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master
|
||||
# use .tpkg.var.test for in test variable passing
|
||||
[ -f .tpkg.var.test ] && source .tpkg.var.test
|
||||
|
||||
SERVER_IP="8.8.8.8"
|
||||
SERVER_IPv6="2001:4860:4860::8888"
|
||||
|
||||
SERVER_IP_TSIG="185.49.141.37^"
|
||||
SERVER_IPv6_TSIG="2a04:b900:0:100::37^"
|
||||
TSIG_ALG="hmac-md5.sig-alg.reg.int"
|
||||
TSIG_NAME="hmac-md5.tsigs.getdnsapi.net"
|
||||
TSIG_SECRET="16G69OTeXW6xSQ=="
|
||||
|
||||
TLS_SERVER_IP="185.49.141.38~getdnsapi.net"
|
||||
TLS_SERVER_IPv6="2a04:b900:0:100::38~getdnsapi.net"
|
||||
TLS_SERVER_KEY="foxZRnIh9gZpWnl+zEiKa0EJ2rdCGroMWm02gaxSc9S="
|
||||
TLS_SERVER_WRONG_KEY="foxZRnIh9gZpWnl+zEiKa0EJ2rdCGroMWm02gaxSc1S="
|
||||
|
||||
TLS_SERVER_SS_IP="184.105.193.78~tls-dns-u.odvr.dns-oarc.net" #Self signed cert
|
||||
TLS_SERVER_SS_KEY="pOXrpUt9kgPgbWxBFFcBTbRH2heo2wHwXp1fd4AEVXI="
|
||||
|
||||
GOOD_RESULT_SYNC="Status was: At least one response was returned"
|
||||
GOOD_RESULT_ASYNC="successful"
|
||||
BAD_RESULT_SYNC="1 'Generic error'"
|
||||
BAD_RESULT_ASYNC="callback_type of 703"
|
||||
BAD_RESULT_TRANSPORT="None of the configured upstreams could be used to send queries on the specified transports"
|
||||
BAD_RESULT_NO_NAME="GETDNS_RESPSTATUS_NO_NAME"
|
||||
NUM_ARGS=3
|
||||
GOOD_COUNT=0
|
||||
FAIL_COUNT=0
|
||||
|
||||
|
||||
check_auth () {
|
||||
local my_auth_ok=0;
|
||||
auth_result=`echo $1 | sed 's/.*tls_auth_status\": <bindata of "//' | sed 's/\">.*//'`
|
||||
if [[ $2 == "-" ]] ; then
|
||||
my_auth_ok=1;
|
||||
fi
|
||||
if [[ $2 == "N" ]] && [[ $auth_result == "None" ]]; then
|
||||
my_auth_ok=1;
|
||||
fi
|
||||
if [[ $2 == "F" ]] && [[ $auth_result == "Failed" ]]; then
|
||||
my_auth_ok=1;
|
||||
fi
|
||||
if [[ $2 == "S" ]] && [[ $auth_result == "Success" ]]; then
|
||||
my_auth_ok=1;
|
||||
fi
|
||||
echo $my_auth_ok;
|
||||
}
|
||||
|
||||
check_trans () {
|
||||
local my_trans_ok=0;
|
||||
trans_result=`echo $1 | sed "s/.*\"transport\": GETDNS_TRANSPORT_//" | sed 's/ }.*//' | sed 's/,.*//'`
|
||||
if [[ $2 == "U" ]] && [[ $trans_result == "UDP" ]]; then
|
||||
my_trans_ok=1;
|
||||
fi
|
||||
if [[ $2 == "T" ]] && [[ $trans_result == "TCP" ]]; then
|
||||
my_trans_ok=1;
|
||||
fi
|
||||
if [[ $2 == "L" ]] && [[ $trans_result == "TLS" ]]; then
|
||||
my_trans_ok=1;
|
||||
fi
|
||||
echo $my_trans_ok;
|
||||
}
|
||||
|
||||
check_good () {
|
||||
auth_ok=0;
|
||||
result_ok=0;
|
||||
trans_ok=0;
|
||||
result=`echo $1 | sed 's/ All done.'// | sed 's/.*Response code was: GOOD. '//`
|
||||
async_success=`echo $result | grep -c "$GOOD_RESULT_ASYNC"`
|
||||
if [[ $result =~ $GOOD_RESULT_SYNC ]] || [[ $async_success =~ 1 ]]; then
|
||||
result_ok=1;
|
||||
fi
|
||||
if [[ $result_ok == 1 ]] ; then
|
||||
trans_ok=$(check_trans "$1" "$2")
|
||||
auth_ok=$(check_auth "$1" "$3")
|
||||
fi
|
||||
if [[ $result_ok == 1 ]] && [[ $auth_ok == 1 ]] && [[ $trans_ok == 1 ]]; then
|
||||
(( GOOD_COUNT++ ))
|
||||
echo -n "PASS: "
|
||||
else
|
||||
(( FAIL_COUNT++ ))
|
||||
echo "FAIL (RESULT): Result: $result Auth: $auth_ok Trans: $trans_ok"
|
||||
echo -n "FAIL: "
|
||||
fi
|
||||
}
|
||||
|
||||
check_bad () {
|
||||
result=`echo $1 | grep "An error occurred:" | tail -1 | sed 's/ All done.'//`
|
||||
error=` echo $result | sed 's/An error occurred: //'`
|
||||
|
||||
if [[ -z $result ]]; then
|
||||
result=`echo $1 | grep "GETDNS_RESPSTATUS_NO_NAME" `
|
||||
error=` echo $result | sed 's/"status": //'`
|
||||
fi
|
||||
|
||||
if [[ ! -z $result ]]; then
|
||||
if [[ $error =~ $BAD_RESULT_SYNC ]] || [[ $error =~ $BAD_RESULT_ASYNC ]] || [[ $error =~ $BAD_RESULT_TRANSPORT ]] || [[ $error =~ $BAD_RESULT_NO_NAME ]]; then
|
||||
(( GOOD_COUNT++ ))
|
||||
echo -n "PASS:"
|
||||
else
|
||||
(( FAIL_COUNT++ ))
|
||||
echo "FAIL (RESULT): " $error
|
||||
echo -n "FAIL: "
|
||||
fi
|
||||
else
|
||||
(( FAIL_COUNT++ ))
|
||||
echo "FAIL (RESULT): " $1
|
||||
echo -n "FAIL: "
|
||||
fi
|
||||
}
|
||||
# disable IPv6, travis cannot handle it?
|
||||
for (( ii = 0; ii < 1; ii++)); do
|
||||
if [[ ii -eq 1 ]]; then
|
||||
SERVER_IP=$SERVER_IPv6
|
||||
TLS_SERVER_IP=$TLS_SERVER_IPv6
|
||||
SERVER_IP_TSIG=$SERVER_IPv6_TSIG
|
||||
echo "Using IPv6"
|
||||
fi
|
||||
TLS_SERVER_IP_NO_NAME=`echo ${TLS_SERVER_IP%~*}`
|
||||
TLS_SERVER_SS_IP_NO_NAME=`echo ${TLS_SERVER_SS_IP%~*}`
|
||||
TLS_SERVER_IP_WRONG_NAME=`echo ${TLS_SERVER_IP::${#TLS_SERVER_IP}-1}`
|
||||
SERVER_IP_TSIG_WRONG_NAME=`echo ${SERVER_IP_TSIG}${TSIG_ALG}":"${TSIG_NAME::${#TSIG_NAME}-1}":"${TSIG_SECRET}`
|
||||
SERVER_IP_TSIG_WRONG_SECRET=`echo ${SERVER_IP_TSIG}${TSIG_ALG}":"${TSIG_NAME}":"${TSIG_SECRET::${#TSIG_SECRET}-1}`
|
||||
|
||||
NUM_GOOD_QUERIES=10
|
||||
GOOD_QUERIES=(
|
||||
"-s -A getdnsapi.net -l U @${SERVER_IP} +edns_cookies" "U" "-"
|
||||
"-s -A getdnsapi.net -l T @${SERVER_IP}" "T" "-"
|
||||
"-s -A getdnsapi.net -l U @${SERVER_IP_TSIG}${TSIG_ALG}:${TSIG_NAME}:${TSIG_SECRET}" "U" "-"
|
||||
"-s -A getdnsapi.net -l U @${SERVER_IP_TSIG}${TSIG_NAME}:${TSIG_SECRET}" "U" "-"
|
||||
"-s -A getdnsapi.net -l L @${TLS_SERVER_IP_NO_NAME}" "L" "N"
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP}" "L" "S"
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_NO_NAME} -K pin-sha256=\"${TLS_SERVER_KEY}\"" "L" "S"
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP} -K pin-sha256=\"${TLS_SERVER_KEY}\"" "L" "S"
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_SS_IP_NO_NAME} -K pin-sha256=\"${TLS_SERVER_SS_KEY}\"" "L" "S"
|
||||
"-s -G DNSKEY getdnsapi.net -l U @${SERVER_IP} -b 512 -D" "U" "-")
|
||||
|
||||
NUM_GOOD_FB_QUERIES=6
|
||||
GOOD_FALLBACK_QUERIES=(
|
||||
"-s -A getdnsapi.net -l LU @${SERVER_IP}" "U" "-"
|
||||
"-s -A getdnsapi.net -l LT @${SERVER_IP}" "T" "-"
|
||||
"-s -A getdnsapi.net -l LT @${TLS_SERVER_IP_NO_NAME}" "L" "N"
|
||||
"-s -A getdnsapi.net -l LT -m @${TLS_SERVER_IP_NO_NAME}" "L" "N"
|
||||
"-s -A getdnsapi.net -l L @${SERVER_IP} @${TLS_SERVER_IP_NO_NAME}" "L" "-"
|
||||
"-s -G DNSKEY getdnsapi.net -l UT @${SERVER_IP} -b 512 -D" "T" "-")
|
||||
|
||||
NOT_AVAILABLE_QUERIES=(
|
||||
"-s -A getdnsapi.net -l L @${SERVER_IP}"
|
||||
"-s -A getdnsapi.net -l U @${SERVER_IP_TSIG_WRONG_NAME}"
|
||||
"-s -A getdnsapi.net -l U @${SERVER_IP_TSIG_WRONG_SECRET}"
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_WRONG_NAME}"
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_NO_NAME}"
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_NO_NAME} -K pin-sha256=\"${TLS_SERVER_WRONG_KEY}\""
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP} -K pin-sha256=\"${TLS_SERVER_WRONG_KEY}\""
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_WRONG_NAME} -K pin-sha256=\"${TLS_SERVER_KEY}\""
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_WRONG_NAME} -K pin-sha256=\"${TLS_SERVER_WRONG_KEY}\""
|
||||
"-s -A getdnsapi.net -l L -m @${TLS_SERVER_SS_IP} -K pin-sha256=\"${TLS_SERVER_SS_KEY}\"")
|
||||
|
||||
|
||||
echo "Starting transport test"
|
||||
echo
|
||||
for (( i = 0; i < 2; i+=1 )); do
|
||||
if [[ i -eq 0 ]]; then
|
||||
echo "**SYNC Mode**"
|
||||
else
|
||||
echo
|
||||
echo "**ASYNC Mode**"
|
||||
SYNC_MODE=" -a "
|
||||
fi
|
||||
echo "*Success cases:"
|
||||
for (( j = 0; j < $NUM_GOOD_QUERIES; j+=1 )); do
|
||||
check_good "`"${GETDNS_QUERY}" +return_call_reporting $SYNC_MODE ${GOOD_QUERIES[$j*$NUM_ARGS]} `" ${GOOD_QUERIES[$((j*NUM_ARGS))+1]} ${GOOD_QUERIES[$((j*NUM_ARGS))+2]}
|
||||
echo "getdns_query $SYNC_MODE ${GOOD_QUERIES[$j*$NUM_ARGS]}"
|
||||
(( COUNT++ ))
|
||||
done
|
||||
|
||||
echo "*Success fallback cases:"
|
||||
for (( j = 0; j < $NUM_GOOD_FB_QUERIES; j+=1 )); do
|
||||
check_good "`"${GETDNS_QUERY}" +return_call_reporting $SYNC_MODE ${GOOD_FALLBACK_QUERIES[$j*$NUM_ARGS]} 2>/dev/null`" ${GOOD_FALLBACK_QUERIES[$((j*NUM_ARGS))+1]} ${GOOD_FALLBACK_QUERIES[$((j*NUM_ARGS))+2]}
|
||||
echo "getdns_query $SYNC_MODE ${GOOD_FALLBACK_QUERIES[$j*$NUM_ARGS]} TESTS: ${GOOD_FALLBACK_QUERIES[$((j*NUM_ARGS))+1]} ${GOOD_FALLBACK_QUERIES[$((j*NUM_ARGS))+2]}"
|
||||
(( COUNT++ ))
|
||||
done
|
||||
|
||||
echo "*Transport not available cases:"
|
||||
for (( j = 0; j < ${#NOT_AVAILABLE_QUERIES[@]}; j+=1 )); do
|
||||
check_bad "`"${GETDNS_QUERY}" $SYNC_MODE ${NOT_AVAILABLE_QUERIES[${j}]} 2>&1`"
|
||||
echo "getdns_query $SYNC_MODE ${NOT_AVAILABLE_QUERIES[${j}]}"
|
||||
(( COUNT++ ))
|
||||
done
|
||||
done
|
||||
echo
|
||||
done
|
||||
|
||||
echo
|
||||
echo "Finished transport test: did $COUNT queries, $GOOD_COUNT passes, $FAIL_COUNT failures"
|
||||
echo
|
Loading…
Reference in New Issue