def test_get_job_array(): session_name = generate_random_string() js = JobSession(session_name) ja = js.run_bulk_jobs({'remote_command': '/bin/sleep', 'args': ['5']}, 1, 10, 5, 2) ja2 = js.get_job_array(ja.id) assert (ja.id == ja2.id) print('\nRetrieved job array: %s' % ja2)
def test_run_bulk_jobs(): session_name = generate_random_string() js = JobSession(session_name) ja = js.run_bulk_jobs({'remote_command': '/bin/sleep', 'args': ['5']}, 1, 10, 5, 2) jl = ja.job_list ja_id = ja.id assert (len(ja_id) > 0) assert (len(jl) == 2) print('\nSubmitted job array id: %s' % ja_id)
def test_get_template(): session_name = generate_random_string() js = JobSession(session_name) job_name = 'drmaa2python-%s' % generate_random_string() d = {'remote_command': '/bin/sleep', 'args': ['5'], 'job_name': job_name, 'output_path': '/dev/null', 'join_files': True} ja = js.run_bulk_jobs(d, 1, 10, 3, 2) jt = ja.get_template() assert (jt.job_name == job_name) print('\nGet template: %s' % (jt))
def test_wait_any_started(): session_name = generate_random_string() js = JobSession(session_name) ja = js.run_bulk_jobs({'remote_command': '/bin/sleep', 'args': ['5']}, 1, 10, 5, 2) jl = ja.job_list jl_ids = list(map(lambda j: j.id, jl)) print('\nWaiting on start of any job with id from %s' % jl_ids) j = js.wait_any_started(jl) assert (j.id in jl_ids) print('Job %s started' % j)
def test_get_job_array(): session_name = generate_random_string() js = JobSession(session_name) d = { 'remote_command': '/bin/sleep', 'args': ['5'], 'output_path': '/dev/null', 'join_files': True } ja = js.run_bulk_jobs(d, 1, 10, 5, 2) ja2 = js.get_job_array(ja.id) assert (ja.id == ja2.id) print('\nRetrieved job array: %s' % ja2)
def test_wait_all_terminated(): session_name = generate_random_string() js = JobSession(session_name) ja = js.run_bulk_jobs({'remote_command': '/bin/sleep', 'args': ['5']}, 1, 10, 5, 2) jl = ja.job_list jl_ids = list(map(lambda j: j.id, jl)) jl_ids.sort() print('\nWaiting on termination of all jobs: %s' % jl_ids) jl2 = js.wait_all_terminated(jl) jl2_ids = list(map(lambda j: j.id, jl2)) jl2_ids.sort() assert (jl_ids == jl2_ids) print('Jobs terminated: ' % jl2_ids)
def test_get_template(): session_name = generate_random_string() js = JobSession(session_name) job_name = 'drmaa2python-%s' % generate_random_string() ja = js.run_bulk_jobs( { 'remote_command': '/bin/sleep', 'args': ['5'], 'job_name': job_name }, 1, 10, 3, 2) jt = ja.get_template() assert (jt.job_name == job_name) print('\nGet template: %s' % (jt))
def test_terminate(): session_name = generate_random_string() js = JobSession(session_name) d = {'remote_command': '/bin/sleep', 'args': ['10'], 'output_path': '/dev/null', 'join_files': True} ja = js.run_bulk_jobs(d, 1, 10, 3, 2) ja.terminate() j_list = ja.job_list failed_jobs = [] for j in j_list: s, ss = j.get_state() if s == JobState.FAILED: failed_jobs.append(j) assert (len(failed_jobs) > 0) print('\nTerminate job array: %s' % (ja))
def test_run_bulk_jobs(): session_name = generate_random_string() js = JobSession(session_name) d = { 'remote_command': '/bin/sleep', 'args': ['5'], 'output_path': '/dev/null', 'join_files': True } ja = js.run_bulk_jobs(d, 1, 10, 5, 2) jl = ja.job_list ja_id = ja.id assert (len(ja_id) > 0) assert (len(jl) == 2) print('\nSubmitted job array id: %s' % ja_id)
def test_wait_any_terminated(): session_name = generate_random_string() js = JobSession(session_name) d = { 'remote_command': '/bin/sleep', 'args': ['5'], 'output_path': '/dev/null', 'join_files': True } ja = js.run_bulk_jobs(d, 1, 10, 5, 2) jl = ja.job_list jl_ids = list(map(lambda j: j.id, jl)) print('\nWaiting on termination of any job with id from %s' % jl_ids) j = js.wait_any_terminated(jl) assert (j.id in jl_ids) print('Job %s terminated' % j)
def test_wait_all_started(): session_name = generate_random_string() js = JobSession(session_name) d = { 'remote_command': '/bin/sleep', 'args': ['5'], 'output_path': '/dev/null', 'join_files': True } ja = js.run_bulk_jobs(d, 1, 10, 5, 2) jl = ja.job_list jl_ids = list(map(lambda j: j.id, jl)) jl_ids.sort() print('\nWaiting on start of all jobs: %s' % jl_ids) jl2 = js.wait_all_started(jl) jl2_ids = list(map(lambda j: j.id, jl2)) jl2_ids.sort() assert (jl_ids == jl2_ids) print('Jobs started: ' % jl2_ids)
def test_hold_and_release(): session_name = generate_random_string() js = JobSession(session_name) d = {'remote_command': '/bin/sleep', 'args': ['5'], 'output_path': '/dev/null', 'join_files': True} ja = js.run_bulk_jobs(d, 1, 10, 3, 2) ja.hold() held_jobs = [] j_list = ja.job_list for j in j_list: s, ss = j.get_state() if s.name.endswith('HELD'): held_jobs.append(j) assert (len(held_jobs) > 0) print('\nHold job array: %s' % (ja)) ja.release() for j in held_jobs: s, ss = j.get_state() assert (not s.name.endswith('HELD')) print('Release job array: %s' % (ja))
def test_suspend_and_resume(): session_name = generate_random_string() js = JobSession(session_name) d = {'remote_command': '/bin/sleep', 'args': ['5'], 'output_path': '/dev/null', 'join_files': True} ja = js.run_bulk_jobs(d, 1, 10, 3, 2) j_list = ja.job_list js.wait_any_started(j_list) ja.suspend() suspended_jobs = [] for j in j_list: s, ss = j.get_state() if s == JobState.SUSPENDED: suspended_jobs.append(j) assert (len(suspended_jobs) > 0) print('\nSuspend job array: %s' % (ja)) ja.resume() for j in suspended_jobs: s, ss = j.get_state() assert (s != JobState.SUSPENDED) print('Resume job array: %s' % (ja))
# you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ########################################################################### # ___INFO__MARK_END__ from drmaa2 import JobSession if __name__ == '__main__': js = JobSession('js-01') print('Created job session: %s' % js.name) d = {'remote_command': '/bin/sleep', 'args': ['10']} print('Running job array using dictionary: %s' % d) begin_index = 1 end_index = 10 step = 5 max_parallel = 2 ja = js.run_bulk_jobs(d, begin_index, end_index, step, max_parallel) print('Submitted job array: %s' % ja) print('Waiting for all jobs to terminate') jl = ja.job_list jl2 = js.wait_all_started(jl) print('Jobs terminated: %s' % jl2)