GNUnet  0.19.3
gnunet_testing_netjail_lib.h File Reference
Include dependency graph for gnunet_testing_netjail_lib.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  GNUNET_TESTING_NetjailRouter
 Router of a netjail subnet. More...
 
struct  GNUNET_TESTING_AddressPrefix
 Protocol address prefix für a connection between nodes. More...
 
struct  GNUNET_TESTING_NodeConnection
 Connection to another node. More...
 
struct  GNUNET_TESTING_NetjailNode
 Node in the netjail topology. More...
 
struct  GNUNET_TESTING_NetjailNamespace
 Subnet in a topology. More...
 
struct  GNUNET_TESTING_NetjailTopology
 Toplogy of our netjail setup. More...
 
struct  GNUNET_TESTING_BlockState
 Struct with information for callbacks. More...
 
struct  GNUNET_TESTING_LocalPreparedState
 Struct to hold information for callbacks. More...
 

Macros

#define GNUNET_TESTING_SIMPLE_NETJAIL_TRAITS(op)
 Call op on all simple traits. More...
 

Enumerations

enum  GNUNET_TESTING_NodeType { GNUNET_TESTING_SUBNET_NODE , GNUNET_TESTING_GLOBAL_NODE }
 Enum for the different types of nodes. More...
 

Functions

struct GNUNET_TESTING_NetjailTopologyGNUNET_TESTING_get_topo_from_file (const char *filename)
 Getting the topology from file. More...
 
struct GNUNET_TESTING_NetjailTopologyGNUNET_TESTING_get_topo_from_string (const char *data)
 FIXME: this could use a "to_string". More...
 
unsigned int GNUNET_TESTING_get_additional_connects (unsigned int num, struct GNUNET_TESTING_NetjailTopology *topology)
 Get the number of unintentional additional connections the node waits for. More...
 
struct GNUNET_TESTING_NetjailNodeGNUNET_TESTING_get_node (unsigned int num, struct GNUNET_TESTING_NetjailTopology *topology)
 Get a node from the topology. More...
 
struct GNUNET_TESTING_NodeConnectionGNUNET_TESTING_get_connections (unsigned int num, const struct GNUNET_TESTING_NetjailTopology *topology)
 Get the connections to other nodes for a specific node. More...
 
char * GNUNET_TESTING_get_address (struct GNUNET_TESTING_NodeConnection *connection, const char *prefix)
 Get the address for a specific communicator from a connection. More...
 
void GNUNET_TESTING_free_topology (struct GNUNET_TESTING_NetjailTopology *topology)
 Deallocate memory of the struct GNUNET_TESTING_NetjailTopology. More...
 
unsigned int GNUNET_TESTING_calculate_num (struct GNUNET_TESTING_NodeConnection *node_connection, struct GNUNET_TESTING_NetjailTopology *topology)
 Calculate the unique id identifying a node from a given connection. More...
 
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_system_destroy (const char *label, const char *create_label)
 This command destroys the ressources allocated for the test system setup. More...
 
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_system_create (const char *label, const char *testdir)
 This command is setting up a test environment for a peer to start. More...
 
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_netjail_start (const char *label, char *topology_config, unsigned int *read_file)
 This command executes a shell script to setup the netjail environment. More...
 
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_netjail_stop (const char *label, char *topology_config, unsigned int *read_file)
 This command executes a shell script to remove the netjail environment. More...
 
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_netjail_start_cmds_helper (const char *label, struct GNUNET_TESTING_NetjailTopology *topology, unsigned int *read_file, char *topology_data, struct GNUNET_TIME_Relative timeout)
 This command executes a shell script which starts a helper process. More...
 
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_stop_cmds_helper (const char *label, const char *helper_start_label, struct GNUNET_TESTING_NetjailTopology *topology)
 Create command. More...
 
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_block_until_external_trigger (const char *label)
 This command is used to block the loop, until the command is finished by other commands, using a trait to get this commands struct GNUNET_TESTING_AsyncContext. More...
 
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_send_peer_ready (const char *label, GNUNET_TESTING_cmd_helper_write_cb write_message)
 DEPRECATED This command sends a GNUNET_MESSAGE_TYPE_CMDS_HELPER_PEER_STARTED message to the master loop. More...
 
struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_local_test_prepared (const char *label, GNUNET_TESTING_cmd_helper_write_cb write_message)
 This command sends a GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_TESTS_PREPARED message to the master loop. More...
 
enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait_test_system (const struct GNUNET_TESTING_Command *cmd, const struct GNUNET_TESTING_System **ret)
 
struct GNUNET_TESTING_Trait GNUNET_TESTING_make_trait_test_system (const struct GNUNET_TESTING_System *value)
 
enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait_async_context (const struct GNUNET_TESTING_Command *cmd, const struct GNUNET_TESTING_AsyncContext **ret)
 
struct GNUNET_TESTING_Trait GNUNET_TESTING_make_trait_async_context (const struct GNUNET_TESTING_AsyncContext *value)
 
enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait_helper_handles (const struct GNUNET_TESTING_Command *cmd, const struct GNUNET_HELPER_Handle ***ret)
 
struct GNUNET_TESTING_Trait GNUNET_TESTING_make_trait_helper_handles (const struct GNUNET_HELPER_Handle **value)
 
enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait_local_prepared_state (const struct GNUNET_TESTING_Command *cmd, const struct GNUNET_TESTING_LocalPreparedState **ret)
 
struct GNUNET_TESTING_Trait GNUNET_TESTING_make_trait_local_prepared_state (const struct GNUNET_TESTING_LocalPreparedState *value)
 
enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait_block_state (const struct GNUNET_TESTING_Command *cmd, const struct GNUNET_TESTING_BlockState **ret)
 
struct GNUNET_TESTING_Trait GNUNET_TESTING_make_trait_block_state (const struct GNUNET_TESTING_BlockState *value)
 

Macro Definition Documentation

◆ GNUNET_TESTING_SIMPLE_NETJAIL_TRAITS

