Пример #1
0
def testSplitting(repository, LEN):
    # top level splitting
    mj = Job()
    jj = []
    for i in range(LEN):
        sj = Job()
        sj._setParent(mj)
        sj.application.exe = "/bin/myexe" + str(i)
        sj.application.args = 1000 * ["/ab" + str(i)]
        jj.append(sj)
    mj.subjobs = jj

    # check registration
    repository.registerJobs([mj])
    for s in mj.subjobs:
        assert s.master is mj
        assert s.id != None

    # check ci/co
    # repository.commitJobs([j._impl])
    mid = mj.id
    j = repository.checkoutJobs([mid])[0]
    assert len(j.subjobs) == LEN

    # another ci/co check
    j.subjobs[1].application.exe = "/bin/ls"
    j.application.exe = "/bin/pwd"
    repository.commitJobs([j])
    j = repository.checkoutJobs([mid])[0]

    assert j.subjobs[1].application.exe == "/bin/ls"
    assert j.application.exe == "/bin/pwd"

    # check set status
    status_list = [
        ((mid, j.subjobs[1].id), "running"),
        ((mid, j.subjobs[2].id), "running"),
        ((mid, j.subjobs[3].id), "running"),
    ]
    repository.setJobsStatus(status_list)

    # check get status
    md = repository.getJobsStatus(map(lambda x: x[0], status_list))
    for i in range(len(md)):
        assert md[i][0] == status_list[i][0]
        assert md[i][1] == status_list[i][1]

    # check getting job status in another way
    ttt = {"table_path": repository._getSubJobPath((mid,)), "attributes": {}}
    md = repository.getJobsStatus(ttt)
    for i in range(len(status_list)):
        if md[i][0] == status_list[i][0]:
            assert md[i][1] == status_list[i][1]

    # check delete job
    repository.deleteJobs([mj.id])
Пример #2
0
def getSplitJob(LEN = 10):
    # top level splitting
    mj = Job()
    jj = []
    for i in range(LEN):
        sj = Job()
        sj.application.exe = '/bin/myexe' + str(i)
        sj.application.args = ['/'+ ARG_LEN*'abc' + str(i)]
        sj._setParent(mj)
        jj.append(sj)
    mj.subjobs = jj
    return mj