[tor-commits] [tor/master] Add a basic unit test for pt_get_extra_info_descriptor_string.

nickm at torproject.org nickm at torproject.org
Thu Jul 18 12:48:29 UTC 2013


commit e02b6b99f243566e1e652068af0d0b712b37914e
Author: Nick Mathewson <nickm at torproject.org>
Date:   Tue Jul 16 11:53:36 2013 -0400

    Add a basic unit test for pt_get_extra_info_descriptor_string.
---
 src/or/transports.c |    2 +-
 src/or/transports.h |    3 +++
 src/test/test_pt.c  |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/src/or/transports.c b/src/or/transports.c
index 9123421..a600a10 100644
--- a/src/or/transports.c
+++ b/src/or/transports.c
@@ -1230,7 +1230,7 @@ create_managed_proxy_environment(const managed_proxy_t *mp)
  *  <b>proxy_argv</b>.
  *
  * Requires that proxy_argv have at least one element. */
-static managed_proxy_t *
+STATIC managed_proxy_t *
 managed_proxy_create(const smartlist_t *transport_list,
                      char **proxy_argv, int is_server)
 {
diff --git a/src/or/transports.h b/src/or/transports.h
index 525d48a..54049e9 100644
--- a/src/or/transports.h
+++ b/src/or/transports.h
@@ -114,6 +114,9 @@ STATIC int parse_version(const char *line, managed_proxy_t *mp);
 STATIC void parse_env_error(const char *line);
 STATIC void handle_proxy_line(const char *line, managed_proxy_t *mp);
 
+STATIC managed_proxy_t *managed_proxy_create(const smartlist_t *transport_list,
+                                             char **proxy_argv, int is_server);
+
 #endif
 
 #endif
diff --git a/src/test/test_pt.c b/src/test/test_pt.c
index 6a09807..cc2b0a9 100644
--- a/src/test/test_pt.c
+++ b/src/test/test_pt.c
@@ -169,12 +169,59 @@ test_pt_protocol(void)
   tor_free(mp);
 }
 
+static void
+test_pt_get_extrainfo_string(void *arg)
+{
+  managed_proxy_t *mp1 = NULL, *mp2 = NULL;
+  char **argv1, **argv2;
+  smartlist_t *t1 = smartlist_new(), *t2 = smartlist_new();
+  int r;
+  char *s = NULL;
+  (void) arg;
+
+  argv1 = tor_malloc_zero(sizeof(char*)*3);
+  argv1[0] = tor_strdup("ewige");
+  argv1[1] = tor_strdup("Blumenkraft");
+  argv1[2] = NULL;
+  argv2 = tor_malloc_zero(sizeof(char*)*4);
+  argv2[0] = tor_strdup("und");
+  argv2[1] = tor_strdup("ewige");
+  argv2[2] = tor_strdup("Schlangenkraft");
+  argv2[3] = NULL;
+
+  mp1 = managed_proxy_create(t1, argv1, 1);
+  mp2 = managed_proxy_create(t2, argv2, 1);
+
+  r = parse_smethod_line("SMETHOD hagbard 127.0.0.1:5555", mp1);
+  tt_int_op(r, ==, 0);
+  r = parse_smethod_line("SMETHOD celine 127.0.0.1:1723 ARGS:card=no-enemy",
+                         mp2);
+  tt_int_op(r, ==, 0);
+
+  /* Force these proxies to look "completed" or they won't generate output. */
+  mp1->conf_state = mp2->conf_state = PT_PROTO_COMPLETED;
+
+  s = pt_get_extra_info_descriptor_string();
+  tt_assert(s);
+  tt_str_op(s, ==,
+            "transport hagbard 127.0.0.1:5555\n"
+            "transport celine 127.0.0.1:1723 card=no-enemy\n");
+
+ done:
+  /* XXXX clean up better */
+  smartlist_free(t1);
+  smartlist_free(t2);
+  tor_free(s);
+}
+
 #define PT_LEGACY(name)                                               \
   { #name, legacy_test_helper, 0, &legacy_setup, test_pt_ ## name }
 
 struct testcase_t pt_tests[] = {
   PT_LEGACY(parsing),
   PT_LEGACY(protocol),
+  { "get_extrainfo_string", test_pt_get_extrainfo_string, TT_FORK,
+    NULL, NULL },
   END_OF_TESTCASES
 };
 





More information about the tor-commits mailing list