static void usage(char *me)
{
- fprintf(stderr,"usage: %s [-m bkserver] [-x] [-j dg_jobid] [-s source_id] [-n num_subjobs [-S]] [-l jdl_file] [-e seed]\n", me);
+ fprintf(stderr,"usage: %s [-m bkserver] [-x] [-j dg_jobid] [-s source_id] [-n num_subjobs [-S][-C]] [-l jdl_file] [-e seed]\n", me);
}
int main(int argc, char *argv[])
{
char *src = NULL,*job = NULL,*server = NULL,*seq,*jdl = NULL, *seed = NULL;
int lbproxy = 0;
- int done = 0,num_subjobs = 0,reg_subjobs = 0,i;
+ int done = 0,num_subjobs = 0,reg_subjobs = 0,i, collection = 0;
edg_wll_Context ctx;
edg_wlc_JobId jobid,*subjobs;
opterr = 0;
do {
- switch (getopt(argc,argv,"xs:j:m:n:Sl:e:")) {
+ switch (getopt(argc,argv,"xs:j:m:n:SCl:e:")) {
case 'x': lbproxy = 1; break;
case 's': src = (char *) strdup(optarg); break;
case 'j': job = (char *) strdup(optarg); break;
case 'm': server = strdup(optarg); break;
case 'n': num_subjobs = atoi(optarg); break;
case 'S': if (num_subjobs>0) { reg_subjobs = 1; break; }
+ case 'C': if (num_subjobs>0) { collection = 1; break; }
case 'l': jdl = (char *) strdup(optarg); break;
case 'e': seed = strdup(optarg); break;
case '?': usage(argv[0]); exit(EINVAL);
edg_wll_SetParam(ctx,EDG_WLL_PARAM_SOURCE,edg_wll_StringToSource(src));
if (lbproxy) {
if (edg_wll_RegisterJobProxy(ctx,jobid,
- num_subjobs?EDG_WLL_REGJOB_DAG:EDG_WLL_REGJOB_SIMPLE,
+ num_subjobs?(collection?EDG_WLL_REGJOB_COLLECTION:EDG_WLL_REGJOB_DAG):EDG_WLL_REGJOB_SIMPLE,
jdl ? jdl : "blabla", "NNNSSSS",
num_subjobs,seed,&subjobs))
{
}
} else {
if (edg_wll_RegisterJobSync(ctx,jobid,
- num_subjobs?EDG_WLL_REGJOB_DAG:EDG_WLL_REGJOB_SIMPLE,
+ num_subjobs?(collection?EDG_WLL_REGJOB_COLLECTION:EDG_WLL_REGJOB_DAG):EDG_WLL_REGJOB_SIMPLE,
jdl ? jdl : "blabla", "NNNSSSS",
num_subjobs,seed,&subjobs))
{
if (states[i].jobtype == EDG_WLL_STAT_SIMPLE) {
printf(" %s .... %s %s\n", id, st, (states[i].state==EDG_WLL_JOB_DONE) ? edg_wll_done_codeToString(states[i].done_code) : "" );
}
- else if (states[i].jobtype == EDG_WLL_STAT_DAG) {
- printf("DAG %s .... %s %s\n", id, st, (states[i].state==EDG_WLL_JOB_DONE) ? edg_wll_done_codeToString(states[i].done_code) : "");
+ else if ((states[i].jobtype == EDG_WLL_STAT_DAG) ||
+ (states[i].jobtype == EDG_WLL_STAT_COLLECTION)) {
+ printf("%s %s .... %s %s\n", (states[i].jobtype==EDG_WLL_STAT_DAG)?"DAG ":"COLL",id, st, (states[i].state==EDG_WLL_JOB_DONE) ? edg_wll_done_codeToString(states[i].done_code) : "");
for (j=0; states[j].state != EDG_WLL_JOB_UNDEF; j++) {
if (states[j].parent_job) {
char *par_id = edg_wlc_JobIdUnparse(states[j].parent_job);
&js->pub.parent_job);
rep(js->pub.network_server, e->regJob.ns);
js->pub.children_num = e->regJob.nsubjobs;
- if (e->regJob.jobtype == EDG_WLL_REGJOB_DAG
- || e->regJob.jobtype == EDG_WLL_REGJOB_PARTITIONED) {
- js->pub.jobtype = EDG_WLL_STAT_DAG;
+ switch (e->regJob.jobtype) {
+ case EDG_WLL_REGJOB_DAG:
+ case EDG_WLL_REGJOB_PARTITIONED:
+ js->pub.jobtype = EDG_WLL_STAT_DAG;
+ break;
+ case EDG_WLL_REGJOB_COLLECTION:
+ js->pub.jobtype = EDG_WLL_STAT_COLLECTION;
+ break;
+ default:
+ break;
}
rep(js->pub.seed, e->regJob.seed);
}