1 /* Copyright (c) 2013-2021, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
4 #include "core/or/or.h"
7 #include "test/test_helpers.h"
8 #include "test/log_test_helpers.h"
10 #define OCIRC_EVENT_PRIVATE
11 #define ORCONN_EVENT_PRIVATE
12 #include "core/or/ocirc_event.h"
13 #include "core/or/orconn_event.h"
16 send_state(const orconn_state_msg_t
*msg_in
)
18 orconn_state_msg_t
*msg
= tor_malloc(sizeof(*msg
));
21 orconn_state_publish(msg
);
25 send_status(const orconn_status_msg_t
*msg_in
)
27 orconn_status_msg_t
*msg
= tor_malloc(sizeof(*msg
));
30 orconn_status_publish(msg
);
34 send_chan(const ocirc_chan_msg_t
*msg_in
)
36 ocirc_chan_msg_t
*msg
= tor_malloc(sizeof(*msg
));
39 ocirc_chan_publish(msg
);
43 test_btrack_launch(void *arg
)
45 orconn_state_msg_t conn
;
46 ocirc_chan_msg_t circ
;
47 memset(&conn
, 0, sizeof(conn
));
48 memset(&circ
, 0, sizeof(circ
));
53 conn
.proxy_type
= PROXY_NONE
;
54 conn
.state
= OR_CONN_STATE_CONNECTING
;
56 setup_full_capture_of_logs(LOG_DEBUG
);
58 expect_log_msg_containing("ORCONN gid=1 chan=1 proxy_type=0 state=1");
59 expect_no_log_msg_containing("ORCONN BEST_");
60 teardown_capture_of_logs();
65 setup_full_capture_of_logs(LOG_DEBUG
);
67 expect_log_msg_containing("ORCONN LAUNCH chan=1 onehop=1");
68 expect_log_msg_containing("ORCONN BEST_ANY state -1->1 gid=1");
69 teardown_capture_of_logs();
74 setup_full_capture_of_logs(LOG_DEBUG
);
76 expect_log_msg_containing("ORCONN gid=2 chan=2 proxy_type=0 state=1");
77 expect_no_log_msg_containing("ORCONN BEST_");
78 teardown_capture_of_logs();
83 setup_full_capture_of_logs(LOG_DEBUG
);
85 expect_log_msg_containing("ORCONN LAUNCH chan=2 onehop=0");
86 expect_log_msg_containing("ORCONN BEST_AP state -1->1 gid=2");
87 teardown_capture_of_logs();
94 test_btrack_delete(void *arg
)
96 orconn_state_msg_t state
;
97 orconn_status_msg_t status
;
98 memset(&state
, 0, sizeof(state
));
99 memset(&status
, 0, sizeof(status
));
104 state
.proxy_type
= PROXY_NONE
;
105 state
.state
= OR_CONN_STATE_CONNECTING
;
107 setup_full_capture_of_logs(LOG_DEBUG
);
109 expect_log_msg_containing("ORCONN gid=1 chan=1 proxy_type=0");
110 teardown_capture_of_logs();
113 status
.status
= OR_CONN_EVENT_CLOSED
;
116 setup_full_capture_of_logs(LOG_DEBUG
);
117 send_status(&status
);
118 expect_log_msg_containing("ORCONN DELETE gid=1 status=3 reason=0");
119 teardown_capture_of_logs();
125 struct testcase_t btrack_tests
[] = {
126 { "launch", test_btrack_launch
, TT_FORK
, &helper_pubsub_setup
, NULL
},
127 { "delete", test_btrack_delete
, TT_FORK
, &helper_pubsub_setup
, NULL
},