#define GNUNET_TESTING_SIMPLE_NETJAIL_TRAITS (   op)
Value:
op (async_context, const struct GNUNET_TESTING_AsyncContext) \
op (helper_handles, const struct GNUNET_HELPER_Handle *) \
op (local_prepared_state, const struct GNUNET_TESTING_LocalPreparedState) \
op (block_state, const struct GNUNET_TESTING_BlockState)
static struct GNUNET_ARM_Operation * op
Current operation.
Definition: gnunet-arm.c:144
static struct GNUNET_TESTING_System * test_system
Handle to the testing system.
The handle to a helper process.
Definition: helper.c:78
State each asynchronous command must have in its closure.
Struct with information for callbacks.
Struct to hold information for callbacks.
Handle for a system on which GNUnet peers are executed; a system is used for reserving unique paths a...
Definition: testing.c:122

Call op on all simple traits.

Definition at line 516 of file gnunet_testing_netjail_lib.h.

Enumeration Type Documentation

◆ GNUNET_TESTING_NodeType

Enum for the different types of nodes.

Enumerator
GNUNET_TESTING_SUBNET_NODE 

Node in a subnet.

GNUNET_TESTING_GLOBAL_NODE 

Global known node.

Definition at line 55 of file gnunet_testing_netjail_lib.h.

56 {
61 
66 };
@ GNUNET_TESTING_SUBNET_NODE
Node in a subnet.
@ GNUNET_TESTING_GLOBAL_NODE
Global known node.

Function Documentation

◆ GNUNET_TESTING_get_topo_from_file()

struct GNUNET_TESTING_NetjailTopology* GNUNET_TESTING_get_topo_from_file ( const char *  filename)

Getting the topology from file.

Parameters
filenameThe name of the topology file.
Returns
The GNUNET_TESTING_NetjailTopology

Definition at line 2814 of file testing.c.

2815 {
2816  uint64_t fs;
2817  char *data;
2818  struct GNUNET_TESTING_NetjailTopology *topo;
2819 
2821  {
2823  _ ("Topology file %s not found\n"),
2824  filename);
2825  return NULL;
2826  }
2827  if (GNUNET_OK !=
2829  {
2831  _ ("Topology file %s has no data\n"),
2832  filename);
2833  return NULL;
2834  }
2835  data = GNUNET_malloc (fs + 1);
2836  if (fs != GNUNET_DISK_fn_read (filename, data, fs))
2837  {
2839  _ ("Topology file %s cannot be read\n"),
2840  filename);
2841  GNUNET_free (data);
2842  return NULL;
2843  }
2844 
2846  "file length %lu\n",
2847  fs);
2848  data[fs] = '\0';
2849 
2851 
2852  GNUNET_free (data);
2853 
2854  return topo;
2855 }
static char * filename
static struct GNUNET_FS_Handle * fs
Handle to FS service.
Definition: gnunet-fs.c:37
uint32_t data
The data value.
enum GNUNET_GenericReturnValue GNUNET_DISK_file_test(const char *fil)
Check that fil corresponds to a filename (of a file that exists and that is not a directory).
Definition: disk.c:481
enum GNUNET_GenericReturnValue GNUNET_DISK_file_size(const char *filename, uint64_t *size, int include_symbolic_links, int single_file_mode)
Get the size of the file (or directory) of the given file (in bytes).
Definition: disk.c:221
ssize_t GNUNET_DISK_fn_read(const char *fn, void *result, size_t len)
Read the contents of a binary file into a buffer.
Definition: disk.c:663
@ GNUNET_OK
@ GNUNET_YES
@ GNUNET_ERROR_TYPE_ERROR
@ GNUNET_ERROR_TYPE_DEBUG
#define GNUNET_malloc(size)
Wrapper around malloc.
#define GNUNET_free(ptr)
Wrapper around free.
#define _(String)
GNU gettext support macro.
Definition: platform.h:177
struct GNUNET_TESTING_NetjailTopology * GNUNET_TESTING_get_topo_from_string(const char *input)
Parse the topology data.
Definition: testing.c:2543
#define LOG(kind,...)
Definition: testing.c:42

