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_upload_fileobj(docker_client, fileobj_creation, create_and_pull):
    container = create_and_pull(docker_client, "alpine:latest",
                                ["cat", "/tmp/test"])
    with fileobj_creation(b"testfile") as file:
        upload_file(container, "/tmp/test", fileobj=file)
    container.start()
    assert container.wait()["StatusCode"] == 0
    assert download_file(container, "/tmp/test").read() == b"testfile"
def test_upload_file(docker_client, create_and_pull):
    container = create_and_pull(docker_client, "alpine:latest",
                                ["cat", "/tmp/test"])
    container.start()
    assert container.wait()["StatusCode"] != 0

    container = create_and_pull(docker_client, "alpine:latest",
                                ["cat", "/tmp/test"])
    upload_file(container, "/tmp/test", b"testfile")
    container.start()
    assert container.wait()["StatusCode"] == 0
    assert download_file(container, "/tmp/test").read() == b"testfile"
Exemple #4
0
    def __init__(self, docker_client: DockerClient, image='rabbitmq:latest', *, user="******", password="******",
                 virtual_host="/", **kwargs):
        self.user = user
        self.password = password
        self.virtual_host = virtual_host
        super().__init__(create_and_pull(
            docker_client, image, publish_all_ports=True, detach=True,
            ports={RABBIT_HTTP_API_PORT: 0},  # Forward management port by default.
        ), **kwargs)

        upload_file(self.container, '/etc/rabbitmq/rabbitmq.conf',
                    f'''
                    default_pass = {password}
                    default_user = {user}
                    default_vhost = {virtual_host}
                    loopback_users = none
                    '''.encode())
def test_download_file(docker_client, create_and_pull):
    container = create_and_pull(docker_client, "alpine:latest")
    upload_file(container, "/tmp/test", b"abcd")
    with download_file(container, "/tmp/test") as file:
        assert file.read() == b"abcd"
Exemple #6
0
 def set_rdb(self, redis_file: IO[bytes]):
     if self.started:
         raise RuntimeError("Server already started. Cannot set RDB.")
     upload_file(self.container, DEFAULT_RDB_PATH, fileobj=redis_file)