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']
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']
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
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
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
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