1
0
mirror of https://github.com/danog/postgres.git synced 2024-11-30 04:29:12 +01:00
postgres/test/PgSqlPoolTest.php

76 lines
2.1 KiB
PHP
Raw Normal View History

2017-11-06 01:12:12 +01:00
<?php
namespace Amp\Postgres\Test;
2018-07-01 19:33:12 +02:00
use Amp\Postgres\ConnectionConfig;
2017-11-06 01:12:12 +01:00
use Amp\Postgres\Link;
2018-07-01 19:33:12 +02:00
use Amp\Postgres\Pool;
use Amp\Promise;
2018-07-01 19:33:12 +02:00
use Amp\Sql\Connector;
use Amp\Success;
2017-11-06 01:12:12 +01:00
/**
* @requires extension pgsql
*/
2018-07-01 19:33:12 +02:00
class PgSqlPoolTest extends AbstractLinkTest
{
const POOL_SIZE = 3;
2017-11-06 01:12:12 +01:00
/** @var resource[] PostgreSQL connection resources. */
protected $handles = [];
2018-07-01 19:33:12 +02:00
public function createLink(string $connectionString): Link
{
for ($i = 0; $i < self::POOL_SIZE; ++$i) {
$this->handles[] = \pg_connect($connectionString, \PGSQL_CONNECT_FORCE_NEW);
}
$connector = $this->createMock(Connector::class);
$connector->method('connect')
->will($this->returnCallback(function (): Promise {
static $count = 0;
if (!isset($this->handles[$count])) {
$this->fail("createConnection called too many times");
}
++$count;
2018-07-01 19:33:12 +02:00
return new Success();
}));
2018-07-01 19:33:12 +02:00
$pool = new Pool(new ConnectionConfig('connection string'), \count($this->handles), $connector);
$handle = \reset($this->handles);
2017-11-06 01:12:12 +01:00
\pg_query($handle, "DROP TABLE IF EXISTS test");
$result = \pg_query($handle, "CREATE TABLE test (domain VARCHAR(63), tld VARCHAR(63), PRIMARY KEY (domain, tld))");
if (!$result) {
$this->fail('Could not create test table.');
}
foreach ($this->getData() as $row) {
$result = \pg_query_params($handle, "INSERT INTO test VALUES (\$1, \$2)", $row);
if (!$result) {
$this->fail('Could not insert test data.');
}
}
return $pool;
}
2018-07-01 19:33:12 +02:00
public function tearDown()
{
2017-11-06 01:12:12 +01:00
foreach ($this->handles as $handle) {
\pg_get_result($handle); // Consume any leftover results from test.
}
\pg_query($this->handles[0], "ROLLBACK");
\pg_query($this->handles[0], "DROP TABLE test");
foreach ($this->handles as $handle) {
\pg_close($handle);
}
2017-11-06 01:12:12 +01:00
}
}