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");
  }
示例#2
0
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() */