File: SwiftFileBackendIntegrationTest.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (43 lines) | stat: -rw-r--r-- 1,372 bytes parent folder | download
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
42
43
<?php

use MediaWiki\MainConfigNames;
use MediaWiki\WikiMap\WikiMap;
use Wikimedia\FileBackend\SwiftFileBackend;

/**
 * @group FileBackend
 * @covers \Wikimedia\FileBackend\SwiftFileBackend
 */
class SwiftFileBackendIntegrationTest extends FileBackendIntegrationTestBase {
	/** @var SwiftFileBackend|null */
	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;
	}
}