diff options
author | Tim Starling <tstarling@wikimedia.org> | 2024-03-12 09:30:56 +1100 |
---|---|---|
committer | Aaron Schulz <aschulz@wikimedia.org> | 2024-03-14 20:27:25 +0000 |
commit | ae994ff6ff7a8284beb85283201b337b9ef22f29 (patch) | |
tree | f6b65ec043b6db99e439ff48458314fd122cd9cf /tests/phpunit/integration/includes/libs/filebackend/SwiftFileBackendIntegrationTest.php | |
parent | 1ca627a6f6ae8f2256141c5e7454ae03453725b4 (diff) | |
download | mediawikicore-ae994ff6ff7a8284beb85283201b337b9ef22f29.tar.gz mediawikicore-ae994ff6ff7a8284beb85283201b337b9ef22f29.zip |
filebackend: Refactor FileBackendIntegrationTest
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
Diffstat (limited to 'tests/phpunit/integration/includes/libs/filebackend/SwiftFileBackendIntegrationTest.php')
-rw-r--r-- | tests/phpunit/integration/includes/libs/filebackend/SwiftFileBackendIntegrationTest.php | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/phpunit/integration/includes/libs/filebackend/SwiftFileBackendIntegrationTest.php b/tests/phpunit/integration/includes/libs/filebackend/SwiftFileBackendIntegrationTest.php new file mode 100644 index 000000000000..e59bfdd33052 --- /dev/null +++ b/tests/phpunit/integration/includes/libs/filebackend/SwiftFileBackendIntegrationTest.php @@ -0,0 +1,41 @@ +<?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; + } +} |