Exemplo n.º 1
0
def main():
    db = JobDB()

    banner("info")
    db.info()

    db.start()

    # db.ps()

    db.connect()

    db.clear()

    # Insert two jobs - one with only a name and one with input and output files
    job0_id = db.insert("job0")
    job1_id = db.insert("job1", "input1", "output1")

    # Print job IDs of both added jobs
    print job0_id
    print job1_id

    # Get all jobs with given parameters
    # Available key names at this time are:
    #   _id
    #   job_name
    #   input_filename
    #   output_filename
    jobs = db.find_jobs("job_name", "job1")

    # Print out all returned jobs
    for job in jobs:
        print job

    # Query by job ID to return a single job
    singleJob = list(db.find_jobs("_id", job0_id))

    # Print out the first job in the list
    print singleJob[0]

    # Print out count of all jobs
    print db.count()

    # Print out count of jobs given query parameters
    print db.count("job_name", "job1")

    # Show updating a job attribute
    print "\nORIGINAL JOB:"
    singleJob = list(db.find_jobs("_id", job1_id))
    print singleJob[0]

    # Update the input filename
    db.update_job_attribute(job1_id, "input_filename", "new_input_file")

    # Print out the updated job
    print "\nUPDATED JOB:"
    singleJob = list(db.find_jobs("_id", job1_id))
    print singleJob[0]

    # Add a job using add()
    job = {"job_name": "job25"}

    db.add(job)

    # Show modify() functionality
    job = {"job_name": "job30", "input_filename": "file1"}

    db.modify(job)

    print "\nORIGINAL JOB"
    for job in db.find_jobs():
        print job

    job = {"job_name": "job30", "input_filename": "file2"}

    db.modify(job)

    print "MODIFIED JOB"
    for job in db.find_jobs():
        print job

    # Show job statuses functionality
    print "\nJOB STATUSES:"
    db.job_status_stats()

    print "\nJOB STATUSES WITH JOBS PRINTED:"
    db.job_status_stats(True)

    # SHOW FIND_JOBS_WITH_FILE
    job100_id = db.insert("job100")
    job101_id = db.insert("job101", "file100", "file200")
    job102_id = db.insert("job102", "file200", "file300")

    inputs, outputs = db.find_jobs_with_file("file200")

    print("\nJobs with matching file in input:")
    for job in inputs:
        print job

    print("\nJobs with matching file in output:")
    for job in outputs:
        print job

    # Delete all jobs
    db.clear()

    # SHOW ADD_FROM_YAML
    db.add_from_yaml("job_example.yaml")

    for job in db.find_jobs():
        print job

    # Delete all jobs
    db.clear()
    print "Database cleared."
    print "Job count: " + str(db.count())

    db.stop()
Exemplo n.º 2
0
def main():
    db = JobDB()

    banner("info")
    db.info()

    db.start()

    # db.ps()

    db.connect()

    db.clear()

    # Insert two jobs - one with only a name and one with input and output files
    job0_id = db.insert("job0")
    job1_id = db.insert("job1", "input1", "output1")

    # Print job IDs of both added jobs
    print job0_id
    print job1_id

    # Get all jobs with given parameters
    # Available key names at this time are:
    #   _id
    #   job_name
    #   input_filename
    #   output_filename
    jobs = db.find_jobs("job_name", "job1")

    # Print out all returned jobs
    for job in jobs:
        print job

    # Query by job ID to return a single job
    singleJob = list(db.find_jobs("_id", job0_id))

    # Print out the first job in the list
    print singleJob[0]

    # Print out count of all jobs
    print db.count()

    # Print out count of jobs given query parameters
    print db.count("job_name", "job1")

    # Show updating a job attribute
    print "\nORIGINAL JOB:"
    singleJob = list(db.find_jobs("_id", job1_id))
    print singleJob[0]

    # Update the input filename
    db.update_job_attribute(job1_id, "input_filename", "new_input_file")

    # Print out the updated job
    print "\nUPDATED JOB:"
    singleJob = list(db.find_jobs("_id", job1_id))
    print singleJob[0]

    # Add a job using add()
    job = {"job_name": "job25"}

    db.add(job)

    # Show modify() functionality
    job = {"job_name": "job30", "input_filename": "file1"}

    db.modify(job)

    print "\nORIGINAL JOB"
    for job in db.find_jobs():
        print job

    job = {"job_name": "job30", "input_filename": "file2"}

    db.modify(job)

    print "MODIFIED JOB"
    for job in db.find_jobs():
        print job

    # Show job statuses functionality
    print "\nJOB STATUSES:"
    db.job_status_stats()

    print "\nJOB STATUSES WITH JOBS PRINTED:"
    db.job_status_stats(True)

    # SHOW FIND_JOBS_WITH_FILE
    job100_id = db.insert("job100")
    job101_id = db.insert("job101", "file100", "file200")
    job102_id = db.insert("job102", "file200", "file300")

    inputs, outputs = db.find_jobs_with_file("file200")

    print("\nJobs with matching file in input:")
    for job in inputs:
        print job

    print("\nJobs with matching file in output:")
    for job in outputs:
        print job

    # Delete all jobs
    db.clear()

    # SHOW ADD_FROM_YAML
    db.add_from_yaml("job_example.yaml")

    for job in db.find_jobs():
        print job

    # Delete all jobs
    db.clear()
    print "Database cleared."
    print "Job count: " + str(db.count())

    db.stop()
