END_TEST START_TEST(insert_create_inspect_test) { job pjob; strcpy(pjob.ji_qs.ji_jobid, jobids[0]); pjob.ji_wattr[JOB_ATR_reservation_id].at_val.at_str = rsvids[0]; pjob.ji_wattr[JOB_ATR_exec_host].at_val.at_str = eh1; initialize_alps_reservations(); fail_unless(create_alps_reservation(&pjob) == 0, "couldn't create the reservation"); fail_unless(alps_reservations.rh_alps_rsvs->num == 1, "incorrect count of reservations"); pjob.ji_wattr[JOB_ATR_reservation_id].at_val.at_str = NULL; fail_unless(create_alps_reservation(&pjob) == 0, "create_alps_reservation failed with empty job"); fail_unless(alps_reservations.rh_alps_rsvs->num == 1, "incorrect count after empty job"); strcpy(pjob.ji_qs.ji_jobid, jobids[0]); pjob.ji_wattr[JOB_ATR_reservation_id].at_val.at_str = rsvids[1]; pjob.ji_wattr[JOB_ATR_exec_host].at_val.at_str = eh1; fail_unless(create_alps_reservation(&pjob) == 0, "couldn't create the reservation"); strcpy(pjob.ji_qs.ji_jobid, jobids[0]); pjob.ji_wattr[JOB_ATR_reservation_id].at_val.at_str = rsvids[2]; pjob.ji_wattr[JOB_ATR_exec_host].at_val.at_str = eh1; fail_unless(create_alps_reservation(&pjob) == 0, "couldn't create the reservation"); strcpy(pjob.ji_qs.ji_jobid, jobids[0]); pjob.ji_wattr[JOB_ATR_reservation_id].at_val.at_str = rsvids[3]; pjob.ji_wattr[JOB_ATR_exec_host].at_val.at_str = eh1; fail_unless(create_alps_reservation(&pjob) == 0, "couldn't create the reservation"); fail_unless(already_recorded(rsvids[0]) == 1, "rsv_id 0 not found"); fail_unless(already_recorded(rsvids[1]) == 1, "rsv_id 0 not found"); fail_unless(already_recorded(rsvids[2]) == 1, "rsv_id 0 not found"); fail_unless(already_recorded(rsvids[3]) == 1, "rsv_id 0 not found"); fail_unless(already_recorded("tom") == 0, "missing rsv_id somehow found"); fail_unless(already_recorded("tommy") == 0, "missing rsv_id somehow found"); fail_unless(is_orphaned(rsvids[0]) == 1, "no job but not orphaned?"); fail_unless(is_orphaned(rsvids[1]) == 0, "job 1 returned but orphaned?"); fail_unless(is_orphaned(rsvids[2]) == 0, "job 2 returned but orphaned?"); fail_unless(is_orphaned(rsvids[3]) == 1, "completed job but not orphaned?"); fail_unless(remove_alps_reservation("00") == THING_NOT_FOUND, "found something that doesn't exist"); fail_unless(remove_alps_reservation(rsvids[0]) == 0, "couldn't remove reservation 1"); fail_unless(remove_alps_reservation(rsvids[1]) == 0, "couldn't remove reservation 2"); fail_unless(remove_alps_reservation(rsvids[2]) == 0, "couldn't remove reservation 3"); fail_unless(remove_alps_reservation(rsvids[3]) == 0, "couldn't remove reservation 4"); }
int record_reservation( struct pbsnode *pnode, char *rsv_id) { struct pbssubn *sub_node; job *pjob; int found_job = FALSE; for (sub_node = pnode->nd_psn; sub_node != NULL; sub_node = sub_node->next) { if (sub_node->jobs != NULL) { if ((pjob = svr_find_job(sub_node->jobs->jobid, TRUE)) != NULL) { pjob->ji_wattr[JOB_ATR_reservation_id].at_val.at_str = strdup(rsv_id); pjob->ji_wattr[JOB_ATR_reservation_id].at_flags = ATR_VFLAG_SET; create_alps_reservation(pjob); found_job = TRUE; unlock_ji_mutex(pjob, __func__, "1", LOGLEVEL); break; } } } if (found_job == FALSE) return(-1); return(PBSE_NONE); } /* END record_reservation() */