public function testReadableTransactions() { // TODO: When we have semi-durable fixtures, use those instead. This is // extremely hacky. LiskDAO::endIsolateAllLiskEffectsToTransactions(); try { $data = Filesystem::readRandomCharacters(32); $obj = new HarbormasterScratchTable(); $obj->openTransaction(); $obj->setData($data); $obj->save(); $loaded = id(new HarbormasterScratchTable())->loadOneWhere('data = %s', $data); $obj->killTransaction(); $this->assertEqual(true, $loaded !== null, "Reads inside transactions should have transaction visibility."); LiskDAO::beginIsolateAllLiskEffectsToTransactions(); } catch (Exception $ex) { LiskDAO::beginIsolateAllLiskEffectsToTransactions(); throw $ex; } }
protected function willRunOneTest($test) { $config = $this->getComputedConfiguration(); if ($config[self::PHABRICATOR_TESTCONFIG_BUILD_STORAGE_FIXTURES]) { LiskDAO::beginIsolateAllLiskEffectsToTransactions(); } }
public function testCounters() { $obj = new HarbormasterObject(); $conn_w = $obj->establishConnection('w'); // Test that the counter bascially behaves as expected. $this->assertEqual(1, LiskDAO::loadNextCounterID($conn_w, 'a')); $this->assertEqual(2, LiskDAO::loadNextCounterID($conn_w, 'a')); $this->assertEqual(3, LiskDAO::loadNextCounterID($conn_w, 'a')); // This first insert is primarily a test that the previous LAST_INSERT_ID() // value does not bleed into the creation of a new counter. $this->assertEqual(1, LiskDAO::loadNextCounterID($conn_w, 'b')); $this->assertEqual(2, LiskDAO::loadNextCounterID($conn_w, 'b')); // These inserts alternate database connections. Since unit tests are // transactional by default, we need to break out of them or we'll deadlock // since the transactions don't normally close until we exit the test. LiskDAO::endIsolateAllLiskEffectsToTransactions(); try { $conn_1 = $obj->establishConnection('w', $force_new = true); $conn_2 = $obj->establishConnection('w', $force_new = true); $this->assertEqual(1, LiskDAO::loadNextCounterID($conn_1, 'z')); $this->assertEqual(2, LiskDAO::loadNextCounterID($conn_2, 'z')); $this->assertEqual(3, LiskDAO::loadNextCounterID($conn_1, 'z')); $this->assertEqual(4, LiskDAO::loadNextCounterID($conn_2, 'z')); $this->assertEqual(5, LiskDAO::loadNextCounterID($conn_1, 'z')); LiskDAO::beginIsolateAllLiskEffectsToTransactions(); } catch (Exception $ex) { LiskDAO::beginIsolateAllLiskEffectsToTransactions(); throw $ex; } }