我想使用testcontainers进行集成测试。我需要测试一下点击室的存储器。
Docker镜像为yandex/clichouse-server
到目前为止,我的代码(主要是从testcontainers网站上的官方redis示例导入的):
ctx := context.Background()
req := testcontainers.ContainerRequest{
Image: "yandex/clickhouse-server",
ExposedPorts: []string{"9000/tcp"},
}
chContainer, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
ContainerRequest: req,
Started: true,
})
require.NoError(t, err, "unexpected error while creating clickhouse container")
endpoint, err := chContainer.Endpoint(ctx, "")
require.NoError(t, err)
这在获取端点时抛出了一个错误port not found
,我不确定从那里去哪里。
3条答案
按热度按时间v64noz0r1#
你试过在Testcontainers Go中使用wait API吗?https://github.com/testcontainers/testcontainers-go/tree/main/wait
有了它们,你就可以等待多个事情(甚至在同一时间):
您可以在存储库中找到有用的示例。也就是说,日志条目的示例:
EDIT:一个更详细的例子,包括使用HTTP请求的等待策略:
s3fp2yjn2#
仅供参考,从v0.23.0开始,存在一个用于testcontainers-go的ClickHouse模块:https://golang.testcontainers.org/modules/clickhouse/
你可以用一种非常简单的方式使用它:
添加依赖项:
进口:
代码:
vc9ivgsu3#
以下是我在试错后得到的结果:
这将启动一个clickhouse容器,并在10秒后返回sql.Db或t/o。