[tor-commits] [tor/master] First test case for dns_resolve_impl().

nickm at torproject.org nickm at torproject.org
Fri Oct 30 14:07:17 UTC 2015


commit 595bd9295c438ed0b889287845ef75da30abd2aa
Author: rl1987 <rl1987 at sdf.lonestar.org>
Date:   Wed Oct 7 22:14:48 2015 +0300

    First test case for dns_resolve_impl().
---
 src/test/test_dns.c |  134 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 134 insertions(+)

diff --git a/src/test/test_dns.c b/src/test/test_dns.c
index 654f813..04c84af 100644
--- a/src/test/test_dns.c
+++ b/src/test/test_dns.c
@@ -321,10 +321,144 @@ NS(test_main)(void *arg)
 
 #undef NS_SUBMODULE
 
+#define NS_SUBMODULE ASPECT(resolve_impl, addr_is_ip_no_need_to_resolve)
+
+/*
+ * Given that <b>exitconn->base_.address</b> is IP address string, we
+ * want dns_resolve_impl() to parse it and store in 
+ * <b>exitconn->base_.addr</b>. We expect dns_resolve_impl to return 1.
+ * Lastly, we want it to set the TTL value to default one for DNS queries.
+ */
+
+static void
+NS(test_main)(void *arg)
+{
+  int retval;
+  int made_pending;
+  const tor_addr_t *resolved_addr;
+  tor_addr_t addr_to_compare;
+
+  tor_addr_parse(&addr_to_compare, "8.8.8.8");
+
+  or_circuit_t *on_circ = tor_malloc_zero(sizeof(or_circuit_t));
+
+  edge_connection_t *exitconn = tor_malloc_zero(sizeof(edge_connection_t));
+  TO_CONN(exitconn)->type = CONN_TYPE_EXIT;
+  TO_CONN(exitconn)->magic = EDGE_CONNECTION_MAGIC;
+  TO_CONN(exitconn)->purpose = EXIT_PURPOSE_RESOLVE;
+  TO_CONN(exitconn)->state = EXIT_CONN_STATE_RESOLVING;
+  exitconn->base_.s = TOR_INVALID_SOCKET;
+
+  TO_CONN(exitconn)->address = tor_strdup("8.8.8.8"); 
+
+  retval = dns_resolve_impl(exitconn, 1, on_circ, NULL, &made_pending,
+                            NULL);
+
+  resolved_addr = &(exitconn->base_.addr);
+
+  tt_int_op(retval,==,1);
+  tt_assert(tor_addr_compare(resolved_addr, 
+            (const tor_addr_t *)&addr_to_compare, CMP_EXACT) == 0);
+  tt_int_op(exitconn->address_ttl,==,DEFAULT_DNS_TTL);
+  
+  done:
+  tor_free(on_circ);
+  tor_free(TO_CONN(exitconn)->address);
+  tor_free(exitconn);
+  return;
+}
+
+#undef NS_SUBMODULE
+
+#define NS_SUBMODULE ASPECT(resolve_impl, non_exit)
+
+static void
+NS(test_main)(void *arg)
+{
+  tt_skip();
+
+  done:
+  return;
+}
+
+#undef NS_SUBMODULE
+
+#define NS_SUBMODULE ASPECT(resolve_impl, addr_is_invalid_dest)
+
+static void
+NS(test_main)(void *arg)
+{
+  tt_skip();
+
+  done:
+  return;
+}
+
+#undef NS_SUBMODULE
+
+#define NS_SUBMODULE ASPECT(resolve_impl, malformed_ptr)
+
+static void
+NS(test_main)(void *arg)
+{
+  tt_skip();
+
+  done:
+  return;
+}
+
+#undef NS_SUBMODULE
+
+#define NS_SUBMODULE ASPECT(resolve_impl, cache_hit_pending)
+
+static void
+NS(test_main)(void *arg)
+{
+  tt_skip();
+
+  done:
+  return;
+}
+
+#undef NS_SUBMODULE
+
+#define NS_SUBMODULE ASPECT(resolve_impl, cache_hit_cached)
+
+static void
+NS(test_main)(void *arg)
+{
+  tt_skip();
+
+  done:
+  return;
+}
+
+#undef NS_SUBMODULE
+
+#define NS_SUBMODULE ASPECT(resolve_impl, cache_miss)
+
+static void
+NS(test_main)(void *arg)
+{
+  tt_skip();
+
+  done:
+  return;
+}
+
+#undef NS_SUBMODULE
+
 struct testcase_t dns_tests[] = {
    TEST_CASE(clip_ttl),
    TEST_CASE(expiry_ttl),
    TEST_CASE(resolve),
+   TEST_CASE_ASPECT(resolve_impl, addr_is_ip_no_need_to_resolve),
+   TEST_CASE_ASPECT(resolve_impl, non_exit),
+   TEST_CASE_ASPECT(resolve_impl, addr_is_invalid_dest),
+   TEST_CASE_ASPECT(resolve_impl, malformed_ptr),
+   TEST_CASE_ASPECT(resolve_impl, cache_hit_pending),
+   TEST_CASE_ASPECT(resolve_impl, cache_hit_cached),
+   TEST_CASE_ASPECT(resolve_impl, cache_miss),
    END_OF_TESTCASES
 };
 





More information about the tor-commits mailing list