aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/integration/includes/libs/filebackend/SwiftFileBackendIntegrationTest.php
blob: e59bfdd33052c6b5c4ed9b117cd9d8d6e60c4579 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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;
	}
}