X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b511b8e4a7d720584d9d9a72b874709869bc10d0..365737b0c6d06b7d405041e092eb3bd6b67c4559:/examples/amok/bandwidth/bandwidth.c diff --git a/examples/amok/bandwidth/bandwidth.c b/examples/amok/bandwidth/bandwidth.c index 148a86ceca..5f1b7205bc 100644 --- a/examples/amok/bandwidth/bandwidth.c +++ b/examples/amok/bandwidth/bandwidth.c @@ -23,19 +23,32 @@ int sensor (int argc,char *argv[]); int sensor (int argc,char *argv[]) { gras_socket_t mysock; - gras_socket_t master; + gras_socket_t master=NULL; + int connection_try = 10; + xbt_ex_t e; gras_init(&argc, argv); amok_bw_init(); - amok_hm_init(); + amok_pm_init(); mysock = gras_socket_server_range(3000,9999,0,0); INFO1("Sensor starting (on port %d)",gras_os_myport()); - gras_os_sleep(0.5); /* let the master get ready */ - master = gras_socket_client_from_string(argv[1]); + 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 */ + } + } - amok_hm_group_join(master,"bandwidth"); - amok_hm_mainloop(60); + amok_pm_group_join(master,"bandwidth",-1); + amok_pm_mainloop(60); gras_socket_close(mysock); gras_socket_close(master); @@ -53,18 +66,18 @@ int maestro (int argc,char *argv[]); int maestro(int argc,char *argv[]) { double sec, bw; int buf_size=32 *1024; - int exp_size=512 *1024; int msg_size=512 *1024; + int msg_amount = 1; double min_duration = 1; gras_socket_t peer; gras_socket_t mysock; - xbt_peer_t h1,h2; + xbt_peer_t h1,h2,h_temp; xbt_dynar_t group; gras_init(&argc, argv); amok_bw_init(); - amok_hm_init(); + amok_pm_init(); INFO0("Maestro starting"); if (argc != 2) { @@ -72,7 +85,7 @@ int maestro(int argc,char *argv[]) { return 1; } mysock=gras_socket_server(atoi(argv[1])); - group=amok_hm_group_new("bandwidth"); + group=amok_pm_group_new("bandwidth"); INFO0("Wait for peers for 5 sec"); gras_msg_handleall(5); /* friends, we're ready. Come and play */ @@ -80,30 +93,37 @@ int maestro(int argc,char *argv[]) { char *msg; asprintf(&msg,"Not enough peers arrived. Expected 2 got %ld", xbt_dynar_length(group)); + amok_pm_group_shutdown("bandwidth"); xbt_die(msg); } - h1 = *(xbt_peer_t*) xbt_dynar_get_ptr(group, 0); + h1 = *(xbt_peer_t*)xbt_dynar_get_ptr(group, 0); h2 = *(xbt_peer_t*)xbt_dynar_get_ptr(group, 1); + /* sort peers in right order to keep output right */ + if (strcmp(h1->name,h2->name) < 0 || h1->port > h2->port) { + h_temp = h1; + h1 = h2; + h2 = h_temp; + } INFO2("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,exp_size,msg_size,min_duration,&sec,&bw); - INFO6("Experience between me and %s:%d (%d bytes in msgs of %d bytes) took %f sec, achieving %f kb/s", + 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, - exp_size,msg_size, + 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,exp_size,msg_size,min_duration,&sec,&bw); + 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); /* Game is over, friends */ - amok_hm_group_shutdown ("bandwidth"); + amok_pm_group_shutdown ("bandwidth"); gras_socket_close(mysock); gras_exit();