Browse Source

Merge pull request #16734 from cakephp/5.x-connection-connect-disconnect

Remove Driver connect/disconnect wrappers from Connection.
ADmad 3 years ago
parent
commit
ab59f5f6d3

+ 0 - 45
src/Database/Connection.php

@@ -20,7 +20,6 @@ use Cake\Cache\Cache;
 use Cake\Core\App;
 use Cake\Core\Exception\CakeException;
 use Cake\Core\Retry\CommandRetry;
-use Cake\Database\Exception\MissingConnectionException;
 use Cake\Database\Exception\MissingDriverException;
 use Cake\Database\Exception\MissingExtensionException;
 use Cake\Database\Exception\NestedTransactionRollbackException;
@@ -210,50 +209,6 @@ class Connection implements ConnectionInterface
     }
 
     /**
-     * Connects to the configured database.
-     *
-     * @throws \Cake\Database\Exception\MissingConnectionException If database connection could not be established.
-     * @return void
-     */
-    public function connect(): void
-    {
-        try {
-            $this->_driver->connect();
-        } catch (MissingConnectionException $e) {
-            throw $e;
-        } catch (Throwable $e) {
-            throw new MissingConnectionException(
-                [
-                    'driver' => App::shortName(get_class($this->_driver), 'Database/Driver'),
-                    'reason' => $e->getMessage(),
-                ],
-                null,
-                $e
-            );
-        }
-    }
-
-    /**
-     * Disconnects from database server.
-     *
-     * @return void
-     */
-    public function disconnect(): void
-    {
-        $this->_driver->disconnect();
-    }
-
-    /**
-     * Returns whether connection to database server was already established.
-     *
-     * @return bool
-     */
-    public function isConnected(): bool
-    {
-        return $this->_driver->isConnected();
-    }
-
-    /**
      * Executes a query using $params for interpolating values and $types as a hint for each
      * those params.
      *

+ 2 - 2
src/Database/Retry/ReconnectStrategy.php

@@ -104,12 +104,12 @@ class ReconnectStrategy implements RetryStrategyInterface
 
         try {
             // Make sure we free any resources associated with the old connection
-            $this->connection->disconnect();
+            $this->connection->getDriver()->disconnect();
         } catch (Exception) {
         }
 
         try {
-            $this->connection->connect();
+            $this->connection->getDriver()->connect();
             $this->connection->getDriver()->log(
                 'connection={connection} [RECONNECT]',
                 ['connection' => $this->connection->configName()]

+ 17 - 34
tests/TestCase/Database/ConnectionTest.php

@@ -112,15 +112,6 @@ class ConnectionTest extends TestCase
     }
 
     /**
-     * Tests connecting to database
-     */
-    public function testIsConnected(): void
-    {
-        $this->connection->connect();
-        $this->assertTrue($this->connection->isConnected());
-    }
-
-    /**
      * Tests creating a connection using no driver throws an exception
      */
     public function testNoDriver(): void
@@ -193,7 +184,7 @@ class ConnectionTest extends TestCase
 
         $e = null;
         try {
-            $connection->connect();
+            $connection->getDriver()->connect();
         } catch (MissingConnectionException $e) {
         }
 
