X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4a201b7ceece70d2bc461ac48c8b746a36d07243..97f29c3974bb3008815e603331b33e5065c2f387:/examples/amok/bandwidth/bandwidth.c diff --git a/examples/amok/bandwidth/bandwidth.c b/examples/amok/bandwidth/bandwidth.c index 3e085dfa9a..354eeb7f85 100644 --- a/examples/amok/bandwidth/bandwidth.c +++ b/examples/amok/bandwidth/bandwidth.c @@ -1,6 +1,7 @@ /* bandwidth - bandwidth test demo of GRAS features */ -/* Copyright (c) 2003, 2004 Martin Quinson. All rights reserved. */ +/* Copyright (c) 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team. + * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -10,12 +11,26 @@ #include "amok/bandwidth.h" #include "amok/peermanagement.h" -XBT_LOG_NEW_DEFAULT_CATEGORY(Bandwidth, "Messages specific to this example"); +XBT_LOG_NEW_DEFAULT_CATEGORY(Bandwidth, + "Messages specific to this example"); /* ********************************************************************** * Sensor code * **********************************************************************/ +static gras_socket_t try_gras_socket_client_from_string(const char *host) +{ + volatile gras_socket_t sock = NULL; + xbt_ex_t e; + TRY { + sock = gras_socket_client_from_string(host); + } + CATCH(e) { + xbt_ex_free(e); + } + return sock; +} + /* Function prototypes */ int sensor(int argc, char *argv[]); @@ -24,26 +39,17 @@ int sensor(int argc, char *argv[]) gras_socket_t mysock; gras_socket_t master = NULL; int connection_try = 10; - xbt_ex_t e; gras_init(&argc, argv); amok_bw_init(); amok_pm_init(); mysock = gras_socket_server_range(3000, 9999, 0, 0); - INFO1("Sensor starting (on port %d)", gras_os_myport()); - while (connection_try > 0 && master == NULL) { - int connected = 0; - TRY { - master = gras_socket_client_from_string(argv[1]); - connected = 1; - } CATCH(e) { - xbt_ex_free(e); - } - if (!connected) { - connection_try--; - gras_os_sleep(0.5); /* let the master get ready */ - } + XBT_INFO("Sensor starting (on port %d)", gras_os_myport()); + while (connection_try > 0 && + !(master = try_gras_socket_client_from_string(argv[1]))) { + connection_try--; + gras_os_sleep(0.5); /* let the master get ready */ } amok_pm_group_join(master, "bandwidth"); @@ -79,22 +85,20 @@ int maestro(int argc, char *argv[]) amok_bw_init(); amok_pm_init(); - INFO0("Maestro starting"); + XBT_INFO("Maestro starting"); if (argc != 2) { - ERROR0("Usage: maestro port\n"); + XBT_ERROR("Usage: maestro port\n"); return 1; } mysock = gras_socket_server(atoi(argv[1])); group = amok_pm_group_new("bandwidth"); - INFO0("Wait for peers for 5 sec"); + XBT_INFO("Wait for peers for 5 sec"); gras_msg_handleall(5); /* friends, we're ready. Come and play */ if (xbt_dynar_length(group) < 2) { - char *msg; - asprintf(&msg, "Not enough peers arrived. Expected 2 got %ld", - xbt_dynar_length(group)); amok_pm_group_shutdown("bandwidth"); - xbt_die(msg); + xbt_die("Not enough peers arrived. Expected 2 got %ld", + xbt_dynar_length(group)); } h1 = *(xbt_peer_t *) xbt_dynar_get_ptr(group, 0); h2 = *(xbt_peer_t *) xbt_dynar_get_ptr(group, 1); @@ -105,23 +109,25 @@ int maestro(int argc, char *argv[]) h2 = h_temp; } - INFO2("Contact %s:%d", h1->name, h1->port); + XBT_INFO("Contact %s:%d", h1->name, h1->port); peer = gras_socket_client(h1->name, h1->port); - INFO0("Test the BW between me and one of the sensors"); - amok_bw_test(peer, buf_size, msg_size, msg_amount, min_duration, &sec, &bw); - INFO7 - ("Experience between me and %s:%d (initially %d msgs of %d bytes, maybe modified to fill the pipe at least %.1fs) took %f sec, achieving %f kb/s", - h1->name, h1->port, msg_amount, msg_size, min_duration, sec, - ((double) bw) / 1024.0); - - INFO4("Test the BW between %s:%d and %s:%d", h1->name, h1->port, h2->name, - h2->port); - amok_bw_request(h1->name, h1->port, h2->name, h2->port, buf_size, msg_size, - msg_amount, min_duration, &sec, &bw); - INFO6 - ("Experience between %s:%d and %s:%d took took %f sec, achieving %f kb/s", - h1->name, h1->port, h2->name, h2->port, sec, ((double) bw) / 1024.0); + XBT_INFO("Test the BW between me and one of the sensors"); + amok_bw_test(peer, buf_size, msg_size, msg_amount, min_duration, &sec, + &bw); + XBT_INFO + ("Experience between me and %s:%d (initially %d msgs of %d bytes, maybe modified to fill the pipe at least %.1fs) took %f sec, achieving %f kb/s", + h1->name, h1->port, msg_amount, msg_size, min_duration, sec, + ((double) bw) / 1024.0); + + XBT_INFO("Test the BW between %s:%d and %s:%d", h1->name, h1->port, + h2->name, h2->port); + amok_bw_request(h1->name, h1->port, h2->name, h2->port, buf_size, + msg_size, msg_amount, min_duration, &sec, &bw); + XBT_INFO + ("Experience between %s:%d and %s:%d took took %f sec, achieving %f kb/s", + h1->name, h1->port, h2->name, h2->port, sec, + ((double) bw) / 1024.0); /* Game is over, friends */ amok_pm_group_shutdown("bandwidth");