aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/BackgroundJob/TestParallelAwareJob.php
blob: 480762a270959ece725c4ff56a7d3e1c5009acc0 (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
36
37
<?php
/**
 * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
 * This file is licensed under the Affero General Public License version 3 or
 * later.
 * See the COPYING-README file.
 */

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);
	}
}