rethrowing them with a value indicating which host died
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2546
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
/* The request */
bw_request_t request;
bw_res_t result;
/* The request */
bw_request_t request;
bw_res_t result;
request=xbt_new0(s_bw_request_t,1);
request->buf_size=buf_size;
request->exp_size=exp_size;
request->msg_size=msg_size;
request->min_duration = min_duration;
request=xbt_new0(s_bw_request_t,1);
request->buf_size=buf_size;
request->exp_size=exp_size;
request->msg_size=msg_size;
request->min_duration = min_duration;
request->peer.name = (char*)to_name;
request->peer.port = to_port;
request->peer.name = (char*)to_name;
request->peer.port = to_port;
sock = gras_socket_client(from_name,from_port);
sock = gras_socket_client(from_name,from_port);
DEBUG4("Ask for a BW test between %s:%d and %s:%d", from_name,from_port, to_name,to_port);
DEBUG4("Ask for a BW test between %s:%d and %s:%d", from_name,from_port, to_name,to_port);
gras_msg_rpccall(sock,20*60,gras_msgtype_by_name("BW request"), &request, &result);
gras_msg_rpccall(sock,20*60,gras_msgtype_by_name("BW request"), &request, &result);
+ }CATCH(e){
+ if (e.value==1) THROW1(0,1,"%s",to_name);
+ THROW1(0,0,"%s",from_name);
+ }
if (sec)
*sec=result->sec;
if (bw)
if (sec)
*sec=result->sec;
if (bw)
bw_request_t request = *(bw_request_t*)payload;
bw_res_t result = xbt_new0(s_bw_res_t,1);
gras_socket_t peer,asker;
bw_request_t request = *(bw_request_t*)payload;
bw_res_t result = xbt_new0(s_bw_res_t,1);
gras_socket_t peer,asker;
asker=gras_msg_cb_ctx_from(ctx);
VERB4("Asked by %s:%d to conduct a bw XP with %s:%d",
gras_socket_peer_name(asker),gras_socket_peer_port(asker),
asker=gras_msg_cb_ctx_from(ctx);
VERB4("Asked by %s:%d to conduct a bw XP with %s:%d",
gras_socket_peer_name(asker),gras_socket_peer_port(asker),
request->peer.name,request->peer.port);
peer = gras_socket_client(request->peer.name,request->peer.port);
request->peer.name,request->peer.port);
peer = gras_socket_client(request->peer.name,request->peer.port);
amok_bw_test(peer,
request->buf_size,request->exp_size,request->msg_size,
request->min_duration,
&(result->sec),&(result->bw));
amok_bw_test(peer,
request->buf_size,request->exp_size,request->msg_size,
request->min_duration,
&(result->sec),&(result->bw));
gras_msg_rpcreturn(240,ctx,&result);
gras_msg_rpcreturn(240,ctx,&result);
+ }CATCH(e){THROW1(0,1,"%s",request->host.name);
+ }
gras_os_sleep(1);
gras_socket_close(peer); /* FIXME: it should be blocking in RL until everything is sent */
free(request->peer.name);
gras_os_sleep(1);
gras_socket_close(peer); /* FIXME: it should be blocking in RL until everything is sent */
free(request->peer.name);
#include "amok/Bandwidth/bandwidth_private.h"
#include "gras/Msg/msg_private.h" /* FIXME: This mucks with contextes to answer RPC directly */
#include "amok/Bandwidth/bandwidth_private.h"
#include "gras/Msg/msg_private.h" /* FIXME: This mucks with contextes to answer RPC directly */
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(amok_bw_sat,amok_bw,"Everything concerning the SATuration part of the amok_bw module");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(amok_bw_sat,amok_bw,"Everything concerning the SATuration part of the amok_bw module");
const char* to_name,unsigned int to_port,
unsigned int msg_size, double duration) {
gras_socket_t sock;
const char* to_name,unsigned int to_port,
unsigned int msg_size, double duration) {
gras_socket_t sock;
sat_request_t request = xbt_new(s_sat_request_t,1);
sat_request_t request = xbt_new(s_sat_request_t,1);
+ INFO2("from_name %s // to_name %s \n",from_name,to_name);
sock = gras_socket_client(from_name,from_port);
request->peer.name = (char*)to_name;
sock = gras_socket_client(from_name,from_port);
request->peer.name = (char*)to_name;
request->duration=duration;
request->msg_size=msg_size;
request->duration=duration;
request->msg_size=msg_size;
gras_msg_rpccall(sock,60,gras_msgtype_by_name("amok_bw_sat start"),&request, NULL);
gras_msg_rpccall(sock,60,gras_msgtype_by_name("amok_bw_sat start"),&request, NULL);
+ }CATCH(e){
+ if (e.value==1)
+ THROW1(0,1,"%s",to_name);
+ THROW1(0,0,"%s",from_name);
+ }
free(request);
gras_socket_close(sock);
}
free(request);
gras_socket_close(sock);
}
static int amok_bw_cb_sat_start(gras_msg_cb_ctx_t ctx, void *payload){
sat_request_t request = *(sat_request_t*)payload;
gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
static int amok_bw_cb_sat_start(gras_msg_cb_ctx_t ctx, void *payload){
sat_request_t request = *(sat_request_t*)payload;
gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
VERB4("Asked by %s:%d to start a saturation to %s:%d",
gras_socket_peer_name(expeditor),gras_socket_peer_port(expeditor),
request->peer.name,request->peer.port);
gras_msg_rpcreturn(60,ctx, NULL);
VERB4("Asked by %s:%d to start a saturation to %s:%d",
gras_socket_peer_name(expeditor),gras_socket_peer_port(expeditor),
request->peer.name,request->peer.port);
gras_msg_rpcreturn(60,ctx, NULL);
amok_bw_saturate_begin(request->peer.name,request->peer.port,
amok_bw_saturate_begin(request->peer.name,request->peer.port,
request->msg_size, request->duration,
NULL,NULL);
request->msg_size, request->duration,
NULL,NULL);
+
+ }CATCH(e){
+ THROW1(0,1," can not connect %s ",((request)->peer.name));
+ }
+
free(request->peer.name);
free(request->peer.name);
free(request);
return 1;
}
free(request);
return 1;
}
- gras_socket_t peer_cmd = gras_socket_client(to_name, to_port);
+ gras_socket_t peer_cmd; //= gras_socket_client(to_name, to_port);
gras_msg_cb_ctx_t ctx;
gras_socket_t meas;
gras_msg_cb_ctx_t ctx;
gras_socket_t meas;
request->peer.name = NULL;
request->peer.port = 0;
request->peer.name = NULL;
request->peer.port = 0;
/* Size autodetection on need */
if (!msg_size) {
double bw;
/* Size autodetection on need */
if (!msg_size) {
double bw;
}
/* Launch the saturation */
}
/* Launch the saturation */
ctx = gras_msg_rpc_async_call(peer_cmd, 60,
gras_msgtype_by_name("amok_bw_sat begin"),
&request);
ctx = gras_msg_rpc_async_call(peer_cmd, 60,
gras_msgtype_by_name("amok_bw_sat begin"),
&request);
meas=gras_socket_client_ext( to_name, request->peer.port,
0 /*bufsize: auto*/,
1 /*meas: true*/);
meas=gras_socket_client_ext( to_name, request->peer.port,
0 /*bufsize: auto*/,
1 /*meas: true*/);
free(request);
gras_socket_close(peer_cmd);
free(request);
gras_socket_close(peer_cmd);