diff options
author | Christian Grothoff <grothoff@gnunet.org> | 2021-09-24 09:51:50 +0200 |
---|---|---|
committer | Christian Grothoff <grothoff@gnunet.org> | 2021-09-24 09:51:50 +0200 |
commit | 8d5876b0e1726a04bdd150571dd4075664f4f287 (patch) | |
tree | 3a8390c2ed3ec57f3df338accef1d3c1b2e23162 /src/testing | |
parent | 1aa0d5f3421d8598f12005ea1138c9eb24ddfd2c (diff) | |
download | gnunet-8d5876b0e1726a04bdd150571dd4075664f4f287.tar.gz gnunet-8d5876b0e1726a04bdd150571dd4075664f4f287.zip |
-bugfixes and FIXMEs for t3ss
Diffstat (limited to 'src/testing')
-rw-r--r-- | src/testing/testing_api_cmd_netjail_start_v2.c | 86 |
1 files changed, 53 insertions, 33 deletions
diff --git a/src/testing/testing_api_cmd_netjail_start_v2.c b/src/testing/testing_api_cmd_netjail_start_v2.c index 36fbb0e10..9123148a7 100644 --- a/src/testing/testing_api_cmd_netjail_start_v2.c +++ b/src/testing/testing_api_cmd_netjail_start_v2.c | |||
@@ -49,7 +49,8 @@ struct NetJailState | |||
49 | struct GNUNET_OS_Process *start_proc; | 49 | struct GNUNET_OS_Process *start_proc; |
50 | 50 | ||
51 | // Flag indication if the script finished. | 51 | // Flag indication if the script finished. |
52 | unsigned int finished; | 52 | // FIXME: document 3 values |
53 | enum GNUNET_GenericReturnValue finished; | ||
53 | }; | 54 | }; |
54 | 55 | ||
55 | 56 | ||
@@ -116,6 +117,7 @@ child_completed_callback (void *cls, | |||
116 | } | 117 | } |
117 | else | 118 | else |
118 | { | 119 | { |
120 | // FIXME: log status code | ||
119 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 121 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
120 | "Child completed with an error!\n"); | 122 | "Child completed with an error!\n"); |
121 | ns->finished = GNUNET_SYSERR; | 123 | ns->finished = GNUNET_SYSERR; |
@@ -139,15 +141,13 @@ netjail_start_run (void *cls, | |||
139 | struct GNUNET_TESTING_Interpreter *is) | 141 | struct GNUNET_TESTING_Interpreter *is) |
140 | { | 142 | { |
141 | struct NetJailState *ns = cls; | 143 | struct NetJailState *ns = cls; |
142 | char *pid; | 144 | char pid[15]; |
143 | GNUNET_asprintf (&pid, | 145 | enum GNUNET_GenericReturnValue helper_check; |
144 | "%u", | 146 | |
145 | getpid ()); | 147 | // FIXME: NETJAIL_START_SCRIPT like this is bad, |
146 | char *const script_argv[] = {NETJAIL_START_SCRIPT, | 148 | // use location from share/gnunet/ of installed |
147 | ns->topology_config, | 149 | // binary in case libgnunettesting is used as a lib! |
148 | pid, | 150 | helper_check = GNUNET_OS_check_helper_binary ( |
149 | NULL}; | ||
150 | unsigned int helper_check = GNUNET_OS_check_helper_binary ( | ||
151 | NETJAIL_START_SCRIPT, | 151 | NETJAIL_START_SCRIPT, |
152 | GNUNET_YES, | 152 | GNUNET_YES, |
153 | NULL); | 153 | NULL); |
@@ -158,22 +158,37 @@ netjail_start_run (void *cls, | |||
158 | "No SUID for %s!\n", | 158 | "No SUID for %s!\n", |
159 | NETJAIL_START_SCRIPT); | 159 | NETJAIL_START_SCRIPT); |
160 | GNUNET_TESTING_interpreter_fail (); | 160 | GNUNET_TESTING_interpreter_fail (); |
161 | return; | ||
161 | } | 162 | } |
162 | else if (GNUNET_NO == helper_check) | 163 | if (GNUNET_SYSERR == helper_check) |
163 | { | 164 | { |
164 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 165 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
165 | "%s not found!\n", | 166 | "%s not found!\n", |
166 | NETJAIL_START_SCRIPT); | 167 | NETJAIL_START_SCRIPT); |
167 | GNUNET_TESTING_interpreter_fail (); | 168 | GNUNET_TESTING_interpreter_fail (); |
169 | return; | ||
168 | } | 170 | } |
169 | 171 | ||
170 | ns->start_proc = GNUNET_OS_start_process_vap (GNUNET_OS_INHERIT_STD_ERR, | 172 | GNUNET_snprintf (pid, |
171 | NULL, | 173 | sizeof (pid), |
172 | NULL, | 174 | "%u", |
173 | NULL, | 175 | getpid ()); |
174 | NETJAIL_START_SCRIPT, | 176 | { |
175 | script_argv); | 177 | char *const script_argv[] = { |
176 | 178 | NETJAIL_START_SCRIPT, | |
179 | ns->topology_config, | ||
180 | pid, | ||
181 | NULL | ||
182 | }; | ||
183 | |||
184 | ns->start_proc | ||
185 | = GNUNET_OS_start_process_vap (GNUNET_OS_INHERIT_STD_ERR, | ||
186 | NULL, | ||
187 | NULL, | ||
188 | NULL, | ||
189 | NETJAIL_START_SCRIPT, | ||
190 | script_argv); | ||
191 | } | ||
177 | ns->cwh = GNUNET_wait_child (ns->start_proc, | 192 | ns->cwh = GNUNET_wait_child (ns->start_proc, |
178 | &child_completed_callback, | 193 | &child_completed_callback, |
179 | ns); | 194 | ns); |
@@ -182,23 +197,28 @@ netjail_start_run (void *cls, | |||
182 | 197 | ||
183 | 198 | ||
184 | /** | 199 | /** |
185 | * This function checks the flag NetJailState#finished, if this cmd finished. | 200 | * This function checks the flag NetJailState |
201 | * | ||
202 | * FIXME: fix comment! | ||
203 | * #finished, if this cmd finished. | ||
186 | * | 204 | * |
187 | */ | 205 | */ |
188 | static int | 206 | static enum GNUNET_GenericReturnValue |
189 | netjail_start_finish (void *cls, | 207 | netjail_start_finish (void *cls, |
190 | GNUNET_SCHEDULER_TaskCallback cont, | 208 | GNUNET_SCHEDULER_TaskCallback cont, |
191 | void *cont_cls) | 209 | void *cont_cls) |
192 | { | 210 | { |
193 | struct NetJailState *ns = cls; | 211 | struct NetJailState *ns = cls; |
194 | 212 | ||
195 | if (ns->finished) | 213 | if (GNUNET_NO != ns->finished) |
196 | { | 214 | { |
197 | cont (cont_cls); | 215 | cont (cont_cls); |
198 | } | 216 | } |
217 | // FIXME: cont should be called later in the else case! | ||
199 | return ns->finished; | 218 | return ns->finished; |
200 | } | 219 | } |
201 | 220 | ||
221 | |||
202 | /** | 222 | /** |
203 | * Create command. | 223 | * Create command. |
204 | * | 224 | * |
@@ -213,17 +233,17 @@ GNUNET_TESTING_cmd_netjail_start_v2 (const char *label, | |||
213 | struct NetJailState *ns; | 233 | struct NetJailState *ns; |
214 | 234 | ||
215 | ns = GNUNET_new (struct NetJailState); | 235 | ns = GNUNET_new (struct NetJailState); |
216 | ns->finished = GNUNET_NO; | ||
217 | ns->topology_config = topology_config; | 236 | ns->topology_config = topology_config; |
218 | 237 | { | |
219 | struct GNUNET_TESTING_Command cmd = { | 238 | struct GNUNET_TESTING_Command cmd = { |
220 | .cls = ns, | 239 | .cls = ns, |
221 | .label = label, | 240 | .label = label, |
222 | .run = &netjail_start_run, | 241 | .run = &netjail_start_run, |
223 | .finish = &netjail_start_finish, | 242 | .finish = &netjail_start_finish, |
224 | .cleanup = &netjail_start_cleanup, | 243 | .cleanup = &netjail_start_cleanup, |
225 | .traits = &netjail_start_traits | 244 | .traits = &netjail_start_traits |
226 | }; | 245 | }; |
227 | 246 | ||
228 | return cmd; | 247 | return cmd; |
248 | } | ||
229 | } | 249 | } |