aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/BackgroundJob/TestParallelAwareJob.php
blob: f7a6cf5fa793bd57aefe8a15da11594a56ec0a07 (plain)
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
<?php
/**
 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */

namespace Test\BackgroundJob;

use OCP\AppFramework\Utility\ITimeFactory;

class TestParallelAwareJob extends \OCP\BackgroundJob\Job {
	private $testCase;

	/**
	 * @var callable $callback
	 */
	private $callback;

	/**
	 * @param JobTest $testCase
	 * @param callable $callback
	 */
	public function __construct(?ITimeFactory $time = null, $testCase = null, $callback = null) {
		parent::__construct($time ?? \OC::$server->get(ITimeFactory::class));
		$this->setAllowParallelRuns(false);
		$this->testCase = $testCase;
		$this->callback = $callback;
	}

	public function run($argument) {
		$this->testCase->markRun();
		$callback = $this->callback;
		$callback($argument);
	}
}