Ejemplo n.º 1
0
def test_sibling_network(docker_client, create_and_pull, host_ip):
    service: PostgreSQLService

    with temp_network(docker_client) as network, \
            PostgreSQLService.run(docker_client) as service, \
            connect(network, service) as service_alias:
        with service.connection() as connection:
            connection.execute("""
            CREATE TABLE foo (x INTEGER, y TEXT);
            INSERT INTO foo VALUES (1,'one'), (2, 'two'), (3, 'three'), (10, 'ten');
            """)

        container = create_and_pull(
            docker_client,
            "postgres:latest",
            f'psql -h {service_alias[0]} -p {POSTGRES_INTERNAL_PORT} -U {service.user} -d {service.default_db}'
            " -c 'DELETE FROM foo WHERE x < 3'",
            environment={'PGPASSWORD': service.password},
            detach=True,
        )
        with connect(network, container):
            container.start()
            return_status = container.wait()
            assert return_status["StatusCode"] == 0

        with service.connection() as connection:
            results = connection.execute("SELECT y from foo")
        vals = [row['y'] for row in results]
        assert vals == ['three', 'ten']
Ejemplo n.º 2
0
def test_remote_connection_string(docker_client, create_and_pull):
    with temp_network(docker_client) as network, \
            PostgreSQLService.run(docker_client) as service, \
            connect(network, service) as service_alias:
        with service.connection() as connection:
            connection.execute("""
            CREATE TABLE foo (x INTEGER, y TEXT);
            INSERT INTO foo VALUES (1,'one'), (2, 'two'), (3, 'three'), (10, 'ten');
            """)
        conn_string = service.container_connection_string(service_alias[0])
        container = create_and_pull(
            docker_client,
            "python:latest",
            'sh -c "pip install sqlalchemy psycopg2 && python ./main.py"',
            detach=True,
            remove=False  # todo
        )
        upload_file(
            container, './main.py',
            bytes(
                "import sqlalchemy as sa;"
                f"e = sa.create_engine('{conn_string}');"
                "e.execute('DELETE FROM foo WHERE x < 3');", 'ascii'))
        with connect(network, container):
            container.start()
            return_status = container.wait()
            assert return_status["StatusCode"] == 0

        with service.connection() as connection:
            results = connection.execute("SELECT y from foo")
        vals = [row['y'] for row in results]
        assert vals == ['three', 'ten']
Ejemplo n.º 3
0
def test_connect_with_run(docker_client: DockerClient, create_and_pull):
    with temp_network(docker_client) as network, \
            RedisService.run(docker_client, network=network) as redis:
        command = f'nc -z {get_aliases(redis.container, network)[0]} {REDIS_DEFAULT_PORT}'
        container: Container = create_and_pull(docker_client, 'bash:latest',
                                               command)
        with connect(network, container):
            container.start()
            return_status = container.wait()
        assert return_status["StatusCode"] == 0
Ejemplo n.º 4
0
def test_connect_shared_network(docker_client: DockerClient, create_and_pull):
    with temp_network(docker_client) as network:
        with RedisService.run(docker_client) as redis, \
                connect(network, redis) as aliases:
            command = f'nc -z {aliases[0]} {REDIS_DEFAULT_PORT}'
            container: Container = create_and_pull(docker_client,
                                                   'bash:latest', command)
            with connect(network, container):
                container.start()
                return_status = container.wait()
            assert return_status["StatusCode"] == 0
Ejemplo n.º 5
0
def heksher_service(sql_service, docker_client):
    with temp_network(docker_client) as network, connect(
            network, sql_service) as sql_alias:
        service = HeksherService(
            docker_client,
            db_connection_string=sql_service.container_connection_string(
                sql_alias[0]),
            context_features=CONTEXT_FEATURES,
        )
        with connect(network, service):
            service.start()
            with killing(service.container):
                yield service
Ejemplo n.º 6
0
def test_container_same_network(docker_client, create_and_pull):
    with VaultService.run(docker_client) as service:
        with temp_network(docker_client) as network, connect(
                network, service) as aliases:
            container = create_and_pull(
                docker_client,
                "byrnedo/alpine-curl:latest",
                f'-vvv "{service.sibling_container_url(aliases[0])}/v1/sys/health" --fail -X "GET" -H'
                ' "X-Vault-Token:guest"',
                detach=True)
            with connect(network, container):
                container.start()
                return_status = container.wait()
                assert return_status["StatusCode"] == 0