aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/integration/includes/libs/filebackend/SwiftFileBackendIntegrationTest.php
diff options
context:
space:
mode:
authorTim Starling <tstarling@wikimedia.org>2024-03-12 09:30:56 +1100
committerAaron Schulz <aschulz@wikimedia.org>2024-03-14 20:27:25 +0000
commitae994ff6ff7a8284beb85283201b337b9ef22f29 (patch)
treef6b65ec043b6db99e439ff48458314fd122cd9cf /tests/phpunit/integration/includes/libs/filebackend/SwiftFileBackendIntegrationTest.php
parent1ca627a6f6ae8f2256141c5e7454ae03453725b4 (diff)
downloadmediawikicore-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.php41
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;
+ }
+}