References _, data, filename, fs, GNUNET_DISK_file_size(), GNUNET_DISK_file_test(), GNUNET_DISK_fn_read(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_malloc, GNUNET_OK, GNUNET_TESTING_get_topo_from_string(), GNUNET_YES, and LOG.

Here is the call graph for this function:

◆ GNUNET_TESTING_get_topo_from_string()

struct GNUNET_TESTING_NetjailTopology* GNUNET_TESTING_get_topo_from_string ( const char *  input)

FIXME: this could use a "to_string".

Parse the topology data.

Parameters
dataThe topology data.
Returns
The GNUNET_TESTING_NetjailTopology

FIXME: this could use a "to_string".

Parameters
dataThe topology data.
Returns
The GNUNET_TESTING_NetjailTopology

Definition at line 2543 of file testing.c.

2544 {
2545  char *token;
2546  char *key = NULL;
2547  unsigned int out;
2548  char *rest = NULL;
2549  char *value = NULL;
2550  char *value2;
2551  char *data;
2552  int ret;
2553  struct GNUNET_TESTING_NetjailTopology *topo;
2554  struct GNUNET_TESTING_NetjailRouter *router;
2555  struct GNUNET_TESTING_NetjailNamespace *namespace;
2556  struct GNUNET_HashCode hc;
2557 
2558  data = GNUNET_strdup (input);
2559  token = strtok_r (data, "\n", &rest);
2561  topo->map_namespaces =
2563  topo->map_globals =
2565 
2566  while (NULL != token)
2567  {
2568  if (NULL != key)
2569  GNUNET_free (key);
2570  key = get_key (token);
2572  "In the loop with token: %s beginning with %s\n",
2573  token,
2574  key);
2575  if (0 == strcmp (key, "M"))
2576  {
2578  "Get first Value for M.\n");
2579  out = get_first_value (token);
2581  "M: %u\n",
2582  out);
2583  topo->nodes_m = out;
2584  }
2585  else if (0 == strcmp (key, "N"))
2586  {
2588  "Get first Value for N.\n");
2589  out = get_first_value (token);
2591  "N: %u\n",
2592  out);
2593  topo->namespaces_n = out;
2594  }
2595  else if (0 == strcmp (key, "X"))
2596  {
2598  "Get first Value for X.\n");
2599  out = get_first_value (token);
2601  "X: %u\n",
2602  out);
2603  topo->nodes_x = out;
2604  }
2605  else if (0 == strcmp (key, "AC"))
2606  {
2608  "Get first Value for AC.\n");
2609  out = get_first_value (token);
2611  "AC: %u\n",
2612  out);
2613  topo->additional_connects = out;
2614  }
2615  else if (0 == strcmp (key, "T"))
2616  {
2618  "Get first string value for T.\n");
2619  value = get_first_string_value (token);
2621  "value: %s\n",
2622  value);
2623  topo->plugin = value;
2624  }
2625  else if (0 == strcmp (key, "K"))
2626  {
2627  struct GNUNET_ShortHashCode hkey_k;
2628  struct GNUNET_TESTING_NetjailNode *k_node = GNUNET_new (struct
2630 
2632  "Get first Value for K.\n");
2633  out = get_first_value (token);
2635  "K: %u\n",
2636  out);
2637  k_node->node_n = out;
2638  GNUNET_CRYPTO_hash (&out, sizeof(out), &hc);
2639  memcpy (&hkey_k,
2640  &hc,
2641  sizeof (hkey_k));
2642  k_node->is_global = GNUNET_YES;
2643 
2645  topo->map_globals,
2646  &hkey_k))
2647  GNUNET_break (0);
2648  else
2650  &hkey_k,
2651  k_node,
2654  "Get value for key value on K.\n");
2655  value = get_value ("plugin", token);
2657  "value: %s\n",
2658  value);
2659  k_node->plugin = value;
2660  parse_ac (k_node, token);
2661  node_connections (token, k_node);
2662  GNUNET_free (value);
2663  }
2664  else if (0 == strcmp (key, "R"))
2665  {
2666  struct GNUNET_ShortHashCode hkey_r;
2667  router = GNUNET_new (struct GNUNET_TESTING_NetjailRouter);
2668 
2670  "Get first Value for R.\n");
2671  out = get_first_value (token);
2673  "R: %u\n",
2674  out);
2675  GNUNET_CRYPTO_hash (&out, sizeof(out), &hc);
2676  memcpy (&hkey_r,
2677  &hc,
2678  sizeof (hkey_r));
2680  "Get value for key tcp_port on R.\n");
2681  value = get_value ("tcp_port", token);
2683  "tcp_port: %s\n",
2684  value);
2685  ret = sscanf (value, "%u", &(router->tcp_port));
2686  GNUNET_free (value);
2687  GNUNET_break (0 != ret && 1 >= router->tcp_port);
2688 
2690  "Get value for key udp_port on R.\n");
2691  value2 = get_value ("udp_port", token);
2692  ret = sscanf (value2, "%u", &(router->udp_port));
2693  GNUNET_free (value2);
2694  GNUNET_break (0 != ret && 1 >= router->udp_port);
2696  "udp_port: %s\n",
2697  value2);
2698  GNUNET_free (value2);
2700  topo->map_namespaces,
2701  &hkey_r))
2702  {
2703  namespace = GNUNET_CONTAINER_multishortmap_get (topo->map_namespaces,
2704  &hkey_r);
2705  }
2706  else
2707  {
2708  namespace = GNUNET_new (struct GNUNET_TESTING_NetjailNamespace);
2709  namespace->namespace_n = out;
2710  namespace->nodes = GNUNET_CONTAINER_multishortmap_create (1,GNUNET_NO);
2712  &hkey_r,
2713  namespace,
2715  }
2716  namespace->router = router;
2717 
2718  }
2719  else if (0 == strcmp (key, "P"))
2720  {
2721  struct GNUNET_TESTING_NetjailNode *p_node = GNUNET_new (struct
2723  struct GNUNET_ShortHashCode hkey_p;
2724 
2726  "Get first Value for P.\n");
2727  out = get_first_value (token);
2729  "P: %u\n",
2730  out);
2731  GNUNET_CRYPTO_hash (&out, sizeof(out), &hc);
2732  memcpy (&hkey_p,
2733  &hc,
2734  sizeof (hkey_p));
2735 
2737  topo->map_namespaces,
2738  &hkey_p))
2739  {
2740  namespace = GNUNET_CONTAINER_multishortmap_get (topo->map_namespaces,
2741  &hkey_p);
2742  }
2743  else
2744  {
2745  namespace = GNUNET_new (struct GNUNET_TESTING_NetjailNamespace);
2746  namespace->nodes = GNUNET_CONTAINER_multishortmap_create (1,GNUNET_NO);
2747  namespace->namespace_n = out;
2749  &hkey_p,
2750  namespace,
2752  }
2754  "Get second Value for P.\n");
2755  out = get_second_value (token);
2757  "P: %u\n",
2758  out);
2759  GNUNET_CRYPTO_hash (&out, sizeof(out), &hc);
2760  memcpy (&hkey_p,
2761  &hc,
2762  sizeof (hkey_p));
2764  namespace->nodes,
2765  &hkey_p))
2766  {
2767  GNUNET_break (0);
2768  }
2769  else
2770  {
2771 
2772  GNUNET_CONTAINER_multishortmap_put (namespace->nodes,
2773  &hkey_p,
2774  p_node,
2777  "Get value for key plugin on P.\n");
2778  value = get_value ("plugin", token);
2779  if (NULL != value)
2780  {
2782  "plugin: %s\n",
2783  value);
2784  p_node->plugin = value;
2785  }
2786  p_node->node_n = out;
2787  p_node->namespace_n = namespace->namespace_n;
2788  }
2790  "Get AC Value for P.\n");
2791  parse_ac (p_node, token);
2792  node_connections (token, p_node);
2793  }
2794  token = strtok_r (NULL, "\n", &rest);
2795  if (NULL != token)
2797  "Next token %s\n",
2798  token);
2799  }
2800  if (NULL != key)
2801  GNUNET_free (key);
2802  GNUNET_free (data);
2803  return topo;
2804 }
static int ret
Return value of the commandline.
Definition: gnunet-abd.c:81
struct GNUNET_HashCode key
The key used in the DHT.
static char * value
Value of the record to add/remove.
void GNUNET_CRYPTO_hash(const void *block, size_t size, struct GNUNET_HashCode *ret)
Compute hash of a given block.
Definition: crypto_hash.c:41
enum GNUNET_GenericReturnValue GNUNET_CONTAINER_multishortmap_put(struct GNUNET_CONTAINER_MultiShortmap *map, const struct GNUNET_ShortHashCode *key, void *value, enum GNUNET_CONTAINER_MultiHashMapOption opt)
Store a key-value pair in the map.
struct GNUNET_CONTAINER_MultiShortmap * GNUNET_CONTAINER_multishortmap_create(unsigned int len, int do_not_copy_keys)
Create a multi peer map (hash map for public keys of peers).
void * GNUNET_CONTAINER_multishortmap_get(const struct GNUNET_CONTAINER_MultiShortmap *map, const struct GNUNET_ShortHashCode *key)
Given a key find a value in the map matching the key.
int GNUNET_CONTAINER_multishortmap_contains(const struct GNUNET_CONTAINER_MultiShortmap *map, const struct GNUNET_ShortHashCode *key)
Check if the map contains any value under the given key (including values that are NULL).
@ GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE
Allow multiple values with the same key.
@ GNUNET_NO
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur.
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
#define GNUNET_new(type)
Allocate a struct or union of the given type.
A 512-bit hashcode.
A 256-bit hashcode.
Node in the netjail topology.
unsigned int namespace_n
The number of the subnet this node is running in.
unsigned int is_global
Flag indicating if this node is a global known node.
char * plugin
Plugin for the test case to be run on this node.
unsigned int node_n
The number of this node in the subnet.
struct GNUNET_CONTAINER_MultiShortmap * map_globals
Hash map containing the global known nodes which are not natted.
char * plugin
Default plugin for the test case to be run on nodes.
unsigned int nodes_m
Number of nodes per subnet.
unsigned int nodes_x
Number of global known nodes.
unsigned int namespaces_n
Number of subnets.
struct GNUNET_CONTAINER_MultiShortmap * map_namespaces
Hash map containing the subnets (for natted nodes) of the topology.
unsigned int additional_connects
Additional connects we do expect, beside the connects which are configured in the topology.
static unsigned int get_first_value(const char *line)
Every line in the topology configuration starts with a string indicating which kind of information wi...
Definition: testing.c:1767
static void node_connections(const char *line, struct GNUNET_TESTING_NetjailNode *node)
Every line in the topology configuration starts with a string indicating which kind of information wi...
Definition: testing.c:2039
static char * get_value(const char *key, const char *line)
Every line in the topology configuration starts with a string indicating which kind of information wi...
Definition: testing.c:1890
static char * get_first_string_value(const char *line)
Every line in the topology configuration starts with a string indicating which kind of information wi...
Definition: testing.c:1825
static unsigned int get_second_value(const char *line)
Every line in the topology configuration starts with a string indicating which kind of information wi...
Definition: testing.c:1859
static char * get_key(const char *line)
Every line in the topology configuration starts with a string indicating which kind of information wi...
Definition: testing.c:1794
static void parse_ac(struct GNUNET_TESTING_NetjailNode *p_node, const char *token)
Definition: testing.c:2506

