diff options
Diffstat (limited to 'src/transport/test_transport_testing.c')
-rw-r--r-- | src/transport/test_transport_testing.c | 106 |
1 files changed, 71 insertions, 35 deletions
diff --git a/src/transport/test_transport_testing.c b/src/transport/test_transport_testing.c index db9f528d6..066e56d5b 100644 --- a/src/transport/test_transport_testing.c +++ b/src/transport/test_transport_testing.c | |||
@@ -53,6 +53,10 @@ GNUNET_SCHEDULER_TaskIdentifier timeout_task; | |||
53 | static struct PeerContext *p1; | 53 | static struct PeerContext *p1; |
54 | static struct PeerContext *p2; | 54 | static struct PeerContext *p2; |
55 | 55 | ||
56 | static GNUNET_TRANSPORT_TESTING_ConnectRequest cc; | ||
57 | |||
58 | struct TransportTestingHandle * tth; | ||
59 | |||
56 | static int connected = GNUNET_NO; | 60 | static int connected = GNUNET_NO; |
57 | 61 | ||
58 | static int ret = 0; | 62 | static int ret = 0; |
@@ -65,8 +69,10 @@ end () | |||
65 | if (timeout_task != GNUNET_SCHEDULER_NO_TASK) | 69 | if (timeout_task != GNUNET_SCHEDULER_NO_TASK) |
66 | GNUNET_SCHEDULER_cancel (timeout_task); | 70 | GNUNET_SCHEDULER_cancel (timeout_task); |
67 | 71 | ||
68 | GNUNET_TRANSPORT_TESTING_stop_peer (p1); | 72 | GNUNET_TRANSPORT_TESTING_stop_peer (tth, p1); |
69 | GNUNET_TRANSPORT_TESTING_stop_peer (p2); | 73 | GNUNET_TRANSPORT_TESTING_stop_peer (tth, p2); |
74 | |||
75 | GNUNET_TRANSPORT_TESTING_done (tth); | ||
70 | } | 76 | } |
71 | 77 | ||
72 | static void | 78 | static void |
@@ -75,8 +81,12 @@ end_badly () | |||
75 | timeout_task = GNUNET_SCHEDULER_NO_TASK; | 81 | timeout_task = GNUNET_SCHEDULER_NO_TASK; |
76 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Fail! Stopping peers\n"); | 82 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Fail! Stopping peers\n"); |
77 | 83 | ||
78 | GNUNET_TRANSPORT_TESTING_stop_peer (p1); | 84 | if (p1 != NULL) |
79 | GNUNET_TRANSPORT_TESTING_stop_peer (p2); | 85 | GNUNET_TRANSPORT_TESTING_stop_peer (tth, p1); |
86 | if (p2 != NULL) | ||
87 | GNUNET_TRANSPORT_TESTING_stop_peer (tth, p2); | ||
88 | |||
89 | GNUNET_TRANSPORT_TESTING_done (tth); | ||
80 | 90 | ||
81 | ret = GNUNET_SYSERR; | 91 | ret = GNUNET_SYSERR; |
82 | } | 92 | } |
@@ -84,12 +94,12 @@ end_badly () | |||
84 | static void | 94 | static void |
85 | testing_connect_cb (struct PeerContext *p1, struct PeerContext *p2, void *cls) | 95 | testing_connect_cb (struct PeerContext *p1, struct PeerContext *p2, void *cls) |
86 | { | 96 | { |
87 | char *p1_c = strdup (GNUNET_i2s (&p1->id)); | 97 | char * ps = strdup (GNUNET_i2s(&p1->id)); |
88 | 98 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer %u (`%4s') connected to peer %u (`%s')!\n", | |
89 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Peers connected: %s <-> %s\n", p1_c, | 99 | p1->no, ps, |
90 | GNUNET_i2s (&p2->id)); | 100 | p2->no, GNUNET_i2s (&p2->id)); |
91 | GNUNET_free (p1_c); | 101 | GNUNET_free (ps); |
92 | end (); | 102 | GNUNET_SCHEDULER_add_now (&end, NULL); |
93 | } | 103 | } |
94 | 104 | ||
95 | static void | 105 | static void |
@@ -118,42 +128,68 @@ notify_receive (void *cls, const struct GNUNET_PeerIdentity *peer, | |||
118 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Receiving\n"); | 128 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Receiving\n"); |
119 | } | 129 | } |
120 | 130 | ||
131 | void start_cb (struct PeerContext * p, | ||
132 | void *cls) | ||
133 | { | ||
134 | static int started; | ||
135 | started++; | ||
136 | |||
137 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer %u (`%s') started\n", | ||
138 | p->no, | ||
139 | GNUNET_i2s (&p->id)); | ||
140 | |||
141 | if (started != 2) | ||
142 | return; | ||
143 | |||
144 | char *sender_c = strdup (GNUNET_i2s (&p1->id)); | ||
145 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test tries to connect peer %u (`%s') -> peer %u (`%s')\n", | ||
146 | p1->no, sender_c, | ||
147 | p2->no, GNUNET_i2s (&p2->id)); | ||
148 | |||
149 | cc = GNUNET_TRANSPORT_TESTING_connect_peers (tth, p1, p2, &testing_connect_cb, | ||
150 | NULL); | ||
151 | |||
152 | } | ||
121 | 153 | ||
122 | static void | 154 | static void |
123 | run (void *cls, char *const *args, const char *cfgfile, | 155 | run (void *cls, char *const *args, const char *cfgfile, |
124 | const struct GNUNET_CONFIGURATION_Handle *cfg) | 156 | const struct GNUNET_CONFIGURATION_Handle *cfg) |
125 | { | 157 | { |
158 | tth = GNUNET_TRANSPORT_TESTING_init (); | ||
159 | |||
126 | timeout_task = | 160 | timeout_task = |
127 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MINUTES, &end_badly, NULL); | 161 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MINUTES, &end_badly, NULL); |
128 | 162 | ||
129 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting peer\n"); | 163 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting peer\n"); |
130 | p1 = GNUNET_TRANSPORT_TESTING_start_peer ("test_transport_api_tcp_peer1.conf", | 164 | p1 = GNUNET_TRANSPORT_TESTING_start_peer (tth, "test_transport_api_tcp_peer1.conf", |
165 | 1, | ||
131 | ¬ify_receive, ¬ify_connect, | 166 | ¬ify_receive, ¬ify_connect, |
132 | ¬ify_disconnect, p1); | 167 | ¬ify_disconnect, |
133 | 168 | &start_cb, | |
134 | p2 = GNUNET_TRANSPORT_TESTING_start_peer ("test_transport_api_tcp_peer2.conf", | 169 | p1); |
170 | p2 = GNUNET_TRANSPORT_TESTING_start_peer (tth, "test_transport_api_tcp_peer2.conf", | ||
171 | 2, | ||
135 | ¬ify_receive, ¬ify_connect, | 172 | ¬ify_receive, ¬ify_connect, |
136 | ¬ify_disconnect, p2); | 173 | ¬ify_disconnect, |
137 | 174 | &start_cb, | |
138 | if (p1 != NULL) | 175 | p2); |
139 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer1 was successfully started\n"); | 176 | |
140 | else | 177 | if (p1 == NULL) |
141 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 178 | { |
142 | "Peer1 was not started successfully\n"); | 179 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer1 was not started successfully\n"); |
143 | GNUNET_assert (p1 != NULL); | 180 | if (timeout_task != GNUNET_SCHEDULER_NO_TASK) |
144 | GNUNET_assert (p1->th != NULL); | 181 | GNUNET_SCHEDULER_cancel(timeout_task); |
145 | 182 | timeout_task = | |
146 | if (p2 != NULL) | 183 | GNUNET_SCHEDULER_add_now (&end_badly, NULL); |
147 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer2 was successfully started\n"); | 184 | } |
148 | else | 185 | if (p2 == NULL) |
149 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 186 | { |
150 | "Peer2 was not started successfully\n"); | 187 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer2 was not started successfully\n"); |
151 | GNUNET_assert (p2 != NULL); | 188 | if (timeout_task != GNUNET_SCHEDULER_NO_TASK) |
152 | GNUNET_assert (p2->th != NULL); | 189 | GNUNET_SCHEDULER_cancel(timeout_task); |
153 | 190 | timeout_task = | |
154 | 191 | GNUNET_SCHEDULER_add_now (&end_badly, NULL); | |
155 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Connecting peers\n"); | 192 | } |
156 | GNUNET_TRANSPORT_TESTING_connect_peers (p1, p2, &testing_connect_cb, NULL); | ||
157 | } | 193 | } |
158 | 194 | ||
159 | int | 195 | int |