END_TEST START_TEST(populate_range_string_from_job_reservation_info_test) { std::string range_str; job_reservation_info jri; memset(&jri, 0, sizeof(jri)); for (int i = 0; i < 8; i++) jri.est.add_execution_slot(); jri.est.mark_as_used(0); jri.est.mark_as_used(3); jri.est.mark_as_used(4); jri.est.mark_as_used(5); jri.node_id = 0; populate_range_string_from_slot_tracker(jri.est, range_str); fail_unless(range_str == "0,3-5"); jri.est.mark_as_free(0); populate_range_string_from_slot_tracker(jri.est, range_str); fail_unless(range_str == "3-5", range_str.c_str()); jri.est.mark_as_used(0); jri.est.mark_as_free(4); populate_range_string_from_slot_tracker(jri.est, range_str); fail_unless(range_str == "0,3,5"); jri.est.mark_as_used(1); populate_range_string_from_slot_tracker(jri.est, range_str); fail_unless(range_str == "0-1,3,5", range_str.c_str()); jri.est.mark_as_free(3); populate_range_string_from_slot_tracker(jri.est, range_str); fail_unless(range_str == "0-1,5"); }
int encode_jobs( pbs_attribute *pattr, /*struct pbs_attribute being encoded */ tlist_head *ph, /*head of a list of "svrattrl" structs which are to be returned*/ const char *aname, /*pbs_attribute's name */ const char *rname, /*resource's name (null if none) */ int mode, /*mode code, unused here */ int perm) /* only used for resources */ { FUNCTION_TIMER svrattrl *pal; struct pbsnode *pnode; bool first = true; std::string job_str; std::string range_str; if (pattr == NULL) { return (-1); } if (!(pattr->at_flags & ATR_VFLAG_SET) || !(pattr->at_val.at_jinfo)) { return(0); /* nothing to report back */ } pnode = pattr->at_val.at_jinfo; for (int i = 0; i < (int)pnode->nd_job_usages.size(); i++) { const job_usage_info &jui = pnode->nd_job_usages[i]; populate_range_string_from_slot_tracker(jui.est, range_str); if (first == false) job_str += ","; job_str += range_str; job_str += "/"; job_str += job_mapper.get_name(jui.internal_job_id); first = false; } if (first == true) { /* no jobs currently on this node */ return(0); } pal = attrlist_create(aname, rname, job_str.length() + 1); snprintf(pal->al_value, job_str.length() + 1, "%s", job_str.c_str()); pal->al_flags = ATR_VFLAG_SET; append_link(ph, &pal->al_link, pal); return(0); /* success */ } /* END encode_jobs() */