main interpreter loop for testcases More...
#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_testing_ng_lib.h"
#include "gnunet_testing_plugin.h"
#include "gnunet_testing_barrier.h"
#include "gnunet_testing_netjail_lib.h"
#include "testing.h"
Go to the source code of this file.
Data Structures | |
struct | GNUNET_TESTING_Interpreter |
Global state of the interpreter, used by a command to access information about other commands. More... | |
struct | FreeBarrierNodeCbCls |
struct | MainParams |
Closure for loop_run(). More... | |
Functions | |
static const struct GNUNET_TESTING_Command * | get_command (struct GNUNET_TESTING_Interpreter *is, const char *label, unsigned int future) |
const struct GNUNET_TESTING_Command * | GNUNET_TESTING_interpreter_lookup_future_command (struct GNUNET_TESTING_Interpreter *is, const char *label) |
Lookup command by label. More... | |
const struct GNUNET_TESTING_Command * | GNUNET_TESTING_interpreter_lookup_command (struct GNUNET_TESTING_Interpreter *is, const char *label) |
Lookup command by label. More... | |
const struct GNUNET_TESTING_Command * | GNUNET_TESTING_interpreter_lookup_command_all (struct GNUNET_TESTING_Interpreter *is, const char *label) |
Lookup command by label. More... | |
int | free_barrier_node_cb (void *cls, const struct GNUNET_ShortHashCode *key, void *value) |
static int | free_barriers_cb (void *cls, const struct GNUNET_ShortHashCode *key, void *value) |
static void | interpreter_delete_barriers (struct GNUNET_TESTING_Interpreter *is) |
Deleting all barriers create in the context of this interpreter. More... | |
static void | finish_test (void *cls) |
Finish the test run, return the final result. More... | |
static void | interpreter_run (void *cls) |
Run the main interpreter loop that performs exchange operations. More... | |
static void | interpreter_next (void *cls) |
Current command is done, run the next one. More... | |
void | GNUNET_TESTING_interpreter_fail (struct GNUNET_TESTING_Interpreter *is) |
Current command failed, clean up and fail the test case. More... | |
struct GNUNET_TESTING_Command * | GNUNET_TESTING_interpreter_get_current_command (struct GNUNET_TESTING_Interpreter *is) |
Returns the actual running command. More... | |
const char * | GNUNET_TESTING_interpreter_get_current_label (struct GNUNET_TESTING_Interpreter *is) |
Obtain label of the command being now run. More... | |
static void | do_timeout (void *cls) |
Function run when the test terminates (good or bad) with timeout. More... | |
enum GNUNET_GenericReturnValue | GNUNET_TESTING_running (const struct GNUNET_TESTING_Command *command) |
Check if the command is running. More... | |
enum GNUNET_GenericReturnValue | GNUNET_TESTING_finished (const struct GNUNET_TESTING_Command *command) |
Check if a command is finished. More... | |
struct GNUNET_TESTING_Interpreter * | GNUNET_TESTING_run (const struct GNUNET_TESTING_Command *commands, struct GNUNET_TIME_Relative timeout, GNUNET_TESTING_ResultCallback rc, void *rc_cls) |
Run the testsuite. More... | |
struct GNUNET_TESTING_Command | GNUNET_TESTING_command_new (void *cls, const char *label, GNUNET_TESTING_CommandRunRoutine run, GNUNET_TESTING_CommandCleanupRoutine cleanup, GNUNET_TESTING_CommandGetTraits traits, struct GNUNET_TESTING_AsyncContext *ac) |
Create a new command. More... | |
struct GNUNET_TESTING_Command | GNUNET_TESTING_cmd_end (void) |
Create command array terminator. More... | |
static void | handle_result (void *cls, enum GNUNET_GenericReturnValue rv) |
Function called with the final result of the test. More... | |
static void | loop_run (void *cls) |
Main function to run the test cases. More... | |
static void | clear_msg (void *cls, int result) |
Continuation function from GNUNET_HELPER_send() More... | |
void | GNUNET_TESTING_add_netjail_helper (struct GNUNET_TESTING_Interpreter *is, const struct GNUNET_HELPER_Handle *helper) |
Adding a helper handle to the interpreter. More... | |
void | send_message_to_netjail (struct GNUNET_TESTING_Interpreter *is, unsigned int global_node_number, struct GNUNET_MessageHeader *header) |
Send Message to netjail nodes. More... | |
void | TST_interpreter_send_barrier_crossable (struct GNUNET_TESTING_Interpreter *is, const char *barrier_name, unsigned int global_node_number) |
Send Message to a netjail node that a barrier can be crossed. More... | |
struct GNUNET_TESTING_Barrier * | TST_interpreter_get_barrier (struct GNUNET_TESTING_Interpreter *is, const char *barrier_name) |
Getting a barrier from the interpreter. More... | |
void | TST_interpreter_finish_attached_cmds (struct GNUNET_TESTING_Interpreter *is, const char *barrier_name) |
Finish all "barrier reached" comands attached to this barrier. More... | |
void | TST_interpreter_add_barrier (struct GNUNET_TESTING_Interpreter *is, struct GNUNET_TESTING_Barrier *barrier) |
Add a barrier to the loop. More... | |
int | GNUNET_TESTING_main (struct GNUNET_TESTING_Command *commands, struct GNUNET_TIME_Relative timeout) |
Start a GNUnet scheduler event loop and run the testsuite. More... | |
void | GNUNET_TESTING_async_fail (struct GNUNET_TESTING_AsyncContext *ac) |
The asynchronous command of ac has failed. More... | |
void | GNUNET_TESTING_async_finish (struct GNUNET_TESTING_AsyncContext *ac) |
The asynchronous command of ac has finished. More... | |
main interpreter loop for testcases
Definition in file testing_api_loop.c.
|
static |
Definition at line 127 of file testing_api_loop.c.
References GNUNET_TESTING_Interpreter::cmds_n, GNUNET_TESTING_Interpreter::commands, GNUNET_assert, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_ERROR, GNUNET_ERROR_TYPE_WARNING, GNUNET_log, GNUNET_NO, GNUNET_OK, GNUNET_TESTING_cmd_batch_get_current_(), GNUNET_TESTING_cmd_is_batch_(), GNUNET_TESTING_get_trait_batch_cmds(), GNUNET_TESTING_Interpreter::ip, is, GNUNET_TESTING_Command::label, run(), and GNUNET_TESTING_Command::run.
Referenced by GNUNET_TESTING_interpreter_lookup_command(), GNUNET_TESTING_interpreter_lookup_command_all(), and GNUNET_TESTING_interpreter_lookup_future_command().
const struct GNUNET_TESTING_Command* GNUNET_TESTING_interpreter_lookup_future_command | ( | struct GNUNET_TESTING_Interpreter * | is, |
const char * | label | ||
) |
Lookup command by label.
Only future commands are looked up.
is | interpreter to lookup command in |
label | label of the command to lookup. |
Definition at line 203 of file testing_api_loop.c.
References get_command(), GNUNET_YES, is, and GNUNET_TESTING_Command::label.
const struct GNUNET_TESTING_Command* GNUNET_TESTING_interpreter_lookup_command | ( | struct GNUNET_TESTING_Interpreter * | is, |
const char * | label | ||
) |
Lookup command by label.
Only commands from current command to commands in the past are looked up.
is | interpreter to lookup command in |
label | label of the command to lookup. |
Definition at line 220 of file testing_api_loop.c.
References get_command(), GNUNET_NO, is, and GNUNET_TESTING_Command::label.
Referenced by backchannel_check_run(), connect_peers_run(), run_finish(), send_simple_run(), start_peer_run(), stop_peer_run(), stop_testing_system_run(), and system_destroy_run().
const struct GNUNET_TESTING_Command* GNUNET_TESTING_interpreter_lookup_command_all | ( | struct GNUNET_TESTING_Interpreter * | is, |
const char * | label | ||
) |
Lookup command by label.
All commands, first into the past, then into the future are looked up.
is | interpreter to lookup command in |
label | label of the command to lookup. |
Definition at line 229 of file testing_api_loop.c.
References get_command(), GNUNET_NO, GNUNET_YES, is, and GNUNET_TESTING_Command::label.
Referenced by notify_connect().
int free_barrier_node_cb | ( | void * | cls, |
const struct GNUNET_ShortHashCode * | key, | ||
void * | value | ||
) |
Definition at line 243 of file testing_api_loop.c.
References FreeBarrierNodeCbCls::barrier, GNUNET_TESTING_Interpreter::finishing, GNUNET_assert, GNUNET_CONTAINER_multishortmap_remove(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNUNET_NO, GNUNET_YES, is, FreeBarrierNodeCbCls::is, key, GNUNET_TESTING_Barrier::name, GNUNET_TESTING_NetjailNode::node_number, GNUNET_TESTING_Barrier::nodes, TST_interpreter_send_barrier_crossable(), and value.
Referenced by free_barriers_cb(), and TST_interpreter_finish_attached_cmds().
|
static |
Definition at line 269 of file testing_api_loop.c.
References FreeBarrierNodeCbCls::barrier, GNUNET_TESTING_Barrier::cmds_head, GNUNET_TESTING_Barrier::cmds_tail, free_barrier_node_cb(), GNUNET_CONTAINER_DLL_remove, GNUNET_CONTAINER_multishortmap_destroy(), GNUNET_CONTAINER_multishortmap_iterate(), GNUNET_free, GNUNET_new, GNUNET_YES, is, FreeBarrierNodeCbCls::is, GNUNET_TESTING_Barrier::nodes, and value.
Referenced by interpreter_delete_barriers().
|
static |
Deleting all barriers create in the context of this interpreter.
is | The interpreter. |
Definition at line 308 of file testing_api_loop.c.
References GNUNET_TESTING_Interpreter::barriers, free_barriers_cb(), GNUNET_CONTAINER_multishortmap_destroy(), GNUNET_CONTAINER_multishortmap_iterate(), and is.
Referenced by finish_test().
|
static |
Finish the test run, return the final result.
cls | the struct GNUNET_TESTING_Interpreter |
Definition at line 323 of file testing_api_loop.c.
References GNUNET_TESTING_Command::cleanup, GNUNET_TESTING_Command::cls, GNUNET_TESTING_Interpreter::commands, GNUNET_TESTING_Interpreter::final_task, GNUNET_TESTING_Interpreter::finishing, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_INFO, GNUNET_free, GNUNET_log, GNUNET_SCHEDULER_cancel(), GNUNET_YES, GNUNET_TESTING_Interpreter::helper, interpreter_delete_barriers(), GNUNET_TESTING_Interpreter::ip, is, GNUNET_TESTING_Command::label, GNUNET_TESTING_Interpreter::rc, GNUNET_TESTING_Interpreter::rc_cls, GNUNET_TESTING_Interpreter::result, run(), GNUNET_TESTING_Command::run, GNUNET_TESTING_Interpreter::task, and GNUNET_TESTING_Interpreter::timeout_task.
Referenced by do_timeout(), GNUNET_TESTING_interpreter_fail(), and interpreter_run().
|
static |
Run the main interpreter loop that performs exchange operations.
Run the main interpreter loop.
cls | contains the struct InterpreterState |
cls | contains the struct GNUNET_TESTING_Interpreter |
Definition at line 477 of file testing_api_loop.c.
References GNUNET_TIME_Absolute::abs_value_us, GNUNET_TESTING_Command::ac, GNUNET_TESTING_Command::asynchronous_finish, GNUNET_TESTING_Command::cls, GNUNET_TESTING_Interpreter::commands, GNUNET_TESTING_AsyncContext::cont, GNUNET_TESTING_AsyncContext::cont_cls, finish_test(), GNUNET_TESTING_AsyncContext::finished, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_INFO, GNUNET_log, GNUNET_NO, GNUNET_OK, GNUNET_TIME_absolute_get(), interpreter_next(), GNUNET_TESTING_Interpreter::ip, GNUNET_TESTING_AsyncContext::is, is, GNUNET_TESTING_Command::label, GNUNET_TESTING_Command::last_req_time, GNUNET_TESTING_Command::num_tries, GNUNET_TESTING_Interpreter::result, GNUNET_TESTING_Command::run, GNUNET_TESTING_Command::start_time, and GNUNET_TESTING_Interpreter::task.
Referenced by GNUNET_TESTING_cmd_end(), and interpreter_next().
|
static |
Current command is done, run the next one.
Definition at line 382 of file testing_api_loop.c.
References GNUNET_TESTING_Command::cls, GNUNET_TESTING_Interpreter::commands, GNUNET_TESTING_Command::finish_time, GNUNET_ERROR_TYPE_MESSAGE, GNUNET_log, GNUNET_SCHEDULER_add_now(), GNUNET_STRINGS_relative_time_to_string(), GNUNET_SYSERR, GNUNET_TESTING_cmd_batch_next_(), GNUNET_TESTING_cmd_is_batch_(), GNUNET_TIME_absolute_get(), GNUNET_TIME_absolute_get_duration(), GNUNET_YES, interpreter_run(), GNUNET_TESTING_Interpreter::ip, is, GNUNET_TESTING_Interpreter::result, and GNUNET_TESTING_Interpreter::task.
Referenced by interpreter_run().
void GNUNET_TESTING_interpreter_fail | ( | struct GNUNET_TESTING_Interpreter * | is | ) |
Current command failed, clean up and fail the test case.
is | interpreter state. |
Definition at line 412 of file testing_api_loop.c.
References GNUNET_TESTING_Interpreter::commands, GNUNET_TESTING_Interpreter::final_task, finish_test(), GNUNET_assert, GNUNET_break, GNUNET_ERROR_TYPE_ERROR, GNUNET_log, GNUNET_SCHEDULER_add_now(), GNUNET_SYSERR, GNUNET_TESTING_cmd_batch_get_current_(), GNUNET_TESTING_cmd_is_batch_(), GNUNET_TESTING_Interpreter::ip, is, GNUNET_TESTING_Command::label, and GNUNET_TESTING_Interpreter::result.
Referenced by GNUNET_TESTING_async_fail(), netjail_stop_run(), run_finish(), start_helper(), and start_peer_run().
struct GNUNET_TESTING_Command* GNUNET_TESTING_interpreter_get_current_command | ( | struct GNUNET_TESTING_Interpreter * | is | ) |
Returns the actual running command.
is | Global state of the interpreter, used by a command to access information about other commands. |
Definition at line 454 of file testing_api_loop.c.
References GNUNET_TESTING_Interpreter::commands, GNUNET_TESTING_Interpreter::ip, and is.
Referenced by barrier_reached_run(), block_until_all_peers_started_run(), and do_timeout().
const char* GNUNET_TESTING_interpreter_get_current_label | ( | struct GNUNET_TESTING_Interpreter * | is | ) |
Obtain label of the command being now run.
is | interpreter state. |
Definition at line 462 of file testing_api_loop.c.
References GNUNET_TESTING_Interpreter::commands, GNUNET_TESTING_Interpreter::ip, is, and GNUNET_TESTING_Command::label.
|
static |
Function run when the test terminates (good or bad) with timeout.
cls | the interpreter state |
Definition at line 534 of file testing_api_loop.c.
References finish_test(), GNUNET_ERROR_TYPE_ERROR, GNUNET_log, GNUNET_SYSERR, is, GNUNET_TESTING_Interpreter::result, and GNUNET_TESTING_Interpreter::timeout_task.
Referenced by GNUNET_TESTING_cmd_end().
enum GNUNET_GenericReturnValue GNUNET_TESTING_running | ( | const struct GNUNET_TESTING_Command * | command | ) |
Check if the command is running.
FIXME: Unused function.
command | The command to check. |
Definition at line 534 of file testing_api_loop.c.
enum GNUNET_GenericReturnValue GNUNET_TESTING_finished | ( | const struct GNUNET_TESTING_Command * | command | ) |
Check if a command is finished.
FIXME: Unused function
command | The command to check. |
Definition at line 534 of file testing_api_loop.c.
struct GNUNET_TESTING_Interpreter* GNUNET_TESTING_run | ( | const struct GNUNET_TESTING_Command * | commands, |
struct GNUNET_TIME_Relative | timeout, | ||
GNUNET_TESTING_ResultCallback | rc, | ||
void * | rc_cls | ||
) |
Run the testsuite.
Note, CMDs are copied into the interpreter state because they are usually defined into the "run" method that returns after having scheduled the test interpreter.
commands | the array of command to execute |
timeout | how long to wait for each command to execute |
rc | function to call with the final result |
rc_cls | closure for rc |
Definition at line 566 of file testing_api_loop.c.
Referenced by loop_run().
struct GNUNET_TESTING_Command GNUNET_TESTING_command_new | ( | void * | cls, |
const char * | label, | ||
GNUNET_TESTING_CommandRunRoutine | run, | ||
GNUNET_TESTING_CommandCleanupRoutine | cleanup, | ||
GNUNET_TESTING_CommandGetTraits | traits, | ||
struct GNUNET_TESTING_AsyncContext * | ac | ||
) |
Create a new command.
cls | the closure |
label | the Label. Maximum length is GNUNET_TESTING_CMD_MAX_LABEL_LENGTH |
run | the run routing |
cleanup | the cleanup function |
traits | the traits function (optional) |
the | async context |
Definition at line 566 of file testing_api_loop.c.
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_end | ( | void | ) |
Create command array terminator.
Definition at line 566 of file testing_api_loop.c.
References GNUNET_TESTING_Interpreter::barriers, GNUNET_TESTING_Interpreter::cmds_n, commands, GNUNET_TESTING_Interpreter::commands, do_timeout(), GNUNET_assert, GNUNET_CONTAINER_multishortmap_create(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNUNET_malloc_large, GNUNET_new, GNUNET_SCHEDULER_add_delayed(), GNUNET_SCHEDULER_add_now(), interpreter_run(), is, GNUNET_TESTING_Interpreter::rc, GNUNET_TESTING_Interpreter::rc_cls, GNUNET_TESTING_Interpreter::task, timeout, and GNUNET_TESTING_Interpreter::timeout_task.
|
static |
Function called with the final result of the test.
cls | the struct MainParams |
rv | GNUNET_OK if the test passed |
Definition at line 674 of file testing_api_loop.c.
References GNUNET_ERROR_TYPE_INFO, GNUNET_log, GNUNET_OK, GNUNET_SCHEDULER_shutdown(), and MainParams::rv.
Referenced by loop_run().
|
static |
Main function to run the test cases.
cls | a struct MainParams * |
Definition at line 694 of file testing_api_loop.c.
References MainParams::commands, GNUNET_TESTING_run(), handle_result(), and MainParams::timeout.
Referenced by GNUNET_TESTING_main().
|
static |
Continuation function from GNUNET_HELPER_send()
cls | closure |
result | GNUNET_OK on success, GNUNET_NO if helper process died GNUNET_SYSERR during GNUNET_HELPER_stop() |
Definition at line 714 of file testing_api_loop.c.
References GNUNET_assert, GNUNET_YES, and result.
Referenced by send_message_to_netjail().
void GNUNET_TESTING_add_netjail_helper | ( | struct GNUNET_TESTING_Interpreter * | is, |
const struct GNUNET_HELPER_Handle * | helper | ||
) |
Adding a helper handle to the interpreter.
is | The interpreter. |
helper | The helper handle. |
Definition at line 727 of file testing_api_loop.c.
References GNUNET_array_append, GNUNET_TESTING_Interpreter::helper, is, and GNUNET_TESTING_Interpreter::n_helper.
Referenced by start_helper().
void send_message_to_netjail | ( | struct GNUNET_TESTING_Interpreter * | is, |
unsigned int | global_node_number, | ||
struct GNUNET_MessageHeader * | header | ||
) |
Send Message to netjail nodes.
is | The interpreter. |
global_node_number | The netjail node to inform. |
header | The message to send. |
Definition at line 742 of file testing_api_loop.c.
References clear_msg(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_HELPER_send(), GNUNET_log, GNUNET_NO, GNUNET_TESTING_Interpreter::helper, is, sh, and GNUNET_MessageHeader::type.
Referenced by TST_interpreter_send_barrier_crossable().
void TST_interpreter_send_barrier_crossable | ( | struct GNUNET_TESTING_Interpreter * | is, |
const char * | barrier_name, | ||
unsigned int | global_node_number | ||
) |
Send Message to a netjail node that a barrier can be crossed.
is | The interpreter loop. |
barrier_name | The name of the barrier to cross. |
global_node_number | The global number of the node to inform. |
Definition at line 762 of file testing_api_loop.c.
References GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_malloc, GNUNET_MESSAGE_TYPE_CMDS_HELPER_BARRIER_CROSSABLE, CommandBarrierCrossable::header, is, send_message_to_netjail(), GNUNET_MessageHeader::size, and GNUNET_MessageHeader::type.
Referenced by free_barrier_node_cb().
struct GNUNET_TESTING_Barrier* TST_interpreter_get_barrier | ( | struct GNUNET_TESTING_Interpreter * | is, |
const char * | barrier_name | ||
) |
Getting a barrier from the interpreter.
is | The interpreter. |
barrier_name | The name of the barrier. |
Definition at line 794 of file testing_api_loop.c.
References GNUNET_TESTING_Interpreter::barriers, GNUNET_CONTAINER_multishortmap_get(), GNUNET_CRYPTO_hash(), and is.
Referenced by barrier_attached(), barrier_reached(), barrier_reached_run(), start_helper(), and TST_interpreter_finish_attached_cmds().
void TST_interpreter_finish_attached_cmds | ( | struct GNUNET_TESTING_Interpreter * | is, |
const char * | barrier_name | ||
) |
Finish all "barrier reached" comands attached to this barrier.
barrier | The barrier in question. |
Definition at line 816 of file testing_api_loop.c.
References GNUNET_TESTING_Command::ac, GNUNET_TESTING_Command::asynchronous_finish, FreeBarrierNodeCbCls::barrier, GNUNET_TESTING_Barrier::cmds_head, GNUNET_TESTING_Barrier::cmds_tail, CommandListEntry::command, GNUNET_TESTING_AsyncContext::finished, free_barrier_node_cb(), GNUNET_CONTAINER_DLL_remove, GNUNET_CONTAINER_multishortmap_destroy(), GNUNET_CONTAINER_multishortmap_iterate(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_NO, GNUNET_TESTING_async_finish(), GNUNET_YES, is, GNUNET_TESTING_Command::label, GNUNET_TESTING_Barrier::nodes, and TST_interpreter_get_barrier().
Referenced by barrier_reached(), and barrier_reached_run().
void TST_interpreter_add_barrier | ( | struct GNUNET_TESTING_Interpreter * | is, |
struct GNUNET_TESTING_Barrier * | barrier | ||
) |
Add a barrier to the loop.
is | The interpreter. |
barrier | The barrier to add. |
Definition at line 877 of file testing_api_loop.c.
References GNUNET_TESTING_Interpreter::barriers, GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY, GNUNET_CONTAINER_multishortmap_put(), GNUNET_CRYPTO_hash(), is, and GNUNET_TESTING_Barrier::name.
Referenced by barrier_reached_run(), barrier_run(), and start_helper().
int GNUNET_TESTING_main | ( | struct GNUNET_TESTING_Command * | commands, |
struct GNUNET_TIME_Relative | timeout | ||
) |
Start a GNUnet scheduler event loop and run the testsuite.
Return 0 upon success. Expected to be called directly from main(). FIXME: Why is this commands array here not const?
commands | the list of command to execute |
timeout | how long to wait for each command to execute |
Definition at line 895 of file testing_api_loop.c.
References commands, MainParams::commands, GNUNET_SCHEDULER_run(), loop_run(), MainParams::rv, and timeout.
void GNUNET_TESTING_async_fail | ( | struct GNUNET_TESTING_AsyncContext * | ac | ) |
The asynchronous command of ac has failed.
ac | command-specific context |
Definition at line 911 of file testing_api_loop.c.
References ac, GNUNET_assert, GNUNET_NO, GNUNET_SYSERR, and GNUNET_TESTING_interpreter_fail().
Referenced by child_completed_callback(), exp_cb(), helper_mst(), and timeout_finish().
void GNUNET_TESTING_async_finish | ( | struct GNUNET_TESTING_AsyncContext * | ac | ) |
The asynchronous command of ac has finished.
ac | command-specific context |
Definition at line 925 of file testing_api_loop.c.
References ac, GNUNET_assert, GNUNET_NO, and GNUNET_OK.
Referenced by backchannel_check_run(), child_completed_callback(), do_timeout(), done_finish(), hello_iter_cb(), helper_mst(), notify_connect(), read_from_log(), run_finish(), send_simple_single(), and TST_interpreter_finish_attached_cmds().