예제 #1
0
def test_complex_shortcut_parsing() -> None:
    ge_env = common_ge_env()
    qsub1 = mock_driver.MockQsub(ge_env)
    qsub1.qsub("-l m_mem_free=2g -l exclusive=true -q htc.q sleep.sh")
    qsub2 = mock_driver.MockQsub(ge_env)
    qsub2.qsub("-l mfree=2g -l excl=true -q  htc.q sleep.sh")
    longform = qsub1.parse_jobs()
    shortform = qsub2.parse_jobs()
    assert longform
    assert "mfree" not in str(longform)
    assert longform[0].to_dict() == shortform[0].to_dict()
예제 #2
0
def common_cluster(
    qsub_commands: List[str],
    previous_dcalc: Optional[DemandCalculator] = None,
) -> DemandCalculator:
    ge_env = common_ge_env(previous_dcalc)
    # allq = new_gequeue("all.q", "@allhosts", ["make"], [], complexes=complexes, parallel_envs=pes)

    qsub = mock_driver.MockQsub(ge_env)
    for qsub_cmd in qsub_commands:
        qsub.qsub(qsub_cmd)

    jobs = qsub.parse_jobs()

    def _bindings() -> MockClusterBinding:
        if previous_dcalc:
            return previous_dcalc.node_mgr.cluster_bindings
        mock_bindings = MockClusterBinding()
        mock_bindings.add_nodearray("hpc", {}, max_placement_group_size=5)
        mock_bindings.add_bucket("hpc", "Standard_F4", 100, 100)

        mock_bindings.add_nodearray("htc", {}, max_count=10)
        mock_bindings.add_bucket("htc", "Standard_F4", 10, 10)
        return mock_bindings

    mdriver = mock_driver.MockGridEngineDriver(ge_env)

    ge_env.jobs.extend(jobs)
    config = mdriver.preprocess_config(mock_config(_bindings()))
    return autoscaler.calculate_demand(
        config,
        ge_env,
        mdriver,
        CONTEXT,
        node_history=NullNodeHistory(),
    )
예제 #3
0
def _job(qsub_cmd: str, job_id: int) -> Job:
    ge_env = common_ge_env()
    qsub = mock_driver.MockQsub(ge_env)
    qsub.current_job_number = job_id
    qsub.qsub(qsub_cmd)
    qsub.qstat()
    return qsub.parse_jobs()[0]