References GNUNET_TESTING_NetjailTopology::additional_connects, data, get_first_string_value(), get_first_value(), get_key(), get_second_value(), get_value(), GNUNET_break, GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE, GNUNET_CONTAINER_multishortmap_contains(), GNUNET_CONTAINER_multishortmap_create(), GNUNET_CONTAINER_multishortmap_get(), GNUNET_CONTAINER_multishortmap_put(), GNUNET_CRYPTO_hash(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_new, GNUNET_NO, GNUNET_strdup, GNUNET_YES, GNUNET_TESTING_NetjailNode::is_global, key, LOG, GNUNET_TESTING_NetjailTopology::map_globals, GNUNET_TESTING_NetjailTopology::map_namespaces, GNUNET_TESTING_NetjailNode::namespace_n, GNUNET_TESTING_NetjailTopology::namespaces_n, node_connections(), GNUNET_TESTING_NetjailNode::node_n, GNUNET_TESTING_NetjailTopology::nodes_m, GNUNET_TESTING_NetjailTopology::nodes_x, parse_ac(), GNUNET_TESTING_NetjailNode::plugin, GNUNET_TESTING_NetjailTopology::plugin, ret, GNUNET_TESTING_NetjailRouter::tcp_port, GNUNET_TESTING_NetjailRouter::udp_port, and value.

Referenced by GNUNET_TESTING_get_topo_from_file().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_TESTING_get_additional_connects()

unsigned int GNUNET_TESTING_get_additional_connects ( unsigned int  num,
struct GNUNET_TESTING_NetjailTopology topology 
)

Get the number of unintentional additional connections the node waits for.

Parameters
numThe specific node we want the additional connects for.
Returns
The number of additional connects

Definition at line 2476 of file testing.c.

2479 {
2480  struct GNUNET_TESTING_NetjailNode *node;
2481  struct GNUNET_TESTING_NetjailNamespace *namespace;
2483 
2485  "get_additional_connects\n");
2486 
2487  get_node_info (num, topology, &node, &namespace, &node_connections);
2488 
2489  if (NULL == node)
2490  {
2492  "No info found for node %d\n", num);
2493  return 0;
2494  }
2496  "node additional_connects for node %p\n",
2497  node);
2499  "node additional_connects: %u\n",
2501 
2502  return node->additional_connects;
2503 }
enum GNUNET_TESTBED_TopologyOption topology
The topology to generate.
@ GNUNET_ERROR_TYPE_WARNING
unsigned int additional_connects
The number of unintentional additional connections this node waits for.
struct GNUNET_TESTING_NetjailNode * node
The node which establish the connection.
static void get_node_info(unsigned int num, const struct GNUNET_TESTING_NetjailTopology *topology, struct GNUNET_TESTING_NetjailNode **node_ex, struct GNUNET_TESTING_NetjailNamespace **namespace_ex, struct GNUNET_TESTING_NodeConnection **node_connections_ex)
This function extracts information about a specific node from the topology.
Definition: testing.c:2179