Exemplo n.º 3
0
class TestJobDB:
    def setup(self):
        # HEADING()
        self.db = JobDB()

    def teardown(self):
        # HEADING()
        pass

    def test_001_start(self):
        """
        tests if the mongo db can be started
        :return:
        """
        HEADING()
        self.db.start()
        up = self.db.isup()
        result = up
        assert result

    def test_002_up(self):
        """
        tests if the mongo db can be started
        :return:
        """
        HEADING()
        up = self.db.isup()
        print(up)
        self.db.stop()
        down = not self.db.isup()
        self.db.start()
        assert up and down

    def test_003_pid(self):
        """
        tests if the mongo db can be started
        :return:
        """
        HEADING()
        pid = self.db.pid()
        print(pid)
        assert True

    def test_004_connect(self):
        """
        tests if a mongo db can be connected to
        :return:
        """
        HEADING()
        self.db.connect()

        result = True
        assert result

    def test_005_clear(self):
        """
        tests clearing all jobs from the db
        :return:
        """
        HEADING()
        db = self.db
        db.connect()

        db.clear()

        # assert not os.path.isfile(path_expand("~/.cloudmesh/pbs/pbs.db"))
        assert (len(db) == 0)

    def test_006_add(self):
        """
        tests adding jobs to the db
        :return:
        """
        HEADING()
        db = self.db

        count = 5

        db.connect()

        db.delete_jobs()

        for id in range(0, count):
            job = db.insert("job" + str(id))

        assert len(db) == count

    def test_007_delete(self):
        """
        tests deleting a single job from the db
        :return:
        """
        HEADING()
        db = self.db

        db.connect()
        print("AAA")
        before_count = len(db)
        print("CCC", len(db))
        job = db.insert("deleteme")
        print("DDD", len(db))

        job = db.delete_jobs("job_name", "deleteme")
        print("EEE")
        after_count = len(db)
        print("FFF", len(db))
        assert (before_count - after_count == 0)

    def test_008_modify(self):
        """
        tests modifying a single job in the db
        :return:
        """
        HEADING()
        db = self.db

        db.connect()

        job = {"job_name": "modifyme", "input_filename": "file1"}

        db.add(job)

        originalFilename = self.db.find_jobs("job_name",
                                             "modifyme")[0]["input_filename"]

        job = {"job_name": "modifyme", "input_filename": "file2"}

        db.modify(job)

        newFilename = self.db.find_jobs("job_name",
                                        "modifyme")[0]["input_filename"]

        assert (originalFilename != newFilename)

    def test_010_info(self):
        """
        prints the info about the db
        :return:
        """
        HEADING()
        db = self.db

        db.connect()
        db.info()
        pass

    def test_011_len(self):
        """
        tests modifying a single job in the db
        :return:
        """
        HEADING()
        db = self.db

        db.connect()
        count = len(db)
        print(count)
        assert count == 6

    def test_012_yaml_load(self):
        """
        tests adding jobs from a YAML file
        :return:
        """
        HEADING()
        db = self.db
        db.connect()

        # Clear all jobs currently in the database to ensure a correct final assertion
        db.clear()

        # Add the jobs outlined in the YAML file
        db.add_from_yaml("etc/jobs.yaml")

        count_fgrep = len(Shell.fgrep("input:", "etc/jobs.yaml").split("\n"))

        # Assert that the correct number jobs have been added
        assert (db.count() == count_fgrep)

    def test_013_find_files(self):
        """
        tests searching for a file
            the file being searched for exists in 3 files: twice as input and twice as output
        :return:
        """
        HEADING()
        db = self.db

        db.connect()

        # Clear all jobs currently in the database to ensure a correct final assertion
        db.clear()

        # Add the jobs outlined in the YAML file
        db.add_from_yaml("etc/jobs.yaml")
        inputs, outputs = db.find_jobs_with_file("in1.txt")

        # Assert that the lengths of the inputs and outputs arrays are correct
        count_fgrep = len(
            Shell.fgrep("in1.txt", "etc/jobs.yaml").strip().split("\n"))
        assert (len(inputs) == count_fgrep)

    def test_14_jobid(self):
        HEADING()
        db = self.db

        db.connect()

        db.set_jobid(11)

        a = db.get_jobid()
        db.incr_jobid()
        b = db.get_jobid()

        print(a, b)
        assert b == a + 1

    def test_15_jobscript(self):
        HEADING()
        db = self.db
        db.connect()

        name = "test1"
        contents = "hallo"

        db.add_script(name, contents)
        db.add_script("test2", "other")
        script = db.get_script(name)

        print("Script:", script)
        print("Content:", contents)

        db.write_script(name, "/tmp/script.txt")
        what = Shell.cat("/tmp/script.txt")

        assert contents == what
        assert contents == script

    def test_999_stop(self):
        """
        tests if the mongo db can be shutdown
        :return:
        """
        HEADING()
        self.db.stop()
        result = True
        assert result
