wiki.techinc.nl/tests/phpunit/includes/objectcache/SqlBagOStuffMultiPrimaryIntegrationTest.php
Tim Starling 3cabe8bf8a SqlBagOStuff: Fix modtoken comparison
String offsets in MariaDB are 1-based, except in "Oracle compatible"
mode. SUBSTR(modtoken,0,13) was always the empty string and so the
modtoken comparison was always true. I was able to reproduce a failure
to reach consistency using ring replication.

Add regression test.

Bug: T315271
Change-Id: I74e54e8aba44505dd04426c12d91a9ea0de17f22
2022-08-19 11:11:58 +10:00

34 lines
841 B
PHP

<?php
/**
* @group BagOStuff
* @group Database
* @covers SqlBagOStuff
*/
class SqlBagOStuffMultiPrimaryIntegrationTest extends BagOStuffTestBase {
protected function newCacheInstance() {
return ObjectCache::newFromParams( [
'class' => SqlBagOStuff::class,
'loggroup' => 'SQLBagOStuff',
'multiPrimaryMode' => true,
'purgePeriod' => 0,
'reportDupes' => false
] );
}
public function testModtoken() {
$now = self::TEST_TIME;
$this->cache->setMockTime( $now );
$this->cache->set( 'test', 'a' );
$this->assertSame( 'a', $this->cache->get( 'test' ) );
$now--;
// Modtoken comparison makes this a no-op
$this->cache->set( 'test', 'b' );
$this->assertSame( 'a', $this->cache->get( 'test' ) );
$now += 2;
$this->cache->set( 'test', 'c' );
$this->assertSame( 'c', $this->cache->get( 'test' ) );
}
}