Exemplo n.º 1
0
END_TEST




START_TEST(decrement_queued_jobs_test)
  {
  users.lock();
  users.clear();
  user_info *ui = (user_info *)calloc(1,sizeof(user_info));

  ui->user_name = strdup("tom");
  ui->num_jobs_queued = 1;

  users.insert(ui,ui->user_name);
  users.unlock();

  fail_unless(decrement_queued_jobs(&users, (char *)"bob") == THING_NOT_FOUND, "decremented for non-existent user");
  fail_unless(decrement_queued_jobs(&users, (char *)"tom") == 0, "couldn't decrement for tom?");
  fail_unless(get_num_queued(&users, "tom") == 0, "didn't actually decrement tom");
  
  fail_unless(decrement_queued_jobs(&users, (char *)"tom") == 0, "couldn't decrement for tom?");
  fail_unless(get_num_queued(&users, "tom") == 0, "didn't actually decrement tom");

  }
Exemplo n.º 2
0
END_TEST



START_TEST(get_num_queued_test)
  {
  unsigned int queued;
  users.lock();
  users.clear();
  users.unlock();
  user_info ui;

  ui.user_name = (char *)"tom";
  ui.num_jobs_queued = 1;

  users.lock();
  users.insert(&ui,ui.user_name);
  users.unlock();

  queued = get_num_queued(&users, "bob");
  fail_unless(queued == 0, "incorrect queued count for bob");

  queued = get_num_queued(&users, "tom");
  fail_unless(queued == 1, "incorrect queued count for tom");
  }
Exemplo n.º 3
0
END_TEST



START_TEST(increment_queued_jobs_test)
  {
  job pjob;

  memset(&pjob, 0, sizeof(pjob));
  users.lock();
  users.clear();

  user_info *ui = (user_info *)calloc(1,sizeof(user_info));

  ui->user_name = strdup("tom");
  ui->num_jobs_queued = 1;

  users.insert(ui,ui->user_name);

  ui = (user_info *)calloc(1,sizeof(user_info));

  ui->user_name = strdup("bob");
  ui->num_jobs_queued = 0;

  users.insert(ui,ui->user_name);
  users.unlock();

  fail_unless(increment_queued_jobs(&users, (char *)"tom", &pjob) == 0, "can't increment queued jobs");
  fail_unless(increment_queued_jobs(&users, (char *)"bob", &pjob) == 0, "can't increment queued jobs");
  // after 1 increment the count should be 2 because initialize_user_info() starts out with tom at 
  // 1 instead of 0, as a normal program would start. Its done this way for the decrement code.
  fail_unless(get_num_queued(&users, "tom") == 2, "didn't actually increment tom 1");
  fail_unless(increment_queued_jobs(&users, strdup("tom@napali"), &pjob) == 0);
  fail_unless(get_num_queued(&users, "tom") == 3, "didn't actually increment tom 2");
  }
Exemplo n.º 4
0
int  can_queue_new_job(

  char *user_name,
  job  *pjob)

  {
  long         max_queuable = -1;
  int          can_queue_another = TRUE;
  unsigned int num_queued = 0;
  unsigned int num_to_add;

  get_svr_attr_l(SRV_ATR_MaxUserQueuable, &max_queuable);

  if (max_queuable >= 0)
    {
    num_to_add = count_jobs_submitted(pjob);
    num_queued = get_num_queued(&users, user_name);

    if (num_queued + num_to_add > (unsigned int)max_queuable)
      can_queue_another = FALSE;
    }
  
  return(can_queue_another);
  } /* END can_queue_new_job() */