[tor-commits] [tor/master] test: Add test_hs_circ.c for HS circuit testing

nickm at torproject.org nickm at torproject.org
Wed Jun 5 13:06:26 UTC 2019


commit 41b94722e5c93ec06911f9c63296a65ce295c1ea
Author: David Goulet <dgoulet at torproject.org>
Date:   Fri May 31 10:43:01 2019 -0400

    test: Add test_hs_circ.c for HS circuit testing
    
    For now, only tests HS circuit repurpose function.
    
    Part of #29034
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 src/test/include.am     |  1 +
 src/test/test.c         |  1 +
 src/test/test.h         |  1 +
 src/test/test_hs_circ.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 73 insertions(+)

diff --git a/src/test/include.am b/src/test/include.am
index ecb768957..955016bee 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -132,6 +132,7 @@ src_test_test_SOURCES += \
 	src/test/test_hs_common.c \
 	src/test/test_hs_config.c \
 	src/test/test_hs_cell.c \
+	src/test/test_hs_circ.c \
 	src/test/test_hs_ntor.c \
 	src/test/test_hs_service.c \
 	src/test/test_hs_client.c  \
diff --git a/src/test/test.c b/src/test/test.c
index 58b468775..70c555815 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -877,6 +877,7 @@ struct testgroup_t testgroups[] = {
   { "legacy_hs/", hs_tests },
   { "hs_cache/", hs_cache },
   { "hs_cell/", hs_cell_tests },
+  { "hs_circ/", hs_circ_tests },
   { "hs_common/", hs_common_tests },
   { "hs_config/", hs_config_tests },
   { "hs_control/", hs_control_tests },
diff --git a/src/test/test.h b/src/test/test.h
index aacc9dba8..8a5c675bc 100644
--- a/src/test/test.h
+++ b/src/test/test.h
@@ -216,6 +216,7 @@ extern struct testcase_t geoip_tests[];
 extern struct testcase_t hs_tests[];
 extern struct testcase_t hs_cache[];
 extern struct testcase_t hs_cell_tests[];
+extern struct testcase_t hs_circ_tests[];
 extern struct testcase_t hs_common_tests[];
 extern struct testcase_t hs_config_tests[];
 extern struct testcase_t hs_control_tests[];
diff --git a/src/test/test_hs_circ.c b/src/test/test_hs_circ.c
new file mode 100644
index 000000000..af28af257
--- /dev/null
+++ b/src/test/test_hs_circ.c
@@ -0,0 +1,70 @@
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file test_hs_circ.c
+ * \brief Test hidden service circuit functionality.
+ */
+
+#define CIRCUITLIST_PRIVATE
+
+#include "test/test.h"
+#include "test/test_helpers.h"
+#include "test/log_test_helpers.h"
+
+#include "core/or/circuitbuild.h"
+#include "core/or/circuitlist.h"
+#include "core/or/circuituse.h"
+#include "core/or/origin_circuit_st.h"
+
+#include "feature/hs/hs_circuit.h"
+#include "feature/hs/hs_circuitmap.h"
+
+static void
+test_circuit_repurpose(void *arg)
+{
+  origin_circuit_t *intro_circ = NULL;
+  const origin_circuit_t *search;
+  ed25519_keypair_t kp;
+
+  (void) arg;
+
+  hs_init();
+
+  intro_circ = origin_circuit_init(CIRCUIT_PURPOSE_S_ESTABLISH_INTRO, 0);
+  tt_assert(intro_circ);
+  ed25519_keypair_generate(&kp, 0);
+
+  /* Register circuit in global map and make sure it is actually there. */
+  hs_circuitmap_register_intro_circ_v3_service_side(intro_circ,
+                                                    &kp.pubkey);
+  tt_assert(TO_CIRCUIT(intro_circ)->hs_token);
+  search = hs_circuitmap_get_intro_circ_v3_service_side(&kp.pubkey);
+  tt_mem_op(search, OP_EQ, intro_circ, sizeof(origin_circuit_t));
+
+  /* Setup circuit HS ident. We don't care about the service pubkey. */
+  intro_circ->hs_ident = hs_ident_circuit_new(&kp.pubkey,
+                                              HS_IDENT_CIRCUIT_INTRO);
+  tt_assert(intro_circ->hs_ident);
+
+  /* Trigger a repurpose. State should be cleaned up. */
+  hs_circ_repurpose(TO_CIRCUIT(intro_circ));
+
+  /* Removed from map. */
+  search = hs_circuitmap_get_intro_circ_v3_service_side(&kp.pubkey);
+  tt_assert(!search);
+  /* HS identifier has been removed. */
+  tt_assert(!intro_circ->hs_ident);
+
+ done:
+  circuit_free_(TO_CIRCUIT(intro_circ));
+  hs_free_all();
+}
+
+struct testcase_t hs_circ_tests[] = {
+  { "repurpose", test_circuit_repurpose, TT_FORK,
+    NULL, NULL },
+
+  END_OF_TESTCASES
+};
+





More information about the tor-commits mailing list