1.20.x database_test.test ConnectionUnitTest::testOpenSelectQueryClose()

Tests Database::closeConnection() with a select query.

File

modules/simpletest/tests/database_test.test, line 4073
Database tests.

Class

ConnectionUnitTest
Tests management of database connections.

Code

function testOpenSelectQueryClose() {
  if ($this->skipTest) {
    return;
  }
  // Add and open a new connection.
  $this->addConnection();
  $id = $this->getConnectionID();
  Database::getConnection($this->target, $this->key);

  // Verify that there is a new connection.
  $this->assertConnection($id);

  // Create a table.
  $name = 'foo';
  Database::getConnection($this->target, $this->key)->schema()->createTable($name, array(
    'fields' => array(
      'name' => array(
        'type' => 'varchar',
        'length' => 255,
      ),
    ),
  ));

  // Execute a query.
  Database::getConnection($this->target, $this->key)->select('foo', 'f')
    ->fields('f', array('name'))
    ->execute()
    ->fetchAll();

  // Drop the table.
  Database::getConnection($this->target, $this->key)->schema()->dropTable($name);

  // Close the connection.
  Database::closeConnection($this->target, $this->key);
  // Wait 20ms to give the database engine sufficient time to react.
  usleep(20000);

  // Verify that we are back to the original connection count.
  $this->assertNoConnection($id);
}