/*
This file is part of GNUnet.
- Copyright (C) 2010-2015 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2010-2015 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
* @file ats/test_ats_lib.c
/**
* Which session were we given?
*/
- struct Session *session;
+ struct GNUNET_ATS_Session *session;
/**
* What address was assigned?
GNUNET_CONTAINER_multipeermap_remove (p2asd,
key,
asd));
- GNUNET_free (asd->address);
+ GNUNET_free_non_null (asd->address);
GNUNET_free (asd);
return GNUNET_OK;
}
* Task run to terminate the testcase.
*
* @param cls NULL
- * @param tc unused
*/
static void
-end (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+end (void *cls)
{
if (0 != ret)
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
* Main interpreter loop. Runs the steps of the test.
*
* @param cls NULL
- * @param tc unused
*/
static void
-interpreter (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc);
+interpreter (void *cls);
/**
/**
* Our dummy sessions.
*/
-struct Session
+struct GNUNET_ATS_Session
{
/**
- * Field to avoid `0 == sizeof(struct Session)`.
+ * Field to avoid `0 == sizeof(struct GNUNET_ATS_Session)`.
*/
unsigned int non_empty;
};
* @param i which session number to return
* @return NULL if @a i is 0, otherwise a pointer unique to @a i
*/
-static struct Session *
+static struct GNUNET_ATS_Session *
make_session (unsigned int i)
{
- struct Session *baseptr = NULL;
+ struct GNUNET_ATS_Session *baseptr = NULL;
if (0 == i)
return NULL;
if (amount != cmd->details.reserve_bandwidth.amount)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Unexpectedly failed to reserve %d bytes with delay %s!\n",
+ "Unexpectedly failed to reserve %d/%d bytes with delay %s!\n",
(int) amount,
+ (int) cmd->details.reserve_bandwidth.amount,
GNUNET_STRINGS_relative_time_to_string (res_delay,
GNUNET_YES));
GNUNET_break (0);
(0 != res_delay.rel_value_us) );
break;
case GNUNET_SYSERR:
- if ( (amount != cmd->details.reserve_bandwidth.amount) ||
+ if ( (amount != 0) ||
(0 == res_delay.rel_value_us) )
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
* Main interpreter loop. Runs the steps of the test.
*
* @param cls NULL
- * @param tc unused
*/
static void
-interpreter (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+interpreter (void *cls)
{
struct Command *cmd;
case CMD_ADD_ADDRESS:
{
struct GNUNET_HELLO_Address *addr;
- struct Session *session;
+ struct GNUNET_ATS_Session *session;
addr = make_address (cmd->details.add_address.pid,
cmd->details.add_address.addr_num,
if (NULL == asd)
return;
if (GNUNET_NO == asd->active)
- return;
+ return; /* last suggestion was to disconnect, wait longer */
done = GNUNET_YES;
if (NULL != cmd->details.await_address_suggestion.add_label)
{
&pid);
asd = find_address_suggestion (&pid);
if (NULL == asd)
- return;
- if (GNUNET_NO == asd->active)
- return;
+ return; /* odd, no suggestion at all yet!? */
+ if (GNUNET_YES == asd->active)
+ return; /* last suggestion was to activate, wait longer */
+ /* last suggestion was to deactivate, condition satisfied! */
off++;
break;
}
&pid);
cmd->details.request_connection_start.csh
= GNUNET_ATS_connectivity_suggest (con_ats,
- &pid);
+ &pid,
+ 1);
off++;
break;
}
else
cmp = &update->details.update_address.properties;
if ( (NULL != aid) &&
- (0 == memcmp (cmp,
- &aid->properties,
- sizeof (struct GNUNET_ATS_Properties))) )
+ (cmp->delay.rel_value_us == aid->properties.delay.rel_value_us) &&
+ (cmp->utilization_out == aid->properties.utilization_out) &&
+ (cmp->utilization_in == aid->properties.utilization_in) &&
+ (cmp->distance == aid->properties.distance) &&
+ (cmp->scope == aid->properties.scope) )
{
off++;
break;
case CMD_ADD_SESSION:
{
struct Command *add;
- struct Session *session;
+ struct GNUNET_ATS_Session *session;
add = find_command (CMD_ADD_ADDRESS,
cmd->details.add_session.add_label);
{
struct Command *add_address;
struct Command *add_session;
- struct Session *session;
+ struct GNUNET_ATS_Session *session;
add_session = find_command (CMD_ADD_SESSION,
cmd->details.del_session.add_session_label);
cmd);
return;
}
+ case CMD_SLEEP:
+ off++;
+ interpreter_task = GNUNET_SCHEDULER_add_delayed (cmd->details.sleep.delay,
+ &interpreter,
+ NULL);
+ return;
} /* end switch */
} /* end while(1) */
}
address_suggest_cb (void *cls,
const struct GNUNET_PeerIdentity *peer,
const struct GNUNET_HELLO_Address *address,
- struct Session *session,
+ struct GNUNET_ATS_Session *session,
struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
{
asd->address = NULL;
if (NULL != address)
asd->address = GNUNET_HELLO_address_copy (address);
- run_interpreter ();
+ if (NULL == interpreter_task)
+ run_interpreter ();
}
aid->bandwidth_out = bandwidth_out;
aid->bandwidth_in = bandwidth_in;
aid->properties = *prop;
- run_interpreter ();
+ if (NULL == interpreter_task)
+ run_interpreter ();
}