[![Build Status](https://travis-ci.org/kazuho/p5-test-mysqld.svg?branch=master)](https://travis-ci.org/kazuho/p5-test-mysqld)
# NAME

Test::mysqld - mysqld runner for tests

# SYNOPSIS

    use DBI;
    use Test::mysqld;
    use Test::More;
    
    my $mysqld = Test::mysqld->new(
      my_cnf => {
        'skip-networking' => '', # no TCP socket
      }
    ) or plan skip_all => $Test::mysqld::errstr;
    
    plan tests => XXX;
    
    my $dbh = DBI->connect(
      $mysqld->dsn(dbname => 'test'),
    );
    
    # start_mysqlds is faster than calling Test::mysqld->new twice
    my @mysqlds = Test::mysqld->start_mysqlds(
      2,
      my_cnf => {
        'skip-networking' => '', # no TCP socket
      }
    ) or plan skip_all => $Test::mysqld::errstr;
    Test::mysqlds->stop_mysqlds(@mysqlds);

# DESCRIPTION

`Test::mysqld` automatically setups a mysqld instance in a temporary directory, and destroys it when the perl script exits.

# FUNCTIONS

## new

Create and run a mysqld instance.  The instance is terminated when the returned object is being DESTROYed.  If required programs (mysql\_install\_db and mysqld) were not found, the function returns undef and sets appropriate message to $Test::mysqld::errstr.

## base\_dir

Returns directory under which the mysqld instance is being created.  The property can be set as a parameter of the `new` function, in which case the directory will not be removed at exit.

## copy\_data\_from

If specified, uses a copy of the specified directory as the data directory of MySQL.  "Mysql" database (which is used to store administrative information) is automatically created if necessary by invoking mysql\_install\_db.

## my\_cnf

A hash containing the list of name=value pairs to be written into my.cnf.  The property can be set as a parameter of the `new` function.

## mysql\_install\_db

## mysqld

Path to `mysql_install_db` script or `mysqld` program bundled to the mysqld distribution.  If not set, the program is automatically search by looking up $PATH and other prefixed directories.

## dsn

Builds and returns dsn by using given parameters (if any).  Default username is 'root', and dbname is 'test'.

## pid

Returns process id of mysqld (or undef if not running).

## start

Starts mysqld.

## stop

Stops mysqld.

## setup

Setups the mysqld instance.

## read\_log

Returns the contents of the mysqld log file.

## start\_mysqlds

Create and run some mysqld instances, and return a list of `Test::mysqld`.

## stop\_mysqlds

Stop some mysqld instances.

# COPYRIGHT

Copyright (C) 2009 Cybozu Labs, Inc.  Written by Kazuho Oku.

# LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See [http://www.perl.com/perl/misc/Artistic.html](http://www.perl.com/perl/misc/Artistic.html)