References GNUNET_TESTING_NetjailNode::additional_connects, get_node_info(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_WARNING, LOG, node_connections(), and topology.

Here is the call graph for this function:

◆ GNUNET_TESTING_get_node()

struct GNUNET_TESTING_NetjailNode* GNUNET_TESTING_get_node ( unsigned int  num,
struct GNUNET_TESTING_NetjailTopology topology 
)

Get a node from the topology.

Parameters
numThe specific node we want the connections for.
topologyThe topology we get the connections from.
Returns
The connections of the node.

Definition at line 2260 of file testing.c.

2262 {
2263  struct GNUNET_TESTING_NetjailNode *node;
2264  struct GNUNET_TESTING_NetjailNamespace *namespace;
2266 
2267  get_node_info (num, topology, &node, &namespace, &node_connections);
2268 
2269  return node;
2270 
2271 }

References get_node_info(), GNUNET_TESTING_NodeConnection::node, node_connections(), and topology.

Here is the call graph for this function:

◆ GNUNET_TESTING_get_connections()

struct GNUNET_TESTING_NodeConnection* GNUNET_TESTING_get_connections ( unsigned int  num,
const struct GNUNET_TESTING_NetjailTopology topology 
)

Get the connections to other nodes for a specific node.

Parameters
numThe specific node we want the connections for.
topologyThe topology we get the connections from.
Returns
The connections of the node.

Definition at line 2282 of file testing.c.

2284 {
2285  struct GNUNET_TESTING_NetjailNode *node;
2286  struct GNUNET_TESTING_NetjailNamespace *namespace;
2288 
2290  "get_connections\n");
2291 
2292  get_node_info (num, topology, &node, &namespace, &node_connections);
2293 
2294  return node_connections;
2295 }

References get_node_info(), GNUNET_ERROR_TYPE_DEBUG, LOG, GNUNET_TESTING_NodeConnection::node, node_connections(), and topology.

Referenced by backchannel_check_run(), and connect_peers_run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_TESTING_get_address()

char* GNUNET_TESTING_get_address ( struct GNUNET_TESTING_NodeConnection connection,
const char *  prefix 
)

Get the address for a specific communicator from a connection.

Parameters
connectionThe connection we like to have the address from.
prefixThe communicator protocol prefix.
Returns
The address of the communicator.

Definition at line 2417 of file testing.c.

