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])
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