aboutsummaryrefslogtreecommitdiff
path: root/src/test/test_pt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/test_pt.c')
-rw-r--r--src/test/test_pt.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/test/test_pt.c b/src/test/test_pt.c
index 433f85dfb..327792105 100644
--- a/src/test/test_pt.c
+++ b/src/test/test_pt.c
@@ -7,9 +7,11 @@
#define PT_PRIVATE
#define UTIL_PRIVATE
#define STATEFILE_PRIVATE
+#define CONTROL_PRIVATE
#include "or.h"
#include "config.h"
#include "confparse.h"
+#include "control.h"
#include "transports.h"
#include "circuitbuild.h"
#include "util.h"
@@ -318,6 +320,22 @@ get_or_state_replacement(void)
return dummy_state;
}
+static int controlevent_n = 0;
+static uint16_t controlevent_event = 0;
+static smartlist_t *controlevent_msgs = NULL;
+
+static void
+send_control_event_string_replacement(uint16_t event, event_format_t which,
+ const char *msg)
+{
+ (void) which;
+ ++controlevent_n;
+ controlevent_event = event;
+ if (!controlevent_msgs)
+ controlevent_msgs = smartlist_new();
+ smartlist_add(controlevent_msgs, tor_strdup(msg));
+}
+
/* Test the configure_proxy() function. */
static void
test_pt_configure_proxy(void *arg)
@@ -334,6 +352,10 @@ test_pt_configure_proxy(void *arg)
tor_process_handle_destroy_replacement);
MOCK(get_or_state,
get_or_state_replacement);
+ MOCK(send_control_event_string,
+ send_control_event_string_replacement);
+
+ control_testing_set_global_event_mask(EVENT_TRANSPORT_LAUNCHED);
mp = tor_malloc(sizeof(managed_proxy_t));
mp->conf_state = PT_PROTO_ACCEPTING_METHODS;
@@ -364,6 +386,21 @@ test_pt_configure_proxy(void *arg)
/* check the mp state */
test_assert(mp->conf_state == PT_PROTO_COMPLETED);
+ tt_int_op(controlevent_n, ==, 5);
+ tt_int_op(controlevent_event, ==, EVENT_TRANSPORT_LAUNCHED);
+ tt_int_op(smartlist_len(controlevent_msgs), ==, 5);
+ smartlist_sort_strings(controlevent_msgs);
+ tt_str_op(smartlist_get(controlevent_msgs, 0), ==,
+ "650 TRANSPORT_LAUNCHED server mock1 127.0.0.1 5551\r\n");
+ tt_str_op(smartlist_get(controlevent_msgs, 1), ==,
+ "650 TRANSPORT_LAUNCHED server mock2 127.0.0.1 5552\r\n");
+ tt_str_op(smartlist_get(controlevent_msgs, 2), ==,
+ "650 TRANSPORT_LAUNCHED server mock3 127.0.0.1 5553\r\n");
+ tt_str_op(smartlist_get(controlevent_msgs, 3), ==,
+ "650 TRANSPORT_LAUNCHED server mock4 127.0.0.1 5554\r\n");
+ tt_str_op(smartlist_get(controlevent_msgs, 4), ==,
+ "650 TRANSPORT_LAUNCHED server mock5 127.0.0.1 5555\r\n");
+
{ /* check that the transport info were saved properly in the tor state */
config_line_t *transport_in_state = NULL;
smartlist_t *transport_info_sl = smartlist_new();
@@ -389,6 +426,13 @@ test_pt_configure_proxy(void *arg)
tor_free(dummy_state);
UNMOCK(tor_get_lines_from_handle);
UNMOCK(tor_process_handle_destroy);
+ UNMOCK(get_or_state);
+ UNMOCK(send_control_event_string);
+ if (controlevent_msgs) {
+ SMARTLIST_FOREACH(controlevent_msgs, char *, cp, tor_free(cp));
+ smartlist_free(controlevent_msgs);
+ controlevent_msgs = NULL;
+ }
}
#define PT_LEGACY(name) \