Exemplo n.º 4
0
class TestJobDB:

    def setup(self):
        # HEADING()
        self.db = JobDB()

    def teardown(self):
        # HEADING()
        pass

    def test_001_start(self):
        """
        tests if the mongo db can be started
        :return:
        """
        HEADING()
        self.db.start()
        up = self.db.isup()
        result = up
        assert result
        
    def test_002_up(self):
        """
        tests if the mongo db can be started
        :return:
        """
        HEADING()
        up = self.db.isup()
        print (up)
        self.db.stop()
        down = not self.db.isup()
        self.db.start()
        assert up and down

    def test_003_pid(self):
        """
        tests if the mongo db can be started
        :return:
        """
        HEADING()
        pid = self.db.pid()
        print (pid)
        assert True

    def test_004_connect(self):
        """
        tests if a mongo db can be connected to
        :return:
        """
        HEADING()
        self.db.connect()

        result = True
        assert result

    def test_005_clear(self):
        """
        tests clearing all jobs from the db
        :return:
        """
        HEADING()
        db = self.db
        db.connect()

        db.clear()

        # assert not os.path.isfile(path_expand("~/.cloudmesh/pbs/pbs.db"))
        assert(len(db) == 0)

    def test_006_add(self):
        """
        tests adding jobs to the db
        :return:
        """
        HEADING()
        db = self.db

        count = 5

        db.connect()

        db.delete_jobs()

        for id in range(0,count):
            job = db.insert("job" + str(id))

        assert len(db) == count

    def test_007_delete(self):
        """
        tests deleting a single job from the db
        :return:
        """
        HEADING()
        db = self.db

        db.connect()
        print ("AAA")
        before_count = len(db)
        print ("CCC", len(db))
        job = db.insert("deleteme")
        print ("DDD", len(db))

        job = db.delete_jobs("job_name", "deleteme")
        print ("EEE")
        after_count = len(db)
        print ("FFF", len(db))
        assert(before_count - after_count == 0)

    def test_008_modify(self):
        """
        tests modifying a single job in the db
        :return:
        """
        HEADING()
        db = self.db

        db.connect()

        job = {"job_name": "modifyme", "input_filename":"file1"}

        db.add(job)

        originalFilename = self.db.find_jobs("job_name", "modifyme")[0]["input_filename"]

        job = {"job_name": "modifyme", "input_filename":"file2"}

        db.modify(job)

        newFilename = self.db.find_jobs("job_name", "modifyme")[0]["input_filename"]

        assert(originalFilename != newFilename)

    def test_010_info(self):
        """
        prints the info about the db
        :return:
        """
        HEADING()
        db = self.db

        db.connect()
        db.info()
        pass

    def test_011_len(self):
        """
        tests modifying a single job in the db
        :return:
        """
        HEADING()
        db = self.db

        db.connect()
        count = len(db)
        print (count)
        assert count == 6

    def test_012_yaml_load(self):
        """
        tests adding jobs from a YAML file
        :return:
        """
        HEADING()
        db = self.db
        db.connect()

        # Clear all jobs currently in the database to ensure a correct final assertion
        db.clear()

        # Add the jobs outlined in the YAML file
        db.add_from_yaml("etc/jobs.yaml")

        count_fgrep = len(Shell.fgrep("input:", "etc/jobs.yaml").split("\n"))

        # Assert that the correct number jobs have been added
        assert(db.count() == count_fgrep)

    def test_013_find_files(self):
        """
        tests searching for a file
            the file being searched for exists in 3 files: twice as input and twice as output
        :return:
        """
        HEADING()
        db = self.db

        db.connect()

        # Clear all jobs currently in the database to ensure a correct final assertion
        db.clear()

        # Add the jobs outlined in the YAML file
        db.add_from_yaml("etc/jobs.yaml")
        inputs, outputs = db.find_jobs_with_file("in1.txt")

        # Assert that the lengths of the inputs and outputs arrays are correct
        count_fgrep = len(Shell.fgrep("in1.txt", "etc/jobs.yaml").strip().split("\n"))
        assert(len(inputs) == count_fgrep)


    def test_14_jobid(self):
        HEADING()
        db = self.db

        db.connect()

        db.set_jobid(11)

        a = db.get_jobid()
        db.incr_jobid()
        b = db.get_jobid()

        print (a, b)
        assert b == a + 1

    def test_15_jobscript(self):
        HEADING()
        db = self.db
        db.connect()

        name = "test1"
        contents = "hallo"

        db.add_script(name, contents)
        db.add_script("test2", "other")
        script = db.get_script(name)

        print ("Script:", script)
        print ("Content:", contents)

        db.write_script(name, "/tmp/script.txt")
        what = Shell.cat("/tmp/script.txt")

        assert contents == what
        assert contents == script



    def test_999_stop(self):
        """
        tests if the mongo db can be shutdown
        :return:
        """
        HEADING()
        self.db.stop()
        result = True
        assert result