/
dimamir
/
rill
Обзор
Документация
Войти
/
dimamir
/
rill
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
admin/pkg/pgtestcontainer/pgtestcontainer.go
55 строк
2 KB
Benjamin Egelund-Müller
Add correct WaitFor check for Postgres testcontainers (#2509)
26 май 2023, 12:15
Не верифицирован
26 май 2023, 12:15
8e93632
Код
Авторство
О чём код?
package pgtestcontainer import ( "context" "fmt" "testing" "time" "github.com/stretchr/testify/require" "github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go/wait" ) // Container wraps a testcontainer running Postgres. type Container struct { testcontainers.Container DatabaseURL string } // New creates and starts a new Postgres testcontainer. Call Terminate() when done using it. func New(t *testing.T) Container { ctx := context.Background() container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ Started: true, ContainerRequest: testcontainers.ContainerRequest{ Image: "postgres:14", ExposedPorts: []string{"5432/tcp"}, WaitingFor: wait.ForLog("database system is ready to accept connections").WithOccurrence(2).WithStartupTimeout(15 * time.Second), Env: map[string]string{ "POSTGRES_USER": "postgres", "POSTGRES_PASSWORD": "postgres", "POSTGRES_DB": "postgres", }, }, }) require.NoError(t, err) host, err := container.Host(ctx) require.NoError(t, err) port, err := container.MappedPort(ctx, "5432/tcp") require.NoError(t, err) databaseURL := fmt.Sprintf("postgres://postgres:postgres@%s:%d/postgres", host, port.Int()) return Container{ Container: container, DatabaseURL: databaseURL, } } // Terminate stops and removes the container. func (c Container) Terminate(t *testing.T) { ctx := context.Background() err := c.Container.Terminate(ctx) require.NoError(t, err) }