def test_complete(self): with TestAreaContext("json_from_forward_model_NO_DATA_ROOT"): with open("jobs.json", "w") as f: f.write(JSON_STRING_NO_DATA_ROOT) jobm = JobManager() jobm.complete() st = ForwardModelStatus.load(os.getcwd()) self.assertTrue( isinstance(st.end_time, datetime.datetime)) self.assertTrue( isinstance(st.start_time, datetime.datetime)) self.assertTrue( st.end_time >= st.start_time ) dt = datetime.datetime.now() - st.start_time self.assertTrue( dt.total_seconds() < 5 )
def main(argv): """FIXME the argument argv is ignored.""" if len(sys.argv) >= 2: run_path = sys.argv[1] if not os.path.exists(run_path): sys.stderr.write( "*****************************************************************\n" ) sys.stderr.write( "** FATAL Error: Could not find directory: %s \n" % run_path) sys.stderr.write("** CWD: %s\n" % os.getcwd()) sys.stderr.write( "*****************************************************************\n" ) sys.exit(-1) os.chdir(run_path) ################################################################# # 1. Modify the sys.path variable to include the runpath # 2. Import the jobs module. ################################################################# random.seed() check_version() job_manager = JobManager(error_url=LOG_URL, log_url=LOG_URL) if len(sys.argv) <= 2: # Normal batch run. # Set this to true to ensure that empty job lists come out successfully. OK = True for job in job_manager: job_manager.startStatus(job) (OK, exit_status, error_msg) = run_one(job_manager, job) job_manager.completeStatus(exit_status, error_msg, job=job) if not OK: job_manager.exit(job, exit_status, error_msg) job_manager.complete() if OK: job_manager.createOKFile() else: #Interactive run for job_name in sys.argv[2:]: # This is totally unpredictable if there more jobs with # the same name. if job_name in job_manager: job = job_manager[job_name] print("Running job: %s ... " % job_name) sys.stdout.flush() (OK, exit_status, error_msg) = run_one(job_manager, job) if OK: print("OK") else: print("failed ....") print( "-----------------------------------------------------------------" ) if job.get("stderr"): print("Error:%s " % error_msg) if os.path.exists(job["stderr"]): fileH = open(job["stderr"], "r") for line in fileH.readlines(): print(line), fileH.close() print( "-----------------------------------------------------------------" ) sys.exit() else: print("Job: %s does not exist. Available jobs:" % job_name) for j in job_manager.job_list: print(" %s" % j["name"])