/** * When master is in transaction then we need to return the master connection for getReadConnection, * otherwise lookup queries fail */ public function testReadConnectionWhenMasterIsInTransaction() { $manager = new ConnectionManagerMasterSlave(); $manager->setWriteConfiguration(array('dsn' => 'sqlite::memory:', 'attributes' => array('ATTR_CASE' => PDO::CASE_UPPER))); $manager->setReadConfiguration(array(array('dsn' => 'sqlite::memory:', 'attributes' => array('ATTR_CASE' => PDO::CASE_LOWER)))); $writeConnection = $manager->getWriteConnection(new SqliteAdapter()); $this->assertFalse($writeConnection->inTransaction()); $this->assertNotSame($writeConnection, $manager->getReadConnection(new SqliteAdapter())); $writeConnection->beginTransaction(); $this->assertSame($writeConnection, $manager->getReadConnection(new SqliteAdapter())); $writeConnection->rollBack(); $writeConnection->beginTransaction(); $this->assertSame($writeConnection, $manager->getReadConnection(new SqliteAdapter())); $writeConnection->commit(); $this->assertNotSame($writeConnection, $manager->getReadConnection(new SqliteAdapter())); }
public function testForceMasterConnectionForcesMasterConnectionOnRead() { $manager = new ConnectionManagerMasterSlave(); $manager->setForceMasterConnection(true); $manager->setWriteConfiguration(array('dsn' => 'sqlite::memory:', 'attributes' => array('ATTR_CASE' => PDO::CASE_UPPER))); $manager->setReadConfiguration(array(array('dsn' => 'sqlite::memory:', 'attributes' => array('ATTR_CASE' => PDO::CASE_LOWER)))); $con = $manager->getReadConnection(new SqliteAdapter()); $pdo = $con->getWrappedConnection(); $this->assertEquals(PDO::CASE_UPPER, $pdo->getAttribute(PDO::ATTR_CASE)); }