def testrun(args, parser): """TESTRUN Reserve pages, run pages and optionally upload pages """ emop_submit = EmopSubmit(args.config_path) # Do not run testrun subcommand if not in a valid cluster job environment # This prevents accidentally running resource intensive program on login nodes if not emop_submit.scheduler.is_job_environment(): print("Can only use testrun subcommand from within a cluster job environment") sys.exit(1) # Reserve pages equal to --num-pages proc_id = emop_submit.reserve(num_pages=args.testrun_num_pages, r_filter=args.filter) if not proc_id: print("Failed to reserve pages") sys.exit(1) # Run reserved pages emop_run = EmopRun(args.config_path, proc_id) run_status = emop_run.run(force=True) if not run_status: sys.exit(1) # Exit if --no-upload if args.testrun_no_upload: sys.exit(0) # Upload results emop_upload = EmopUpload(args.config_path) upload_status = emop_upload.upload_proc_id(proc_id=proc_id) if not upload_status: sys.exit(1) sys.exit(0)
def run(args, parser): """run command The run command is intended to be executed on a compute node. This command performs the actual work of OCRing pages based on the supplied --proc-id value. By default the run command will not run if it detects the PROC_ID has already run, but this can be modified with --force-run. This is useful when a batch job has been requeued. """ emop_run = EmopRun(args.config_path, args.proc_id) # Do not use run subcommand if not in a valid cluster job environment # This prevents accidentally running resource intensive program on login nodes if not emop_run.scheduler.is_job_environment(): print("Can only use run subcommand from within a cluster job environment") sys.exit(1) run_status = emop_run.run(force=args.force_run) if run_status: sys.exit(0) else: sys.exit(1)