def test_periodic_release_hook_select_with_place(self): ''' We should respect the user's -l place= when modifying group''' job = Job(Hold_Types="so", select="2:ncpus=2", place="scatter:excl") q = Queue() with MockRunCmd() as run_cmd: _initialize_run_cmd(run_cmd, q, job, "scatter:excl:group=group_id") submit_hook.periodic_release_hook({}, Event())
def test_periodic_release_hook_select(self): '''No queue defaults, no user defined group, add group=group_id''' job = Job(Hold_Types="so", select="2:ncpus") q = Queue() with MockRunCmd() as run_cmd: _initialize_run_cmd(run_cmd, q, job, "group=group_id") submit_hook.periodic_release_hook({}, Event())
def test_chunked(self): ''' There shouldn't be anything special about a chunked expression.''' job = Job(Hold_Types="so", select="2:ncpus=2+1:mem=20g") q = Queue() with MockRunCmd() as run_cmd: _initialize_run_cmd(run_cmd, q, job, expected_qalter_place="group=group_id") # nothing to hold submit_hook.periodic_release_hook({}, Event())
def test_periodic_release_hook_missing_select(self): ''' We convert simple qsubs into select=1:ncpus=1 - note we should set the default to free in this case''' job = Job(Hold_Types="so") q = Queue() q.resources_default["place"] = "scatter:excl" with MockRunCmd() as run_cmd: _initialize_run_cmd( run_cmd, q, job, expected_qalter_place="scatter:excl:group=group_id") # nothing to hold submit_hook.periodic_release_hook({}, Event())
def test_periodic_release_hook_nodes_excl_default(self): ''' We should respect the user's -l place= when modifying group - pack:shared is not overridden by queue default scatter:excl''' job = Job(Hold_Types="so", select="2:ncpus=2", place="pack:shared") q = Queue(place="scatter:excl") with MockRunCmd() as run_cmd: _initialize_run_cmd(run_cmd, q, job, "pack:shared:group=group_id") submit_hook.periodic_release_hook({}, Event()) # not that arrangement and exclusivity go together here job = Job(Hold_Types="so", select="2:ncpus=2", place="pack") q = Queue(place="scatter:excl") with MockRunCmd() as run_cmd: _initialize_run_cmd(run_cmd, q, job, "pack:group=group_id") submit_hook.periodic_release_hook({}, Event())
def test_two_queues(self): hpc_job = Job(job_id=1, Hold_Types="so", queue="workq", select="2:ncpus=2+1:mem=20g") hpcq = Queue("workq") # we don't pick up on defaults from the queue, so just set ungrouped on both. htc_job = Job(job_id=2, Hold_Types="so", queue="htcq", ungrouped=True) htcq = Queue("htcq", ungrouped=True, place="pack") with MockRunCmd() as run_cmd: _initialize_run_cmd( run_cmd, [hpcq, htcq], [hpc_job, htc_job], # we won't bother running qalter because ungrouped==true expected_qalter_place=["group=group_id", None]) # nothing to hold submit_hook.periodic_release_hook({}, Event())
def test_periodic_release_hook_nodes(self): ''' We will ignore -lplace=scatter because the user picked -l nodes=, which auto-converts to -l place=scatter''' job = Job(Hold_Types="so", select="2:ncpus=2", place="scatter", nodes="2:ppn=2") q = Queue(place="scatter:excl") with MockRunCmd() as run_cmd: _initialize_run_cmd(run_cmd, q, job, "scatter:excl:group=group_id") submit_hook.periodic_release_hook({}, Event()) job = Job(Hold_Types="so", select="2:ncpus=2", place="scatter", nodes="2:ppn=2") q = Queue(place="pack:shared") with MockRunCmd() as run_cmd: _initialize_run_cmd(run_cmd, q, job, "pack:shared:group=group_id") submit_hook.periodic_release_hook({}, Event()) job = Job(Hold_Types="so", select="2:ncpus=2", place="scatter", nodes="2:ppn=2") q = Queue(place="excl") with MockRunCmd() as run_cmd: _initialize_run_cmd(run_cmd, q, job, "excl:group=group_id") submit_hook.periodic_release_hook({}, Event())
def test_periodic_release_hook_select_with_grouping(self): ''' User picked group=host so we should respect that''' job = Job(Hold_Types="so", select="2:ncpus=2", place="scatter:excl:group=host") q = Queue(place="pack") with MockRunCmd() as run_cmd: # no qalter, user defined all 3 place arguments _initialize_run_cmd(run_cmd, q, job, expected_qalter_place=None) submit_hook.periodic_release_hook({}, Event()) job = Job(Hold_Types="so", select="2:ncpus=2", place="group=host") q = Queue(place="scatter:excl") with MockRunCmd() as run_cmd: _initialize_run_cmd( run_cmd, q, job, expected_qalter_place="scatter:excl:group=host") submit_hook.periodic_release_hook({}, Event()) job = Job(Hold_Types="so", select="2:ncpus=2", place="scatter:group=host") q = Queue(place="scatter:excl") with MockRunCmd() as run_cmd: # no qalter, user defined arrangement and grouping arguments _initialize_run_cmd(run_cmd, q, job, expected_qalter_place=None) submit_hook.periodic_release_hook({}, Event()) job = Job(Hold_Types="so", select="2:ncpus=2", place="excl:group=host") q = Queue(place="scatter:excl") with MockRunCmd() as run_cmd: # no qalter, user defined sharing and grouping arguments _initialize_run_cmd(run_cmd, q, job, expected_qalter_place=None) submit_hook.periodic_release_hook({}, Event())