Skip to content

Library to run any third-party dependency in Docker on any platform Docker supports

License

Notifications You must be signed in to change notification settings

teran/go-docker-testsuite

Repository files navigation

go-docker-testsuite

Test & Build status Go Report Card Go Reference

Library to run any third-party dependency in Docker on any platform Docker supports The main purpose is to allow runnings integration tests against almost any database or other dependency running right within docker and available via network.

Applications

The test suite provides some of applications, i.e. wrappers for particular docker image, here's the list:

  • MinIO
  • MySQL/MariaDB/Percona Server
  • PostgreSQL
  • Redis
  • ScyllaDB

Each application could provide its own interface to interact so please refer to applications package for some examples.

Example usage

Go Docker Testsuite provides its own interface for each application aiming to make it clean and easy to use each particular application.

Here's an example for MySQL database:

package main

import (
    "context"
    "database/sql"

    _ "github.com/go-sql-driver/mysql"

    "github.com/teran/go-docker-testsuite/applications/mysql"
)

func main() {
    ctx := context.Background()

    app, err := mysql.New(ctx, "index.docker.io/library/mysql:8.0.4")
    if err != nil {
        panic(err)
    }
    defer app.Close(ctx)

    if err := app.CreateDB(ctx, "important_database"); err != nil {
        panic(err)
    }

    db, err := sql.Open("mysql", app.MustDSN("important_database"))
    if err != nil {
        panic(err)
    }

    if err := db.Ping(); err != nil {
        panic(err)
    }

    if _, err := db.ExecContext(ctx, "SELECT 1"); err != nil {
        panic(err)
    }
}