FileBackendIntegrationTest was running tests against different backends in an unconventional way, using a combination of wrapper test cases that run tests against two different classes, and CLI options which don't really exist anymore and have an associated fixme. So: * Move the bulk of FileBackendIntegrationTest to a new abstract base class under tests/phpunit/integration. * Add subclasses for the FS and multiwrite test cases. This allows us to eliminate the wrappers. * Add a subclass for MemoryFileBackend. * Add a Swift subclass which replaces the main use case for the CLI option --use-filebackend. It is automatically enabled when a Swift backend is configured, similar to PostgreSQL tests. * Some miscellaneous tests with a medium level of integration, not requiring backend setup and teardown, were moved to new classes FileBackendMultiWriteTest and FileBackendStoreTest. Change-Id: I0da531349d7627970a7bcb34f3c1f5fd7e05cb21
41 lines
1.2 KiB
PHP
41 lines
1.2 KiB
PHP
<?php
|
|
|
|
use MediaWiki\MainConfigNames;
|
|
use MediaWiki\WikiMap\WikiMap;
|
|
|
|
/**
|
|
* @group FileBackend
|
|
* @covers SwiftFileBackend
|
|
*/
|
|
class SwiftFileBackendIntegrationTest extends FileBackendIntegrationTestBase {
|
|
private static $backendToUse;
|
|
|
|
private function getBackendConfig(): ?array {
|
|
$backends = $this->getServiceContainer()->getMainConfig()->get( MainConfigNames::FileBackends );
|
|
foreach ( $backends as $conf ) {
|
|
if ( $conf['class'] === SwiftFileBackend::class ) {
|
|
return $conf;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
protected function getBackend() {
|
|
if ( !self::$backendToUse ) {
|
|
$conf = $this->getBackendConfig();
|
|
if ( $conf === null ) {
|
|
$this->markTestSkipped( 'Configure a Swift file backend in $wgFileBackends to enable this test' );
|
|
}
|
|
$conf['name'] = 'localtesting'; // swap name
|
|
$conf['shardViaHashLevels'] = [ // test sharding
|
|
'unittest-cont1' => [ 'levels' => 1, 'base' => 16, 'repeat' => 1 ]
|
|
];
|
|
$lockManagerGroup = $this->getServiceContainer()
|
|
->getLockManagerGroupFactory()->getLockManagerGroup();
|
|
$conf['lockManager'] = $lockManagerGroup->get( $conf['lockManager'] );
|
|
$conf['domainId'] = WikiMap::getCurrentWikiId();
|
|
self::$backendToUse = new SwiftFileBackend( $conf );
|
|
}
|
|
return self::$backendToUse;
|
|
}
|
|
}
|