db = Db::get(); $this->level = new TransactionLevel($this->db); } public function testCanLikelySetTransactionLevel() { $this->assertTrue($this->level->canLikelySetTransactionLevel()); } public function testSetTransactionLevelForNonLockingReadsRestorePreviousStatus() { // mysql 8.0 using transaction_isolation $isolation = $this->db->fetchOne("SHOW GLOBAL VARIABLES LIKE 't%_isolation'"); $isolation = "@@" . $isolation; $value = $this->db->fetchOne('SELECT ' . $isolation); $this->assertSame('REPEATABLE-READ', $value); $this->level->setTransactionLevelForNonLockingReads(); $value = $this->db->fetchOne('SELECT ' . $isolation); $expectedIsolation = str_replace(' ', '-', Schema::getInstance()->getSupportedReadIsolationTransactionLevel()); $this->assertSame($expectedIsolation, $value); $this->level->restorePreviousStatus(); $value = $this->db->fetchOne('SELECT ' . $isolation); $this->assertSame('REPEATABLE-READ', $value); } }