2419 {
2420  struct GNUNET_TESTING_NetjailNode *node;
2421  char *addr;
2422  char *template;
2423  unsigned int node_n;
2424 
2426  "get address prefix: %s node_n: %u\n",
2427  prefix,
2428  connection->node_n);
2429 
2430  node = connection->node;
2431  if (connection->namespace_n == node->namespace_n)
2432  {
2433  template = CONNECT_ADDRESS_TEMPLATE;
2434  node_n = connection->node_n;
2435  }
2436  else if (0 == connection->namespace_n)
2437  {
2438  template = KNOWN_CONNECT_ADDRESS_TEMPLATE;
2439  node_n = connection->node_n;
2440  }
2441  else if (1 == connection->node_n)
2442  {
2444  node_n = connection->namespace_n;
2445  }
2446  else
2447  {
2448  return NULL;
2449  }
2450 
2451  if (0 == strcmp (PREFIX_TCP, prefix) ||
2452  0 == strcmp (PREFIX_UDP, prefix) ||
2453  0 == strcmp (PREFIX_UDP_NATTED, prefix) ||
2454  0 == strcmp (PREFIX_TCP_NATTED, prefix))
2455  {
2456  GNUNET_asprintf (&addr,
2457  template,
2458  prefix,
2459  node_n);
2460  }
2461  else
2462  {
2463  GNUNET_assert (0);
2464  }
2465 
2466  return addr;
2467 }
static int prefix
If printing the value of PREFIX has been requested.
Definition: gnunet-config.c:59
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
int int GNUNET_asprintf(char **buf, const char *format,...) __attribute__((format(printf
Like asprintf, just portable.
unsigned int node_n
The number of the node this connection points to.
unsigned int namespace_n
The number of the subnet of the node this connection points to.
#define PREFIX_UDP_NATTED
Definition: testing.c:68
#define PREFIX_TCP
Definition: testing.c:62
#define PREFIX_TCP_NATTED
Definition: testing.c:66
#define CONNECT_ADDRESS_TEMPLATE
Definition: testing.c:44
#define PREFIX_UDP
Definition: testing.c:64
#define KNOWN_CONNECT_ADDRESS_TEMPLATE
Definition: testing.c:48
#define ROUTER_CONNECT_ADDRESS_TEMPLATE
Definition: testing.c:46

References CONNECT_ADDRESS_TEMPLATE, GNUNET_asprintf(), GNUNET_assert, GNUNET_ERROR_TYPE_DEBUG, KNOWN_CONNECT_ADDRESS_TEMPLATE, LOG, GNUNET_TESTING_NodeConnection::namespace_n, GNUNET_TESTING_NetjailNode::namespace_n, GNUNET_TESTING_NodeConnection::node, GNUNET_TESTING_NodeConnection::node_n, GNUNET_TESTING_NetjailNode::node_n, prefix, PREFIX_TCP, PREFIX_TCP_NATTED, PREFIX_UDP, PREFIX_UDP_NATTED, and ROUTER_CONNECT_ADDRESS_TEMPLATE.

Referenced by connect_peers_run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_TESTING_free_topology()

void GNUNET_TESTING_free_topology ( struct GNUNET_TESTING_NetjailTopology topology)

Deallocate memory of the struct GNUNET_TESTING_NetjailTopology.

Parameters
topologyThe GNUNET_TESTING_NetjailTopology to be deallocated.

Definition at line 2377 of file testing.c.

2378 {
2380  free_namespaces_cb, NULL);
2383  NULL);
2385  GNUNET_free (topology->plugin);
2387 }
int GNUNET_CONTAINER_multishortmap_iterate(struct GNUNET_CONTAINER_MultiShortmap *map, GNUNET_CONTAINER_ShortmapIterator it, void *it_cls)
Iterate over all entries in the map.
void GNUNET_CONTAINER_multishortmap_destroy(struct GNUNET_CONTAINER_MultiShortmap *map)
Destroy a hash map.
int free_nodes_cb(void *cls, const struct GNUNET_ShortHashCode *key, void *value)
Definition: testing.c:2324
int free_namespaces_cb(void *cls, const struct GNUNET_ShortHashCode *key, void *value)
Definition: testing.c:2356

References free_namespaces_cb(), free_nodes_cb(), GNUNET_CONTAINER_multishortmap_destroy(), GNUNET_CONTAINER_multishortmap_iterate(), GNUNET_free, and topology.

Here is the call graph for this function:

◆ GNUNET_TESTING_calculate_num()

unsigned int GNUNET_TESTING_calculate_num ( struct GNUNET_TESTING_NodeConnection node_connection,
struct GNUNET_TESTING_NetjailTopology topology 
)

Calculate the unique id identifying a node from a given connection.

Parameters
node_connectionThe connection we calculate the id from.
topologyThe topology we get all needed information from.
Returns
The unique id of the node from the connection.

Definition at line 2391 of file testing.c.

2394 {
2395  unsigned int n, m, num;
2396 
2397  n = node_connection->namespace_n;
2398  m = node_connection->node_n;
2399 
2400  if (0 == n)
2401  num = m;
2402  else
2403  num = (n - 1) * topology->nodes_m + m + topology->nodes_x;
2404 
2405  return num;
2406 }
static struct GNUNET_ARM_MonitorHandle * m
Monitor connection with ARM.
Definition: gnunet-arm.c:104

References m, GNUNET_TESTING_NodeConnection::namespace_n, GNUNET_TESTING_NodeConnection::node_n, and topology.

Referenced by connect_peers_run(), and notify_connect().

Here is the caller graph for this function:

◆ GNUNET_TESTING_cmd_system_destroy()

struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_system_destroy ( const char *  label,
const char *  create_label 
)

This command destroys the ressources allocated for the test system setup.

Parameters
labelName for command.
create_labelLabel of the cmd which started the test system.
write_messageCallback to write messages to the master loop.
Returns
command.

This command destroys the ressources allocated for the test system setup.

Parameters
labelname for command.
create_labelLabel of the cmd which started the test system.
Returns
command.

Definition at line 71 of file testing_api_cmd_system_destroy.c.

103 {
104  struct TestSystemState *tss;
105 
106  tss = GNUNET_new (struct TestSystemState);
107  tss->create_label = create_label;
108  return GNUNET_TESTING_command_new (tss, label, &system_destroy_run,
110  &system_destroy_traits, NULL);
111 }
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.
Struct to hold information for callbacks.
static void system_destroy_cleanup(void *cls)
The cleanup function of this cmd frees resources the cmd allocated.
static void system_destroy_run(void *cls, struct GNUNET_TESTING_Interpreter *is)
The run method of this cmd will remove the test environment for a node.
static enum GNUNET_GenericReturnValue system_destroy_traits(void *cls, const void **ret, const char *trait, unsigned int index)
Trait function of this cmd does nothing.

◆ GNUNET_TESTING_cmd_system_create()

struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_system_create ( const char *  label,
const char *  testdir 
)

This command is setting up a test environment for a peer to start.

Parameters
labelName for command.
testdirOnly the directory name without any path. Temporary directory used for all service homes.

This command is setting up a test environment for a peer to start.

Parameters
labelname for command.
labelname for the test environment directory.
Returns
command.

Definition at line 97 of file testing_api_cmd_system_create.c.

115 {
116  struct TestSystemState *tss;
117 
118  tss = GNUNET_new (struct TestSystemState);
119  tss->testdir = testdir;
120 
121  return GNUNET_TESTING_command_new (tss, label, &system_create_run,
123  &system_create_traits, NULL);
124 }
static void system_create_run(void *cls, struct GNUNET_TESTING_Interpreter *is)
The run method of this cmd will setup a test environment for a node.
static int system_create_traits(void *cls, const void **ret, const char *trait, unsigned int index)
This function prepares an array with traits.
static void system_create_cleanup(void *cls)
The cleanup function of this cmd frees resources the cmd allocated.

◆ GNUNET_TESTING_cmd_netjail_start()

struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_netjail_start ( const char *  label,
char *  topology_config,
unsigned int *  read_file 
)

This command executes a shell script to setup the netjail environment.

Parameters
labelname for command.
topology_configConfiguration file for the test topology.
read_fileFlag indicating if the the name of the topology file is send to the helper, or a string with the topology data.
Returns
command.

This command executes a shell script to setup the netjail environment.

Parameters
labelname for command.
topology_configConfiguration file for the test topology.
Returns
command.

Definition at line 138 of file testing_api_cmd_netjail_start.c.

221 {
222  struct NetJailState *ns;
223 
224  ns = GNUNET_new (struct NetJailState);
225  ns->topology_config = topology_config;
226  ns->read_file = read_file;
227  return GNUNET_TESTING_command_new (ns, label,
230  NULL, &ns->ac);
231 }
static struct GNUNET_NAMESTORE_Handle * ns
Handle to the namestore.
Definition: gnunet-abd.c:41
enum GNUNET_GenericReturnValue read_file(char const *const filename, char **buffer)
Definition: pabc_helper.c:71
Struct to hold information for callbacks.
char * topology_config
Configuration file for the test topology.
static void netjail_start_run(void *cls, struct GNUNET_TESTING_Interpreter *is)
The run method starts the script which setup the network namespaces.
static void netjail_start_cleanup(void *cls)
The cleanup function of this cmd frees resources the cmd allocated.

◆ GNUNET_TESTING_cmd_netjail_stop()

struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_netjail_stop ( const char *  label,
char *  topology_config,
unsigned int *  read_file 
)

This command executes a shell script to remove the netjail environment.

Parameters
labelname for command.
topology_configConfiguration file for the test topology.
read_fileFlag indicating if the the name of the topology file is send to the helper, or a string with the topology data.
Returns
command.

Definition at line 128 of file testing_api_cmd_netjail_stop.c.

190 {
191  struct NetJailState *ns;
192 
193  ns = GNUNET_new (struct NetJailState);
194  ns->topology_config = topology_config;
195  ns->read_file = read_file;
196  return GNUNET_TESTING_command_new (ns, label,
199  NULL, &ns->ac);
200 }
static void netjail_stop_cleanup(void *cls)
The cleanup function of this cmd frees resources the cmd allocated.
static void netjail_stop_run(void *cls, struct GNUNET_TESTING_Interpreter *is)
The run method starts the script which deletes the network namespaces.

◆ GNUNET_TESTING_cmd_netjail_start_cmds_helper()

struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_netjail_start_cmds_helper ( const char *  label,
struct GNUNET_TESTING_NetjailTopology topology,
unsigned int *  read_file,
char *  topology_data,
struct GNUNET_TIME_Relative  timeout 
)

This command executes a shell script which starts a helper process.

This process is running on a netjail node, executing a defined test case.

Parameters
labelName for the command.
topologyThe complete topology information.
read_fileFlag indicating if the the name of the topology file is send to the helper, or a string with the topology data.
topology_dataIf read_file is GNUNET_NO, topology_data holds the string with the topology.
timeoutBefore this timeout is reached this cmd MUST finish.
Returns
command.

This command executes a shell script which starts a helper process.

Parameters
labelName for the command.
topologyThe complete topology information.
read_fileFlag indicating if the the name of the topology file is send to the helper, or a string with the topology data.
topology_dataIf read_file is GNUNET_NO, topology_data holds the string with the topology.
timeoutBefore this timeout is reached this cmd MUST finish.
Returns
command.

Definition at line 841 of file testing_api_cmd_netjail_start_cmds_helper.c.

897 {
898  struct NetJailState *ns;
899 
900  ns = GNUNET_new (struct NetJailState);
901  ns->local_m = topology->nodes_m;
902  ns->global_n = topology->namespaces_n;
903  ns->known = topology->nodes_x;
904  ns->plugin_name = topology->plugin;
905  ns->topology = topology;
906  ns->read_file = read_file;
907  ns->topology_data = topology_data;
909 
910  return GNUNET_TESTING_command_new (ns, label,
914  &ns->ac);
915 }
static struct GNUNET_TIME_Relative timeout
Desired timeout for the lookup (default is no timeout).
Definition: gnunet-abd.c:61
struct GNUNET_TIME_Relative GNUNET_TIME_relative_subtract(struct GNUNET_TIME_Relative a1, struct GNUNET_TIME_Relative a2)
Subtract relative timestamp from the other.
Definition: time.c:603
char * topology_data
String with topology data or name of topology file.
static void netjail_exec_cleanup(void *cls)
Code to clean up resource this cmd used.
static void netjail_exec_run(void *cls, struct GNUNET_TESTING_Interpreter *is)
This function starts a helper process for each node.
static enum GNUNET_GenericReturnValue netjail_exec_traits(void *cls, const void **ret, const char *trait, unsigned int index)
This function prepares an array with traits.

◆ GNUNET_TESTING_cmd_stop_cmds_helper()

struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_stop_cmds_helper ( const char *  label,
const char *  helper_start_label,
struct GNUNET_TESTING_NetjailTopology topology 
)

Create command.

Parameters
labelname for command.
helper_start_labellabel of the cmd to start the test system.
topologyThe complete topology information.
Returns
command.

Definition at line 87 of file testing_api_cmd_netjail_stop_cmds_helper.c.

143 {
144  struct StopHelperState *shs;
145 
146  shs = GNUNET_new (struct StopHelperState);
148  shs->local_m = topology->nodes_m;
149  shs->global_n = topology->namespaces_n;
150  shs->known = topology->nodes_x;
151  shs->topology = topology;
152 
153  return GNUNET_TESTING_command_new (shs, label,
156  NULL, NULL);
157 }
Struct to store information handed over to callbacks.
unsigned int known
Number of global known nodes.
struct GNUNET_TESTING_NetjailTopology * topology
The complete topology information.
static void stop_testing_system_run(void *cls, struct GNUNET_TESTING_Interpreter *is)
This function stops the helper process for each node.
static void stop_testing_system_cleanup(void *cls)
Code to clean up resource this cmd used.

◆ GNUNET_TESTING_cmd_block_until_external_trigger()

struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_block_until_external_trigger ( const char *  label)

This command is used to block the loop, until the command is finished by other commands, using a trait to get this commands struct GNUNET_TESTING_AsyncContext.

Parameters
labelname for command.
Returns
command.

This command is used to block the loop, until the command is finished by other commands, using a trait to get this commands struct GNUNET_TESTING_AsyncContext.

Parameters
labelname for command.
Returns
command.

Definition at line 77 of file testing_api_cmd_block_until_external_trigger.c.

107 {
108  struct GNUNET_TESTING_BlockState *bs;
109 
111  bs->label = label;
113  return GNUNET_TESTING_command_new (bs, label,
117  &bs->ac);
118 }
struct GNUNET_TESTING_AsyncContext ac
Context for our asynchronous completion.
unsigned int asynchronous_finish
If this command will block.
const char * label
The label of this command.
static void block_until_all_peers_started_cleanup(void *cls)
The cleanup function of this cmd frees resources the cmd allocated.
static int block_until_external_trigger_traits(void *cls, const void **ret, const char *trait, unsigned int index)
static void block_until_all_peers_started_run(void *cls, struct GNUNET_TESTING_Interpreter *is)
This function does nothing but to start the cmd.

◆ GNUNET_TESTING_cmd_send_peer_ready()

struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_send_peer_ready ( const char *  label,
GNUNET_TESTING_cmd_helper_write_cb  write_message 
)

DEPRECATED This command sends a GNUNET_MESSAGE_TYPE_CMDS_HELPER_PEER_STARTED message to the master loop.

Parameters
labelname for command.
write_messageCallback to write messages to the master loop.
Returns
command.

DEPRECATED This command sends a GNUNET_MESSAGE_TYPE_CMDS_HELPER_PEER_STARTED message to the master loop.

Parameters
labelname for command.
write_messageCallback to write messages to the master loop.
Returns
command.

Definition at line 87 of file testing_api_cmd_send_peer_ready.c.

113 {
114  struct SendPeerReadyState *sprs;
115 
116  sprs = GNUNET_new (struct SendPeerReadyState);
118  return GNUNET_TESTING_command_new (sprs, label,
121  &send_peer_ready_traits, NULL);
122 }
static int write_message(uint16_t message_type, const char *data, size_t data_length)
Write message to the master process.
Struct to hold information for callbacks.
GNUNET_TESTING_cmd_helper_write_cb write_message
Callback to write messages to the master loop.
static void send_peer_ready_run(void *cls, struct GNUNET_TESTING_Interpreter *is)
This function sends a GNUNET_MESSAGE_TYPE_CMDS_HELPER_PEER_STARTED message to the master loop.
static void send_peer_ready_cleanup(void *cls)
The cleanup function of this cmd frees resources the cmd allocated.
static enum GNUNET_GenericReturnValue send_peer_ready_traits(void *cls, const void **ret, const char *trait, unsigned int index)
Trait function of this cmd does nothing.

◆ GNUNET_TESTING_cmd_local_test_prepared()

struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_local_test_prepared ( const char *  label,
GNUNET_TESTING_cmd_helper_write_cb  write_message 
)

This command sends a GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_TESTS_PREPARED message to the master loop.

Parameters
labelname for command.
write_messageCallback to write messages to the master loop.
Returns
command.

Definition at line 80 of file testing_api_cmd_local_test_prepared.c.

101 {
103 
106 
107  return GNUNET_TESTING_command_new (lfs, label,
111  &lfs->ac);
112 }
struct GNUNET_TESTING_AsyncContext ac
Context for our asynchronous completion.
GNUNET_TESTING_cmd_helper_write_cb write_message
Callback to write messages to the master loop.
static void local_test_prepared_run(void *cls, struct GNUNET_TESTING_Interpreter *is)
This function sends a GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_TESTS_PREPARED message to the master loop...
enum GNUNET_GenericReturnValue local_test_prepared_traits(void *cls, const void **ret, const char *trait, unsigned int index)
This function prepares an array with traits.
static void local_test_prepared_cleanup(void *cls)
The cleanup function of this cmd frees resources the cmd allocated.

◆ GNUNET_TESTING_get_trait_test_system()

enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait_test_system ( const struct GNUNET_TESTING_Command cmd,
const struct GNUNET_TESTING_System **  ret 
)

Referenced by backchannel_check_run(), connect_peers_run(), send_simple_run(), start_peer_run(), and system_destroy_run().

Here is the caller graph for this function:

◆ GNUNET_TESTING_make_trait_test_system()

struct GNUNET_TESTING_Trait GNUNET_TESTING_make_trait_test_system ( const struct GNUNET_TESTING_System value)

Referenced by system_create_traits().

Here is the caller graph for this function:

◆ GNUNET_TESTING_get_trait_async_context()

enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait_async_context ( const struct GNUNET_TESTING_Command cmd,
const struct GNUNET_TESTING_AsyncContext **  ret 
)

◆ GNUNET_TESTING_make_trait_async_context()

struct GNUNET_TESTING_Trait GNUNET_TESTING_make_trait_async_context ( const struct GNUNET_TESTING_AsyncContext value)

Referenced by block_until_external_trigger_traits().

Here is the caller graph for this function:

◆ GNUNET_TESTING_get_trait_helper_handles()

enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait_helper_handles ( const struct GNUNET_TESTING_Command cmd,
const struct GNUNET_HELPER_Handle ***  ret 
)

Referenced by stop_testing_system_run().

Here is the caller graph for this function:

◆ GNUNET_TESTING_make_trait_helper_handles()

struct GNUNET_TESTING_Trait GNUNET_TESTING_make_trait_helper_handles ( const struct GNUNET_HELPER_Handle **  value)

◆ GNUNET_TESTING_get_trait_local_prepared_state()

enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait_local_prepared_state ( const struct GNUNET_TESTING_Command cmd,
const struct GNUNET_TESTING_LocalPreparedState **  ret 
)

◆ GNUNET_TESTING_make_trait_local_prepared_state()

struct GNUNET_TESTING_Trait GNUNET_TESTING_make_trait_local_prepared_state ( const struct GNUNET_TESTING_LocalPreparedState value)

◆ GNUNET_TESTING_get_trait_block_state()

enum GNUNET_GenericReturnValue GNUNET_TESTING_get_trait_block_state ( const struct GNUNET_TESTING_Command cmd,
const struct GNUNET_TESTING_BlockState **  ret 
)

◆ GNUNET_TESTING_make_trait_block_state()

struct GNUNET_TESTING_Trait GNUNET_TESTING_make_trait_block_state ( const struct GNUNET_TESTING_BlockState value)

Referenced by block_until_external_trigger_traits().

Here is the caller graph for this function: