Skip to content

lestrrat-go/test-mysqld

Repository files navigation

test-mysqld

Create real MySQL server instance for testing

Build Status

GoDoc

DESCRIPTION

By default importing github.com/lestrrat-go/test-mysqld will import package mysqltest

import (
    "database/sql"
    "log"
    "github.com/lestrrat-go/test-mysqld"
)

mysqld, err := mysqltest.NewMysqld(nil)
if err != nil {
   log.Fatalf("Failed to start mysqld: %s", err)
}
defer mysqld.Stop()

db, err := sql.Open("mysql", mysqld.Datasource("test", "", "", 0))
// Now use db, which is connected to a mysql db

go-test-mysqld is a port of Test::mysqld

When you create a new struct via NewMysqld() a new mysqld instance is automatically setup and launched. Don't forget to call Stop() on this struct to stop the launched mysqld

If you want to customize the configuration, create a new config and set each field on the struct:

config := mysqltest.NewConfig()
config.SkipNetworking = false
config.Port = 13306

// Starts mysqld listening on port 13306
mysqld, _ := mysqltest.NewMysqld(config)

Generating DSN

DSN strings can be generated using the DSN method:

// Use default
dsn := mysqld.DSN()

// Pass explicit parameters
dsn := mysqld.DSN(mysqltest.WithUser("foo"), mysqltest.WithPassword("passw0rd!"))

// Tell the mysql driver to parse time values
dsn := mysqld.DSN(mysqltest.WithParseTime(true))

// ...And pass the dsn to sql.Open
db, err := sql.Open("mysql", dsn)

Following is a list of possible parameters to DSN. I

Option Description Default
mysqltest.WithProto(string) Specifies the protocol ("unix" or "tcp") Depends on value of config.SkipNetworking
mysqltest.WithSocket(string) Specifies the path to the unix socket value of config.Socket
mysqltest.WithHost(string) Specifies the hostname value of config.BindAddress
mysqltest.WithPort(int) Specifies the port number value of config.Port
mysqltest.WithUser(string) Specifies the username "root"
mysqltest.WithPassword(string) Specifies the password ""
mysqltest.WithDbname(string) Specifies the database name to connect "test"
mysqltest.WithParseTime(bool) Specifies if mysql driver should parse time values to time.Time false
mysqltest.WithMultiStatements(bool) Specifies if mysql driver should allow multi statement in a SQL file false

About

Create real MySQL server instance for testing

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages