void * status_job__( void * arg ) {
  const int usleep_time = 10000;
  arg_pack_type * arg_pack = arg_pack_safe_cast( arg );
  job_type * job = job_safe_cast( arg_pack_iget_ptr( arg_pack , 0 ) );
  job_queue_type * queue = arg_pack_iget_ptr( arg_pack , 1 );
  char * run_file = util_alloc_filename( job->run_path , "RUNNING" , NULL);

  while (true) {
    if (job->queue_index >= 0) {
      job_status_type status;
      if (util_is_file(run_file)) {
        status = job_queue_iget_job_status(queue, job->queue_index);
        if (util_is_file(run_file))
          test_assert_true( (status == JOB_QUEUE_RUNNING) || (status == JOB_QUEUE_SUBMITTED) );
      }
      status = job_queue_iget_job_status(queue, job->queue_index);
      if (status == JOB_QUEUE_SUCCESS)
        break;
    }
    usleep( usleep_time );
  }

  free( run_file );
  return NULL;
}
Exemple #2
0
bool job_queue_manager_job_waiting( const job_queue_manager_type * manager , int job_index) {
  job_status_type status = job_queue_iget_job_status( manager->job_queue , job_index );
  if (status & JOB_QUEUE_WAITING_STATUS)
    return true;
  else
    return false;
}
Exemple #3
0
bool job_queue_manager_job_complete( const job_queue_manager_type * manager , int job_index) {
  job_status_type status = job_queue_iget_job_status( manager->job_queue , job_index );
  if (status & JOB_QUEUE_COMPLETE_STATUS)
    return true;
  else
    return false;
}
Exemple #4
0
bool job_queue_manager_job_success( const job_queue_manager_type * manager , int job_index) {
  job_status_type status = job_queue_iget_job_status( manager->job_queue , job_index );
  if (status == JOB_QUEUE_SUCCESS)
    return true;
  else
    return false;
}
Exemple #5
0
bool job_queue_manager_job_failed( const job_queue_manager_type * manager , int job_index) {
    job_status_type status = job_queue_iget_job_status( manager->job_queue , job_index );
    if (status == JOB_QUEUE_FAILED)
      return true;
    else
      return false;
}
Exemple #6
0
bool job_queue_manager_job_running( const job_queue_manager_type * manager , int job_index) {
  job_status_type status = job_queue_iget_job_status( manager->job_queue , job_index );
  if (status == JOB_QUEUE_RUNNING)
    return true;
  else
    return false;
}
Exemple #7
0
void job_queue_set_auto_job_stop_time(job_queue_type * queue) {
  time_t sum_run_time_succeded_jobs = 0;
  int num_succeded_jobs = 0;

  for (int i = 0; i < job_list_get_size( queue->job_list ); i++) {
    if (job_queue_iget_job_status(queue,i) == JOB_QUEUE_SUCCESS) {
      sum_run_time_succeded_jobs += difftime(job_queue_iget_sim_end(queue, i), job_queue_iget_sim_start(queue, i));
      num_succeded_jobs++;
    }
  }

  if (num_succeded_jobs > 0) {
    time_t avg_run_time_succeded_jobs = sum_run_time_succeded_jobs / num_succeded_jobs;
    time_t stop_time = time(NULL) + (avg_run_time_succeded_jobs * 0.25);
    job_queue_set_job_stop_time(queue, stop_time);
  }
}