|
2 | 2 |
|
3 | 3 | namespace Doctrine\Tests\DBAL;
|
4 | 4 |
|
| 5 | +use Doctrine\DBAL\Connections\MasterSlaveConnection; |
5 | 6 | use Doctrine\DBAL\DBALException;
|
6 | 7 | use Doctrine\DBAL\Driver\DrizzlePDOMySql\Driver as DrizzlePDOMySqlDriver;
|
7 | 8 | use Doctrine\DBAL\Driver\PDOMySql\Driver as PDOMySQLDriver;
|
8 | 9 | use Doctrine\DBAL\Driver\PDOSqlite\Driver as PDOSqliteDriver;
|
9 | 10 | use Doctrine\DBAL\Driver\SQLSrv\Driver as SQLSrvDriver;
|
10 | 11 | use Doctrine\DBAL\DriverManager;
|
| 12 | +use Doctrine\DBAL\Sharding\PoolingShardConnection; |
| 13 | +use Doctrine\DBAL\Sharding\ShardChoser\MultiTenantShardChoser; |
11 | 14 | use Doctrine\Tests\DBAL\Mocks\MockPlatform;
|
12 | 15 | use Doctrine\Tests\DbalTestCase;
|
13 | 16 | use Doctrine\Tests\Mocks\ConnectionMock;
|
@@ -133,6 +136,74 @@ public function testValidDriverClass()
|
133 | 136 | self::assertInstanceOf(PDOMySQLDriver::class, $conn->getDriver());
|
134 | 137 | }
|
135 | 138 |
|
| 139 | + public function testDatabaseUrlMasterSlave() |
| 140 | + { |
| 141 | + $options = [ |
| 142 | + 'driver' => 'pdo_mysql', |
| 143 | + 'master' => ['url' => 'mysql://foo:bar@localhost:11211/baz'], |
| 144 | + 'slaves' => [ |
| 145 | + 'slave1' => ['url' => 'mysql://foo:bar@localhost:11211/baz_slave'], |
| 146 | + ], |
| 147 | + 'wrapperClass' => MasterSlaveConnection::class, |
| 148 | + ]; |
| 149 | + |
| 150 | + $conn = DriverManager::getConnection($options); |
| 151 | + |
| 152 | + $params = $conn->getParams(); |
| 153 | + self::assertInstanceOf(PDOMySQLDriver::class, $conn->getDriver()); |
| 154 | + |
| 155 | + $expected = [ |
| 156 | + 'user' => 'foo', |
| 157 | + 'password' => 'bar', |
| 158 | + 'host' => 'localhost', |
| 159 | + 'port' => 11211, |
| 160 | + ]; |
| 161 | + |
| 162 | + foreach ($expected as $key => $value) { |
| 163 | + self::assertEquals($value, $params['master'][$key]); |
| 164 | + self::assertEquals($value, $params['slaves']['slave1'][$key]); |
| 165 | + } |
| 166 | + |
| 167 | + self::assertEquals('baz', $params['master']['dbname']); |
| 168 | + self::assertEquals('baz_slave', $params['slaves']['slave1']['dbname']); |
| 169 | + } |
| 170 | + |
| 171 | + public function testDatabaseUrlShard() |
| 172 | + { |
| 173 | + $options = [ |
| 174 | + 'driver' => 'pdo_mysql', |
| 175 | + 'shardChoser' => MultiTenantShardChoser::class, |
| 176 | + 'global' => ['url' => 'mysql://foo:bar@localhost:11211/baz'], |
| 177 | + 'shards' => [ |
| 178 | + [ |
| 179 | + 'id' => 1, |
| 180 | + 'url' => 'mysql://foo:bar@localhost:11211/baz_slave', |
| 181 | + ], |
| 182 | + ], |
| 183 | + 'wrapperClass' => PoolingShardConnection::class, |
| 184 | + ]; |
| 185 | + |
| 186 | + $conn = DriverManager::getConnection($options); |
| 187 | + |
| 188 | + $params = $conn->getParams(); |
| 189 | + self::assertInstanceOf(PDOMySQLDriver::class, $conn->getDriver()); |
| 190 | + |
| 191 | + $expected = [ |
| 192 | + 'user' => 'foo', |
| 193 | + 'password' => 'bar', |
| 194 | + 'host' => 'localhost', |
| 195 | + 'port' => 11211, |
| 196 | + ]; |
| 197 | + |
| 198 | + foreach ($expected as $key => $value) { |
| 199 | + self::assertEquals($value, $params['global'][$key]); |
| 200 | + self::assertEquals($value, $params['shards'][0][$key]); |
| 201 | + } |
| 202 | + |
| 203 | + self::assertEquals('baz', $params['global']['dbname']); |
| 204 | + self::assertEquals('baz_slave', $params['shards'][0]['dbname']); |
| 205 | + } |
| 206 | + |
136 | 207 | /**
|
137 | 208 | * @dataProvider databaseUrls
|
138 | 209 | */
|
|
0 commit comments