public static function setUpBeforeClass()
{
error_reporting(E_ALL & ~E_DEPRECATED);
if (getenv('TRAVIS') === false) {
fwrite(STDERR, "=> Finding binaries\n");
static::$bin['docker'] = $docker = exec('/usr/bin/env which docker');
if (empty($docker)) {
static::markTestSkipped('Docker is required to run these tests');
}
fwrite(STDERR, "=> Running Docker Container: ");
static::$container = exec($docker . ' run -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -P -d mysql/mysql-server:5.7');
if (empty(static::$container)) {
static::markTestSkipped("Unable to start docker container");
}
fwrite(STDERR, static::$container . "\n");
fwrite(STDERR, "=> Finding MySQL Host: ");
static::$host = exec($docker . ' port ' . self::$container . ' 3306');
fwrite(STDERR, static::$host . "\n");
fwrite(STDERR, "=> Waiting on mysqld to start:");
$out = '';
while (trim($out) != 'mysqld') {
$out = exec(static::$bin['docker'] . ' exec ' . static::$container . ' ps ax | awk \'/mysqld/ {print $NF}\'');
}
fwrite(STDERR, " started\n");
sleep(3);
fwrite(STDERR, "=> Docker Container Running\n\n");
return;
}
static::$host = 'localhost';
}