27 #ifndef GNUNET_TESTING_NG_LIB_H
28 #define GNUNET_TESTING_NG_LIB_H
40 #define GNUNET_S(a) #a
49 #define GNUNET_TESTING_FAIL(is) \
53 GNUNET_TESTING_interpreter_fail (is); \
340 const char *target_label,
341 unsigned int counter);
446 const char *process_label,
447 unsigned int process_index,
592 #define GNUNET_TESTING_MAKE_DECL_SIMPLE_TRAIT(name,type) \
593 enum GNUNET_GenericReturnValue \
594 GNUNET_TESTING_get_trait_ ## name ( \
595 const struct GNUNET_TESTING_Command *cmd, \
597 struct GNUNET_TESTING_Trait \
598 GNUNET_TESTING_make_trait_ ## name ( \
606 #define GNUNET_TESTING_MAKE_IMPL_SIMPLE_TRAIT(name,type) \
607 enum GNUNET_GenericReturnValue \
608 GNUNET_TESTING_get_trait_ ## name ( \
609 const struct GNUNET_TESTING_Command *cmd, \
612 if (NULL == cmd->traits) return GNUNET_SYSERR; \
613 return cmd->traits (cmd->cls, \
614 (const void **) ret, \
618 struct GNUNET_TESTING_Trait \
619 GNUNET_TESTING_make_trait_ ## name ( \
622 struct GNUNET_TESTING_Trait ret = { \
623 .trait_name = GNUNET_S (name), \
624 .ptr = (const void *) value \
634 #define GNUNET_TESTING_MAKE_DECL_INDEXED_TRAIT(name,type) \
635 enum GNUNET_GenericReturnValue \
636 GNUNET_TESTING_get_trait_ ## name ( \
637 const struct GNUNET_TESTING_Command *cmd, \
638 unsigned int index, \
640 struct GNUNET_TESTING_Trait \
641 GNUNET_TESTING_make_trait_ ## name ( \
642 unsigned int index, \
650 #define GNUNET_TESTING_MAKE_IMPL_INDEXED_TRAIT(name,type) \
651 enum GNUNET_GenericReturnValue \
652 GNUNET_TESTING_get_trait_ ## name ( \
653 const struct GNUNET_TESTING_Command *cmd, \
654 unsigned int index, \
657 if (NULL == cmd->traits) return GNUNET_SYSERR; \
658 return cmd->traits (cmd->cls, \
659 (const void **) ret, \
663 struct GNUNET_TESTING_Trait \
664 GNUNET_TESTING_make_trait_ ## name ( \
665 unsigned int index, \
668 struct GNUNET_TESTING_Trait ret = { \
670 .trait_name = GNUNET_S (name), \
671 .ptr = (const void *) value \
680 #define GNUNET_TESTING_SIMPLE_TRAITS(op) \
681 op (batch_cmds, struct GNUNET_TESTING_Command *) \
682 op (process, struct GNUNET_OS_Process *)
688 #define GNUNET_TESTING_INDEXED_TRAITS(op) \
689 op (uint32, const uint32_t) \
690 op (uint64, const uint64_t) \
691 op (int64, const int64_t) \
692 op (uint, const unsigned int) \
693 op (string, const char) \
694 op (cmd, const struct GNUNET_TESTING_Command) \
695 op (uuid, const struct GNUNET_Uuid) \
696 op (time, const struct GNUNET_TIME_Absolute) \
697 op (absolute_time, const struct GNUNET_TIME_Absolute) \
698 op (relative_time, const struct GNUNET_TIME_Relative)
static int ret
Return value of the commandline.
static struct GNUNET_TIME_Relative timeout
Desired timeout for the lookup (default is no timeout).
static struct GNUNET_NT_InterfaceScanner * is
Network scanner to determine network types.
static struct VoipCommand commands[]
List of supported commands.
static struct GNUNET_MQ_Envelope * ac
Handle to current GNUNET_PEERINFO_add_peer() operation.
static struct GNUNET_TIME_Relative duration
How long do we run the test?
GNUNET_GenericReturnValue
Named constants for return values.
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_sleep(const char *label, struct GNUNET_TIME_Relative duration)
Sleep for duration.
void GNUNET_TESTING_async_finish(struct GNUNET_TESTING_AsyncContext *ac)
The asynchronous command of ac has finished.
#define GNUNET_TESTING_MAKE_DECL_INDEXED_TRAIT(name, type)
Create headers for a trait with name name for statically allocated data of type type.
#define GNUNET_TESTING_INDEXED_TRAITS(op)
Call op on all indexed traits.
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_batch(const char *label, struct GNUNET_TESTING_Command *batch)
Create a "batch" command.
struct GNUNET_TESTING_Command * GNUNET_TESTING_interpreter_get_current_command(struct GNUNET_TESTING_Interpreter *is)
Returns the actual running command.
#define GNUNET_TESTING_MAKE_DECL_SIMPLE_TRAIT(name, type)
Create headers for a trait with name name for statically allocated data of type type.
void GNUNET_TESTING_async_fail(struct GNUNET_TESTING_AsyncContext *ac)
The asynchronous command of ac has failed.
int GNUNET_TESTING_has_in_name(const char *prog, const char *marker)
Look for substring in a programs' name.
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_rewind_ip(const char *label, const char *target_label, unsigned int counter)
Make the instruction pointer point to target_label only if counter is greater than zero.
void GNUNET_TESTING_run(struct GNUNET_TESTING_Command *commands, struct GNUNET_TIME_Relative timeout, GNUNET_TESTING_ResultCallback rc, void *rc_cls)
Run the testsuite.
enum GNUNET_GenericReturnValue GNUNET_TESTING_finished(struct GNUNET_TESTING_Command *command)
Check if a command is finished.
#define GNUNET_TESTING_SIMPLE_TRAITS(op)
Call op on all simple traits.
void(* GNUNET_TESTING_ResultCallback)(void *cls, enum GNUNET_GenericReturnValue rv)
Function called with the final result of the test.
struct GNUNET_PeerIdentity * GNUNET_TESTING_get_pub_key(unsigned int num, const struct GNUNET_TESTING_System *tl_system)
Retrieve the public key from the test system with the unique node id.
const struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_finish(const char *finish_label, const char *cmd_ref, struct GNUNET_TIME_Relative timeout)
Create (synchronous) command that waits for another command to finish.
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_make_unblocking(struct GNUNET_TESTING_Command cmd)
Turn asynchronous command into non blocking command by setting asynchronous_finish to true.
const struct GNUNET_TESTING_Command * GNUNET_TESTING_interpreter_lookup_command_all(struct GNUNET_TESTING_Interpreter *is, const char *label)
Lookup command by label.
struct GNUNET_TESTING_Trait GNUNET_TESTING_trait_end(void)
"end" trait.
const struct GNUNET_TESTING_Command * GNUNET_TESTING_interpreter_lookup_future_command(struct GNUNET_TESTING_Interpreter *is, const char *label)
Lookup command by label.
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_end(void)
Create command array terminator.
const char * GNUNET_TESTING_interpreter_get_current_label(struct GNUNET_TESTING_Interpreter *is)
Obtain label of the command being now run.
const struct GNUNET_TESTING_Command * GNUNET_TESTING_interpreter_lookup_command(struct GNUNET_TESTING_Interpreter *is, const char *label)
Lookup command by label.
enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait(const struct GNUNET_TESTING_Trait *traits, const void **ret, const char *trait, unsigned int index)
Extract a trait.
enum GNUNET_GenericReturnValue GNUNET_TESTING_running(const struct GNUNET_TESTING_Command *command)
Check if the command is running.
void GNUNET_TESTING_interpreter_fail(struct GNUNET_TESTING_Interpreter *is)
Current command failed, clean up and fail the test case.
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_signal(const char *label, const char *process_label, unsigned int process_index, int signal)
Create a "signal" CMD.
int GNUNET_TESTING_main(struct GNUNET_TESTING_Command *commands, struct GNUNET_TIME_Relative timeout)
Start a GNUnet scheduler event loop and run the testsuite.
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_stat(struct GNUNET_TESTING_Timer *timers)
Obtain performance data from the interpreter.
void(* GNUNET_SCHEDULER_TaskCallback)(void *cls)
Signature of the main function of a task.
The identity of the host (wraps the signing key of the peer).
State each asynchronous command must have in its closure.
GNUNET_SCHEDULER_TaskCallback cont
Function to call when done.
void * cont_cls
Closure for cont.
struct GNUNET_TESTING_Interpreter * is
Interpreter we are part of.
enum GNUNET_GenericReturnValue finished
Indication if the command finished (GNUNET_OK).
A command to be run by the interpreter.
struct GNUNET_TIME_Absolute finish_time
When did the execution of this command finish?
void(* cleanup)(void *cls)
Clean up after the command.
struct GNUNET_TIME_Absolute last_req_time
When did we start the last run of this command? Delta to finish_time gives the latency for the last s...
struct GNUNET_TIME_Relative default_timeout
In case asynchronous_finish is true, how long should we wait for this command to complete?...
struct GNUNET_TESTING_AsyncContext * ac
Pointer to the asynchronous context in the command's closure.
void(* run)(void *cls, struct GNUNET_TESTING_Interpreter *is)
Runs the command.
bool asynchronous_finish
If "true", the interpreter should not immediately call finish, even if finish is non-NULL.
enum GNUNET_GenericReturnValue(* traits)(void *cls, const void **ret, const char *trait, unsigned int index)
Extract information from a command that is useful for other commands.
unsigned int num_tries
How often did we try to execute this command? (In case it is a request that is repated....
struct GNUNET_TIME_Absolute start_time
When did the execution of this command start?
const char * label
Label for the command.
void * cls
Closure for all commands with command-specific context information.
Global state of the interpreter, used by a command to access information about other commands.
Handle for a system on which GNUnet peers are executed; a system is used for reserving unique paths a...
unsigned int num_commands
Number of commands summed up.
const char * prefix
For which type of commands.
struct GNUNET_TIME_Relative total_duration
Total time spend in all commands of this type.
unsigned int num_retries
Number of retries summed up.
struct GNUNET_TIME_Relative success_latency
Total time spend waiting for the successful exeuction in all commands of this type.
const void * ptr
Pointer to the piece of data to offer.
unsigned int index
Index number associated with the trait.
const char * trait_name
Trait type, for example "reserve-pub" or "coin-priv".
Time for absolute times used by GNUnet, in microseconds.
Time for relative time used by GNUnet, in microseconds.