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)
Example #3
0
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)
Example #5
0
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))
Example #8
0
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))
Example #9
0
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)
Example #10
0
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)
Example #11
0
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)
Example #12
0
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))
Example #13
0
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)