コード例 #1
0
def test_env_var():
    expected = {"name": "ENV_CONFIG", "value": "ABC"}
    config = TaskConfig()
    config.set_container_env(env_vars={"ENV_CONFIG": "ABC"})
    assert (
        config.as_dict()["overrides"]["containerOverrides"][0]["environment"][0]
        == expected
    )
コード例 #2
0
def test_task_run(aws_credentials):
    # https://github.com/spulec/moto/blob/master/tests/test_ecs/test_ecs_boto3.py#L1088
    ecs_init()
    config = TaskConfig()
    config.set(cluster="abc", taskDefinition="xyz")
    config.task_count = 14
    Task.retry_delay = 0
    task = Task(config)
    task_count, api_calls_count = task.run()
    task.wait()
    assert task.task_arns
    assert task.task_ids
    assert task_count == 14
    assert api_calls_count == 2
コード例 #3
0
def test_custom_task_params(tmpdir):
    p = pathlib.Path(os.getcwd()).joinpath("task-params.json")
    p.touch()
    p.write_text('{"cluster": "123a"}')
    config = TaskConfig(task_params_file="task-params.json")
    assert config.cluster == "123a"
    p.unlink()
コード例 #4
0
def test_task_wait_failure(get_task_status, run, aws_credentials):
    get_task_status.return_value = "STOPPED"
    config = TaskConfig()
    Task.retry_delay = 0
    task = Task(config)
    task.task_arns = ["abc123"]
    task.run()
    with pytest.raises(RuntimeError):
        task.wait()
コード例 #5
0
def test_task_count_batch_size(count, expected):
    config = TaskConfig()
    config.set(cluster="abc", taskDefinition="xyz")
    config.task_count = count
    task = Task(config)
    assert task.get_batch_sizes() == expected
コード例 #6
0
def test_init_ok():
    config = TaskConfig()
    assert config.cluster is None
    assert config.task_definition is None
コード例 #7
0
def test_empty_capacity_provider():
    config = TaskConfig()
    config.set_capacity_provider(None)
    assert "capacityProviderStrategy" not in config.as_dict()
コード例 #8
0
def test_capacity_provider():
    config = TaskConfig()
    config.set_capacity_provider("abc")
    assert config.as_dict()["capacityProviderStrategy"][0]["capacityProvider"] == "abc"
コード例 #9
0
def test_set_repo():
    config = TaskConfig()
    config.set_repository("Organization/my-repo")
    assert config.repository == "my-repo"
コード例 #10
0
def test_set_ok():
    config = TaskConfig()
    config.set(group="TEST", unknownParam=123)
    assert config.as_dict()["group"] == "TEST"
    assert "unknownParam" not in config.as_dict()
コード例 #11
0
def start():
    env = os.environ
    input = Input(dict(env))  # pylint: disable=redefined-builtin
    task_params_file = env.get("INPUT_TASK_PARAMS_FILE")
    config = TaskConfig(task_params_file)
    config.set_repository(env["GITHUB_REPOSITORY"])
    config.set(
        **input.as_dict(),
        group=config.repository,
        startedBy=env.get("GITHUB_ACTOR", "UNKNOWN"),
    )
    config.task_count = int(env.get("INPUT_TASK_COUNT", 1))

    logger.info(
        f"Start task execution with definition '{config.task_definition}' on cluster '{config.cluster}'"
    )
    config.set_container_env({
        "GITHUB_PERSONAL_TOKEN": input["githubPat"],
        "GITHUB_OWNER": env["GITHUB_REPOSITORY_OWNER"],
        "GITHUB_REPOSITORY": config.repository,
        "RUNNER_NAME": env["GITHUB_JOB"],
    })
    config.set_capacity_provider(input.get("capacityProvider"))
    logger.info("Ready to execute with config:")
    logger.info(config.as_dict())

    task = Task(config)
    task.run()
    if input.should_wait:
        task.wait()
        newline = "\n"
        logger.info(
            f"The following tasks were launched: \n{newline.join(task.task_arns)}"
        )

    logger.info("Task(s) successfuly created.")
    logger.info(f"You can follow it on: {task.url}")