Exemplo n.º 1
0
    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 )
Exemplo n.º 2
0
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"])