[tor-commits] [tor/master] Added tests

nickm at torproject.org nickm at torproject.org
Mon Jul 13 14:11:06 UTC 2020


commit c84ce716dce09eb26f26e3303efa2c0a04a870b7
Author: MrSquanchee <usuraj35 at gmail.com>
Date:   Tue Apr 21 18:23:42 2020 +0530

    Added tests
    
    Added tests for channel_matches_target_addr_for_extend().
    Ticket #33919.
---
 changes/ticket33919     |  3 +++
 src/test/test_channel.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)

diff --git a/changes/ticket33919 b/changes/ticket33919
new file mode 100644
index 000000000..a9991b741
--- /dev/null
+++ b/changes/ticket33919
@@ -0,0 +1,3 @@
+  o Minor features (testing):
+    - Added unit tests for channel_matches_target_addr_for_extend().
+      Closes Ticket 33919. Patch by MrSquanchee.
diff --git a/src/test/test_channel.c b/src/test/test_channel.c
index 849cc497f..53ca8d9bb 100644
--- a/src/test/test_channel.c
+++ b/src/test/test_channel.c
@@ -16,6 +16,10 @@
 /* For packed_cell stuff */
 #define RELAY_PRIVATE
 #include "core/or/relay.h"
+/* For channel_tls_t object and private functions. */
+#define CHANNEL_OBJECT_PRIVATE
+#define CHANNELTLS_PRIVATE
+#include "core/or/channeltls.h"
 /* For init/free stuff */
 #include "core/or/scheduler.h"
 #include "feature/nodelist/networkstatus.h"
@@ -25,6 +29,8 @@
 #include "core/or/origin_circuit_st.h"
 #include "feature/nodelist/routerstatus_st.h"
 #include "core/or/var_cell_st.h"
+#include "core/or/or_connection_st.h"
+#include "lib/net/inaddr.h"
 
 /* Test suite stuff */
 #include "test/log_test_helpers.h"
@@ -1537,6 +1543,54 @@ test_channel_listener(void *arg)
   channel_free_all();
 }
 
+#define TEST_SETUP_MATCHES_ADDR(orcon, addr, src, rv) STMT_BEGIN \
+    rv = tor_inet_pton(addr.family, src, &addr.addr); \
+    tt_int_op(rv, OP_EQ, 1); \
+    orcon->real_addr = addr; \
+  STMT_END;
+
+#define TEST_MATCHES_ADDR(chan, addr, rv, exp) STMT_BEGIN \
+    rv = channel_matches_target_addr_for_extend(chan, &addr); \
+    tt_int_op(rv, OP_EQ, exp); \
+  STMT_END;
+
+static void
+test_channel_matches_target_addr_for_extend(void *arg)
+{
+  (void) arg;
+
+  channel_tls_t *tlschan = tor_malloc_zero(sizeof(*tlschan));
+  or_connection_t *orcon = tor_malloc_zero(sizeof(*orcon));
+  channel_t *chan = &(tlschan->base_);
+  tor_addr_t addr;
+  int rv;
+
+  tlschan->conn = orcon;
+  channel_tls_common_init(tlschan);
+
+  /* Test for IPv4 addresses. */
+  addr.family = AF_INET;
+  TEST_SETUP_MATCHES_ADDR(orcon, addr, "1.2.3.4", rv);
+  TEST_MATCHES_ADDR(chan, addr, rv, 1);
+
+  tor_inet_pton(addr.family, "2.5.3.4", &addr.addr);
+  TEST_MATCHES_ADDR(chan, addr, rv, 0);
+
+  /* Test for IPv6 addresses. */
+  addr.family = AF_INET6;
+  TEST_SETUP_MATCHES_ADDR(orcon, addr, "3:4:7:1:9:8:09:10", rv);
+  TEST_MATCHES_ADDR(chan, addr, rv, 1);
+
+  tor_inet_pton(addr.family, "::", &addr.addr);
+  TEST_MATCHES_ADDR(chan, addr, rv, 0);
+
+ done:
+  circuitmux_clear_policy(chan->cmux);
+  circuitmux_free(chan->cmux);
+  tor_free(orcon);
+  tor_free(tlschan);
+}
+
 struct testcase_t channel_tests[] = {
   { "inbound_cell", test_channel_inbound_cell, TT_FORK,
     NULL, NULL },
@@ -1558,5 +1612,7 @@ struct testcase_t channel_tests[] = {
     NULL, NULL },
   { "listener", test_channel_listener, TT_FORK,
     NULL, NULL },
+  { "matches_target", test_channel_matches_target_addr_for_extend, TT_FORK,
+    NULL, NULL },
   END_OF_TESTCASES
 };





More information about the tor-commits mailing list