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; }
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; }
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; }
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; }
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; }
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; }
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); } }