@@ -702,7 +693,7 @@ class ConnectionTest extends TestCase
     {
         $driver = $this->getMockFormDriver();
         $connection = $this->getMockBuilder(Connection::class)
-            ->onlyMethods(['connect', 'commit', 'begin'])
+            ->onlyMethods(['commit', 'begin'])
             ->setConstructorArgs([['driver' => $driver]])
             ->getMock();
         $connection->expects($this->once())->method('begin');
@@ -723,7 +714,7 @@ class ConnectionTest extends TestCase
     {
         $driver = $this->getMockFormDriver();
         $connection = $this->getMockBuilder(Connection::class)
-            ->onlyMethods(['connect', 'commit', 'begin', 'rollback'])
+            ->onlyMethods(['commit', 'begin', 'rollback'])
             ->setConstructorArgs([['driver' => $driver]])
             ->getMock();
         $connection->expects($this->once())->method('begin');
@@ -748,7 +739,7 @@ class ConnectionTest extends TestCase
         $this->expectException(InvalidArgumentException::class);
         $driver = $this->getMockFormDriver();
         $connection = $this->getMockBuilder(Connection::class)
-            ->onlyMethods(['connect', 'commit', 'begin', 'rollback'])
+            ->onlyMethods(['commit', 'begin', 'rollback'])
             ->setConstructorArgs([['driver' => $driver]])
             ->getMock();
         $connection->expects($this->once())->method('begin');
@@ -766,10 +757,7 @@ class ConnectionTest extends TestCase
     public function testSetSchemaCollection(): void
     {
         $driver = $this->getMockFormDriver();
-        $connection = $this->getMockBuilder(Connection::class)
-            ->onlyMethods(['connect'])
-            ->setConstructorArgs([['driver' => $driver]])
-            ->getMock();
+        $connection = new Connection(['driver' => $driver]);
 
         $schema = $connection->getSchemaCollection();
         $this->assertInstanceOf('Cake\Database\Schema\Collection', $schema);
@@ -787,29 +775,24 @@ class ConnectionTest extends TestCase
     public function testGetCachedCollection(): void
     {
         $driver = $this->getMockFormDriver();
-        $connection = $this->getMockBuilder(Connection::class)
-            ->onlyMethods(['connect'])
-            ->setConstructorArgs([[
-                'driver' => $driver,
-                'name' => 'default',
-                'cacheMetadata' => true,
-            ]])
-            ->getMock();
+
+        $connection = new Connection([
+            'driver' => $driver,
+            'name' => 'default',
+            'cacheMetadata' => true,
+        ]);
 
         $schema = $connection->getSchemaCollection();
         $this->assertInstanceOf(CachedCollection::class, $schema);
         $this->assertSame('default_key', $schema->cacheKey('key'));
 
         $driver = $this->getMockFormDriver();
-        $connection = $this->getMockBuilder(Connection::class)
-            ->onlyMethods(['connect'])
-            ->setConstructorArgs([[
-                'driver' => $driver,
-                'name' => 'default',
-                'cacheMetadata' => true,
-                'cacheKeyPrefix' => 'foo',
-            ]])
-            ->getMock();
+        $connection = new Connection([
+            'driver' => $driver,
+            'name' => 'default',
+            'cacheMetadata' => true,
+            'cacheKeyPrefix' => 'foo',
+        ]);
 
         $schema = $connection->getSchemaCollection();
         $this->assertInstanceOf(CachedCollection::class, $schema);

+ 5 - 5
tests/TestCase/Database/Driver/MysqlTest.php

@@ -137,17 +137,17 @@ class MysqlTest extends TestCase
     public function testIsConnected(): void
     {
         $connection = ConnectionManager::get('test');
-        $connection->disconnect();
-        $this->assertFalse($connection->isConnected(), 'Not connected now.');
+        $connection->getDriver()->disconnect();
+        $this->assertFalse($connection->getDriver()->isConnected(), 'Not connected now.');
 
-        $connection->connect();
-        $this->assertTrue($connection->isConnected(), 'Should be connected.');
+        $connection->getDriver()->connect();
+        $this->assertTrue($connection->getDriver()->isConnected(), 'Should be connected.');
     }
 
     public function testRollbackTransactionAutoConnect(): void
     {
         $connection = ConnectionManager::get('test');
-        $connection->disconnect();
+        $connection->getDriver()->disconnect();
 
         $driver = $connection->getDriver();
         $this->assertFalse($driver->rollbackTransaction());

+ 6 - 14
tests/TestCase/Database/Driver/PostgresTest.php

@@ -16,6 +16,7 @@ declare(strict_types=1);
  */
 namespace Cake\Test\TestCase\Database\Driver;
 
+use Cake\Database\Connection;
 use Cake\Database\Driver\Postgres;
 use Cake\Database\DriverFeatureEnum;
 use Cake\Database\Query\InsertQuery;
@@ -152,14 +153,11 @@ class PostgresTest extends TestCase
     public function testInsertReturning(): void
     {
         $driver = $this->getMockBuilder('Cake\Database\Driver\Postgres')
-            ->onlyMethods(['createPdo', 'getPdo'])
+            ->onlyMethods(['createPdo', 'getPdo', 'connect', 'enabled'])
             ->setConstructorArgs([[]])
             ->getMock();
-        $connection = $this
-            ->getMockBuilder('Cake\Database\Connection')
-            ->onlyMethods(['connect'])
-            ->disableOriginalConstructor()
-            ->getMock();
+        $driver->method('enabled')->willReturn(true);
+        $connection = new Connection(['driver' => $driver, 'log' => false]);
 
         $query = new InsertQuery($connection);
         $query->insert(['id', 'title'])
@@ -190,10 +188,7 @@ class PostgresTest extends TestCase
         $driver->method('enabled')
             ->will($this->returnValue(true));
 
-        $connection = $this->getMockBuilder('\Cake\Database\Connection')
-            ->onlyMethods(['connect'])
-            ->setConstructorArgs([['driver' => $driver, 'log' => false]])
-            ->getMock();
+        $connection = new Connection(['driver' => $driver, 'log' => false]);
 
         $query = new SelectQuery($connection);
         $query
@@ -221,10 +216,7 @@ class PostgresTest extends TestCase
         $driver->method('enabled')
             ->will($this->returnValue(true));
 
-        $connection = $this->getMockBuilder('\Cake\Database\Connection')
-            ->onlyMethods(['connect'])
-            ->setConstructorArgs([['driver' => $driver, 'log' => false]])
-            ->getMock();
+        $connection = new Connection(['driver' => $driver, 'log' => false]);
 
         $query = new SelectQuery($connection);
         $query

+ 6 - 20
tests/TestCase/Database/Driver/SqlserverTest.php

@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace Cake\Test\TestCase\Database\Driver;
 
+use Cake\Database\Connection;
 use Cake\Database\Driver\Sqlserver;
 use Cake\Database\DriverFeatureEnum;
 use Cake\Database\Exception\MissingConnectionException;
@@ -240,10 +241,7 @@ class SqlserverTest extends TestCase
         $driver->method('enabled')
             ->will($this->returnValue(true));
 
-        $connection = $this->getMockBuilder('Cake\Database\Connection')
-            ->onlyMethods(['connect'])
-            ->setConstructorArgs([['driver' => $driver, 'log' => false]])
-            ->getMock();
+        $connection = new Connection(['driver' => $driver, 'log' => false]);
 
         $query = new SelectQuery($connection);
         $query->select(['id', 'title'])
@@ -288,10 +286,7 @@ class SqlserverTest extends TestCase
         $driver->method('enabled')
             ->will($this->returnValue(true));
 
-        $connection = $this->getMockBuilder('Cake\Database\Connection')
-            ->onlyMethods(['connect'])
-            ->setConstructorArgs([['driver' => $driver, 'log' => false]])
-            ->getMock();
+        $connection = new Connection(['driver' => $driver, 'log' => false]);
 
         $query = new SelectQuery($connection);
         $query->select(['id', 'title'])
@@ -410,10 +405,7 @@ class SqlserverTest extends TestCase
             ->getMock();
         $driver->method('enabled')
             ->will($this->returnValue(true));
-        $connection = $this->getMockBuilder('Cake\Database\Connection')
-            ->onlyMethods(['connect'])
-            ->setConstructorArgs([['driver' => $driver, 'log' => false]])
-            ->getMock();
+        $connection = new Connection(['driver' => $driver, 'log' => false]);
         $query = new InsertQuery($connection);
         $query->insert(['title'])
             ->into('articles')
@@ -437,10 +429,7 @@ class SqlserverTest extends TestCase
         $driver->method('enabled')
             ->will($this->returnValue(true));
 
-        $connection = $this->getMockBuilder('\Cake\Database\Connection')
-            ->onlyMethods(['connect'])
-            ->setConstructorArgs([['driver' => $driver, 'log' => false]])
-            ->getMock();
+        $connection = new Connection(['driver' => $driver, 'log' => false]);
 
         $query = new SelectQuery($connection);
         $query
@@ -471,10 +460,7 @@ class SqlserverTest extends TestCase
         $driver->method('enabled')
             ->will($this->returnValue(true));
 
-        $connection = $this->getMockBuilder('\Cake\Database\Connection')
-            ->onlyMethods(['connect'])
-            ->setConstructorArgs([['driver' => $driver, 'log' => false]])
-            ->getMock();
+        $connection = new Connection(['driver' => $driver, 'log' => false]);
 
         $query = new SelectQuery($connection);
         $query