commit 01eb60d5f389fc933174298c55f771cdbee010aa
parent 0f821828934dfa4959c75f8ca06be651fd535001
Author: Matthias Wachs <wachs@net.in.tum.de>
Date: Wed, 29 May 2013 13:56:29 +0000
changes
Diffstat:
4 files changed, 44 insertions(+), 15 deletions(-)
diff --git a/src/experimentation/Makefile.am b/src/experimentation/Makefile.am
@@ -18,7 +18,7 @@ endif
if HAVE_EXPERIMENTAL
- TEXT_EXP_CLIQUE = test_experimentation_clique_connect
+ TEXT_EXP_CLIQUE = test_experimentation_clique_connect test_experimentation_clique_run
endif
check_PROGRAMS = \
@@ -51,6 +51,14 @@ test_experimentation_clique_connect_LDADD = \
$(top_builddir)/src/statistics/libgnunetstatistics.la \
$(top_builddir)/src/testbed/libgnunettestbed.la
+test_experimentation_clique_run_SOURCES = \
+ test_experimentation_clique_run.c
+test_experimentation_clique_run_LDADD = \
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(top_builddir)/src/statistics/libgnunetstatistics.la \
+ $(top_builddir)/src/testbed/libgnunettestbed.la
+
+
EXTRA_DIST = \
test_experimentation_clique.conf \
test_experiments.exp
\ No newline at end of file
diff --git a/src/experimentation/gnunet-daemon-experimentation.h b/src/experimentation/gnunet-daemon-experimentation.h
@@ -34,7 +34,7 @@
/**
* Timeout between request and expected response
*/
-#define EXP_RESPONSE_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1)
+#define EXP_RESPONSE_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5)
/**
* Default experiment frequency
@@ -205,6 +205,9 @@ struct Experimentation_Response
uint32_t issuer_count;
};
+void
+GNUNET_EXPERIMENT_nodes_request_start (struct Node *n, struct Experiment *e);
+
/**
* Start the nodes management
diff --git a/src/experimentation/gnunet-daemon-experimentation_nodes.c b/src/experimentation/gnunet-daemon-experimentation_nodes.c
@@ -304,7 +304,6 @@ static void
get_experiments_cb (struct Node *n, struct Experiment *e)
{
static int counter = 0;
- //size_t start_size;
if (NULL == e)
{
GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Added %u experiments for peer %s\n"),
@@ -317,10 +316,6 @@ get_experiments_cb (struct Node *n, struct Experiment *e)
GNUNET_i2s (&n->id));
/* Request experiment */
-/* start_size = sizeof (struct Experimentation_Start);
- GNUNET_CORE_notify_transmit_ready (ch, GNUNET_NO, 0, EXP_RESPONSE_TIMEOUT,
- n->id, start_size, send_start_cb, n);*/
-
GNUNET_EXPERIMENTATION_scheduler_add (n, e);
counter ++;
@@ -633,6 +628,13 @@ core_receive_handler (void *cls,
}
+void
+GNUNET_EXPERIMENT_nodes_request_start (struct Node *n, struct Experiment *e)
+{
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Sending start request to peer `%s' for experiment `%s'\n"),
+ GNUNET_i2s(&n->id), e->name);
+}
+
/**
* Start the nodes management
diff --git a/src/experimentation/gnunet-daemon-experimentation_scheduler.c b/src/experimentation/gnunet-daemon-experimentation_scheduler.c
@@ -52,6 +52,8 @@ struct ScheduledExperiment {
struct ScheduledExperiment *list_head;
struct ScheduledExperiment *list_tail;
+static unsigned int experiments_scheduled;
+static unsigned int experiments_requested;
static void
request_timeout (void *cls,const struct GNUNET_SCHEDULER_TaskContext* tc)
@@ -66,6 +68,10 @@ request_timeout (void *cls,const struct GNUNET_SCHEDULER_TaskContext* tc)
GNUNET_free (se);
/* Remove experiment */
+
+ GNUNET_assert (experiments_requested > 0);
+ experiments_requested --;
+ GNUNET_STATISTICS_set (GSE_stats, "# experiments requested", experiments_requested, GNUNET_NO);
}
static void run (void *cls,const struct GNUNET_SCHEDULER_TaskContext* tc)
@@ -74,15 +80,18 @@ static void run (void *cls,const struct GNUNET_SCHEDULER_TaskContext* tc)
struct GNUNET_TIME_Relative end;
se->task = GNUNET_SCHEDULER_NO_TASK;
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Executing `%s'\n", se->e->name);
-
if (NOT_RUNNING == se->state)
{
/* Send start message */
- //GNUNET_EXPERIMENT_nodes_request_start (se->e);
+ GNUNET_EXPERIMENT_nodes_request_start (se->n, se->e);
se->state = REQUESTED;
se->task = GNUNET_SCHEDULER_add_delayed (EXP_RESPONSE_TIMEOUT, &request_timeout, se);
+
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Sending start request to peer `%s' for `%s'\n",
+ GNUNET_i2s (&se->n->id), se->e->name);
+ experiments_requested ++;
+ GNUNET_STATISTICS_set (GSE_stats, "# experiments requested", experiments_requested, GNUNET_NO);
return;
}
else if (REQUESTED == se->state)
@@ -93,6 +102,8 @@ static void run (void *cls,const struct GNUNET_SCHEDULER_TaskContext* tc)
else if (STARTED == se->state)
{
/* Experiment is running */
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Running experiment `%s' peer for `%s'\n",
+ GNUNET_i2s (&se->n->id), se->e->name);
/* do work here */
@@ -124,12 +135,11 @@ GNUNET_EXPERIMENTATION_scheduler_add (struct Node *n, struct Experiment *e)
start = GNUNET_TIME_absolute_get_remaining(e->start);
end = GNUNET_TIME_absolute_get_remaining(e->stop);
-
- /* Add additional checks here if required */
-
if (0 == end.rel_value)
return; /* End of experiment is reached */
+ /* Add additional checks here if required */
+
se = GNUNET_malloc (sizeof (struct ScheduledExperiment));
se->state = NOT_RUNNING;
se->e = e;
@@ -140,8 +150,10 @@ GNUNET_EXPERIMENTATION_scheduler_add (struct Node *n, struct Experiment *e)
se->task = GNUNET_SCHEDULER_add_delayed (start, &run, se);
GNUNET_CONTAINER_DLL_insert (list_head, list_tail, se);
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Added experiment `%s' for node to be scheduled\n",
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Added experiment `%s' for node to be scheduled\n",
e->name, GNUNET_i2s(&se->n->id));
+ experiments_scheduled ++;
+ GNUNET_STATISTICS_set (GSE_stats, "# experiments scheduled", experiments_scheduled, GNUNET_NO);
}
/**
@@ -150,7 +162,8 @@ GNUNET_EXPERIMENTATION_scheduler_add (struct Node *n, struct Experiment *e)
void
GNUNET_EXPERIMENTATION_scheduler_start ()
{
-
+ experiments_requested = 0;
+ experiments_scheduled = 0;
}
@@ -174,6 +187,9 @@ GNUNET_EXPERIMENTATION_scheduler_stop ()
cur->task = GNUNET_SCHEDULER_NO_TASK;
}
GNUNET_free (cur);
+ GNUNET_assert (experiments_scheduled > 0);
+ experiments_scheduled --;
+ GNUNET_STATISTICS_set (GSE_stats, "# experiments scheduled", experiments_scheduled, GNUNET_NO);
}
}