aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <grothoff@gnunet.org>2021-09-24 09:51:50 +0200
committerChristian Grothoff <grothoff@gnunet.org>2021-09-24 09:51:50 +0200
commit8d5876b0e1726a04bdd150571dd4075664f4f287 (patch)
tree3a8390c2ed3ec57f3df338accef1d3c1b2e23162
parent1aa0d5f3421d8598f12005ea1138c9eb24ddfd2c (diff)
downloadgnunet-8d5876b0e1726a04bdd150571dd4075664f4f287.tar.gz
gnunet-8d5876b0e1726a04bdd150571dd4075664f4f287.zip
-bugfixes and FIXMEs for t3ss
-rw-r--r--src/testing/testing_api_cmd_netjail_start_v2.c86
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 */
188static int 206static enum GNUNET_GenericReturnValue
189netjail_start_finish (void *cls, 207netjail_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}