示例#1
0
def test_circuit3(client):
    """
    Tests that when stopping a container with a docker host that's not accessible,
    the circuit is open and a HostUnavailableError is raised
    """

    with client.application.app_context():
        client.application.config["DOCKER_CIRCUIT_BREAKER_MAX_FAILS"] = 1

        task, job, execution = JobExecutionFixture.new_defaults(
            docker_host="localhost",
            docker_port=4567,
            container_id=str(uuid4()))
        pool = DockerPool(([None, ["localhost:4567"], 2], ))
        executor = Executor(client.application, pool)

        expect(executor.get_circuit("localhost:4567").current_state).to_equal(
            "closed")

        with expect.error_to_happen(HostUnavailableError):
            executor.stop_job(task, job, execution)

        expect(executor.get_circuit("localhost:4567").current_state).to_equal(
            "open")
示例#2
0
def test_stop3(client):
    """
    Tests stopping a job raises HostUnavailableError
    """

    app = client.application

    with app.app_context():
        container_mock = ContainerFixture.new_with_status(
            name="fastlane-job-1234", container_id="fastlane-job-1234")
        _, pool_mock, client_mock = PoolFixture.new_defaults(
            r"test[-].+", max_running=1, containers=[container_mock])

        client_mock.containers.get.side_effect = requests.exceptions.ConnectionError(
            "failed")

        task, job, execution = JobExecutionFixture.new_defaults(
            container_id="fastlane-job-1234")

        executor = Executor(app, pool_mock)

        msg = "Connection to host host:1234 failed with error: failed"
        with expect.error_to_happen(HostUnavailableError, message=msg):
            executor.stop_job(task, job, execution)
示例#3
0
def test_stop2(client):
    """
    Tests stopping a job stops fails if container is not in metadata
    """

    app = client.application

    with app.app_context():
        _, pool_mock, _ = PoolFixture.new_defaults(r"test[-].+",
                                                   max_running=1,
                                                   containers=[])

        task, job, execution = JobExecutionFixture.new_defaults()
        del execution.metadata["container_id"]

        executor = Executor(app, pool_mock)

        result = executor.stop_job(task, job, execution)
        expect(result).to_be_false()
示例#4
0
def test_stop1(client):
    """
    Tests stopping a job stops the container in docker
    """

    app = client.application

    with app.app_context():
        container_mock = ContainerFixture.new_with_status(
            name="fastlane-job-1234", container_id="fastlane-job-1234")
        _, pool_mock, _ = PoolFixture.new_defaults(r"test[-].+",
                                                   max_running=1,
                                                   containers=[container_mock])

        task, job, execution = JobExecutionFixture.new_defaults(
            container_id="fastlane-job-1234")

        executor = Executor(app, pool_mock)

        result = executor.stop_job(task, job, execution)
        container_mock.stop.assert_called()
        expect(result).to_be_true()