From: mquinson Date: Thu, 23 Jun 2005 21:04:21 +0000 (+0000) Subject: let the maestro explictly kill the sensors so that they don't die too early; reduce... X-Git-Tag: v3.3~3945 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/62638966a33659c83f42d3a2169bd3dfa3f313f6?hp=2dadef9e08cdd2b5c1a57c7e9d063f519f23c7c3 let the maestro explictly kill the sensors so that they don't die too early; reduce the size of the experiment; test the bw_request now that it works git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1410 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/examples/bandwidth/bandwidth.c b/examples/bandwidth/bandwidth.c index 6eef5a2e36..59033b68fb 100644 --- a/examples/bandwidth/bandwidth.c +++ b/examples/bandwidth/bandwidth.c @@ -20,8 +20,17 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(Bandwidth,"Messages specific to this example"); /* Global private data */ typedef struct { gras_socket_t sock; + int done; } s_sensor_data_t,*sensor_data_t; +static int sensor_cb_quit(gras_socket_t expeditor, + void *payload_data) { + sensor_data_t globals=(sensor_data_t)gras_userdata_get(); + + globals->done = 1; + return 1; +} + /* Function prototypes */ int sensor (int argc,char *argv[]); @@ -38,13 +47,19 @@ int sensor (int argc,char *argv[]) { ERROR1("Sensor: Error %s encountered while opening the server socket",xbt_error_name(errcode)); return 1; } - - errcode=gras_msg_handle(60.0); - if (errcode != no_error) { - ERROR1("Sensor: Error '%s' while handling message",xbt_error_name(errcode)); - gras_socket_close(g->sock); - return errcode; - } + g->done = 0; + + gras_msgtype_declare("quit",NULL); + gras_cb_register(gras_msgtype_by_name("quit"),&sensor_cb_quit); + + while (! g->done ) { + errcode=gras_msg_handle(60.0); + if (errcode != no_error) { + ERROR1("Sensor: Error '%s' while handling message",xbt_error_name(errcode)); + gras_socket_close(g->sock); + return errcode; + } + } gras_socket_close(g->sock); return 0; @@ -67,10 +82,8 @@ int maestro(int argc,char *argv[]) { maestro_data_t g; double sec, bw; int buf_size=32; -// int exp_size=64; - int exp_size=1024 * 1024; + int exp_size=1024*50; int msg_size=1024; -// int msg_size=64; gras_socket_t peer; gras_init(&argc, argv, NULL); @@ -97,19 +110,25 @@ int maestro(int argc,char *argv[]) { return 1; } -/* if ((errcode=amok_bw_request(argv[1],atoi(argv[2]),argv[3],atoi(argv[4]), - buf_size,exp_size,msg_size,&sec,&bw))) {*/ - - if ((errcode=amok_bw_test(peer,buf_size,exp_size,msg_size,&sec,&bw))) { - ERROR1("maestro: Error %s encountered while doing the test",xbt_error_name(errcode)); - return 1; - } - + INFO0("Test the BW between me and one of the sensors"); + TRY(amok_bw_test(peer,buf_size,exp_size,msg_size,&sec,&bw)); INFO6("maestro: Experience between me and %s:%d (%d kb in msgs of %d kb) took %f sec, achieving %f kb/s", argv[1],atoi(argv[2]), exp_size,msg_size, sec,bw); + INFO0("Test the BW between the two sensors"); + TRY(amok_bw_request(argv[1],atoi(argv[2]),argv[3],atoi(argv[4]), + buf_size,exp_size,msg_size,&sec,&bw)); + + /* ask sensors to quit */ + gras_msgtype_declare("quit",NULL); + TRY(gras_msg_send(peer,gras_msgtype_by_name("quit"), NULL)); + gras_socket_close(peer); + TRY(gras_socket_client(argv[3],atoi(argv[4]),&peer)); + TRY(gras_msg_send(peer,gras_msgtype_by_name("quit"), NULL)); + gras_socket_close(peer); + gras_socket_close(g->sock); return 0; }