[tor-commits] [obfsproxy/master] Add managed.c unittests.

nickm at torproject.org nickm at torproject.org
Fri Sep 9 17:08:59 UTC 2011


commit faf66db4d199dd468dc4f7df7614df07c582dc37
Author: George Kadianakis <desnacked at gmail.com>
Date:   Sat Aug 20 06:36:22 2011 +0200

    Add managed.c unittests.
---
 src/test/unittest.c         |    2 +
 src/test/unittest_managed.c |   64 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/src/test/unittest.c b/src/test/unittest.c
index 5f2613c..26d5566 100644
--- a/src/test/unittest.c
+++ b/src/test/unittest.c
@@ -10,6 +10,7 @@ extern struct testcase_t crypt_tests[];
 extern struct testcase_t socks_tests[];
 extern struct testcase_t dummy_tests[];
 extern struct testcase_t obfs2_tests[];
+extern struct testcase_t managed_tests[];
 
 struct testgroup_t groups[] = {
   { "container/", container_tests },
@@ -17,6 +18,7 @@ struct testgroup_t groups[] = {
   { "socks/", socks_tests },
   { "dummy/", dummy_tests },
   { "obfs2/", obfs2_tests },
+  { "managed/", managed_tests },
   END_OF_GROUPS
 };
 
diff --git a/src/test/unittest_managed.c b/src/test/unittest_managed.c
new file mode 100644
index 0000000..5346300
--- /dev/null
+++ b/src/test/unittest_managed.c
@@ -0,0 +1,64 @@
+/* Copyright 2011 Nick Mathewson, George Kadianakis
+   See LICENSE for other credits and copying information
+*/
+
+#include "util.h"
+
+#define MANAGED_PRIVATE
+#include "managed.h"
+
+#include "tinytest_macros.h"
+
+static void
+test_managed_bindaddr_validation(void *unused)
+{
+  struct option_parsing_case {
+    int result;
+    int should_succeed;
+    const char *bindaddrs;
+    const char *transports;
+  };
+  static struct option_parsing_case cases[] = {
+    /* correct */
+    { 0, 1, "april-127.0.0.1:2,paris-127.0.0.1:3", "april,paris"},
+    /* correct */
+    { 0, 1, "april-127.0.0.1:2", "april" },
+    /* wrong; transport names */
+    { 0, 0, "april-127.0.0.1:2,paris-127.0.0.1:3", "april,pari"},
+    /* wrong; no port */
+    { 0, 0, "april-127.0.0.1:2,paris-127.0.0.1", "april,paris"},
+    /* wrong; wrong port */
+    { 0, 0, "april-127.0.0.1:2,paris-127.0.0.1:a", "april,paris"},
+    /* wrong; wrong address */
+    { 0, 0, "april-127.0.0.1:2,paris-address:5555", "april,paris"},
+    /* wrong; bad balance */
+    { 0, 0, "april-127.0.0.1:2,paris-127.0.01:3", "april"},
+    /* wrong; funky bindaddr  */
+    { 0, 0, "april-127.0.0.1:2-in,paris-127.0.01:3", "april,paris"},
+    /* wrong; funky bindaddr  */
+    { 0, 0, "april,paris-127.0.01:3", "april,paris"},
+
+    { 0, 0, NULL, NULL }
+  };
+
+  /* Suppress logs for the duration of this function. */
+  log_set_method(LOG_METHOD_NULL, NULL);
+
+  struct option_parsing_case *c;
+  for (c = cases; c->bindaddrs; c++) {
+    c->result = validate_bindaddrs(c->bindaddrs, c->transports);
+    tt_int_op(c->result, ==, c->should_succeed ? 0 : -1);
+  }
+
+ end:
+  /* Unsuspend logging */
+  log_set_method(LOG_METHOD_STDERR, NULL);
+}
+
+#define T(name) \
+  { #name, test_managed_##name, 0, NULL, NULL }
+
+struct testcase_t managed_tests[] = {
+  T(bindaddr_validation),
+  END_OF_TESTCASES
+};





More information about the tor-commits mailing list