dbtest

package module
v0.0.0-...-fa9893a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 5, 2018 License: MIT Imports: 9 Imported by: 1

README

DBTest: Managed Integration Testing Dependencies via Docker for Go

DBTest Allows You to Test Against a Real Database

Using the Docker API, your Go program can manage its own testing dependencies.

This is especially useful when writing integration tests (or when it's simply impossible to mock out a dependency).

MongoDB

//Create a new Loader. This may error is Docker is not accessible
l, err := docker.NewLoader()
//Create a new MongoDB container using the loader
mongo, err := NewMongoDBContainer(context.Background(), l)
//Obtain an mgo.Session to contact MongoDB
ssn, err := mongo.NewSession()
//Do something with the Session
err = ssn.Ping()
//Stop and remove the MongoDB container
err = l.StopService(context.Background(), mongo)
_ = err

Arbitrary Ephemeral Docker Containers

//Create a new Loader. This may error is Docker is not accessible
loader, err := docker.NewLoader()
helloWorldSpec := docker.ServiceSpecification{
  FullyQualifiedImageName: "library/hello-world",
  ContainerConfig: &container.Config{
    Image: "hello-world",
  },
}
service, err := loader.StartService(context.Background(), &helloWorldSpec)
//no StopService call since "hello-world" exits on its own
_ = err

Docker API Version

The Go Docker API is notoriously hard to vendor due to the Moby rename.

This API is based off of commit 21291e5aefe1f13f3208d57bcc4183848c492bd1 on Moby/Moby which was committed to master on June 6th, 2018.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WaitForTCP

func WaitForTCP(ctx context.Context, rAddr string) error

WaitForTCP blocks until a connection can be made via TCP

Types

type MongoDBContainer

type MongoDBContainer struct {
	docker.Service
}

MongoDBContainer extends docker.Service to provide on demand MongoDB connections

func NewMongoDBContainer

func NewMongoDBContainer(ctx context.Context, loader docker.Loader) (MongoDBContainer, error)

NewMongoDBContainer starts a new instance of MongoDB with Docker

func (MongoDBContainer) GetMongoDBURI

func (m MongoDBContainer) GetMongoDBURI() string

GetMongoDBURI returns the MongoDB URI for connecting to the container

func (MongoDBContainer) NewSession

func (m MongoDBContainer) NewSession() (*mgo.Session, error)

NewSession returns a new mgo.Session object dialed into to this server

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL