WorkAllocatorTest.php

Namespace

Drupal\Tests\Core\Test

File

core/tests/Drupal/Tests/Core/Test/WorkAllocatorTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\Core\Test;

use Drupal\Tests\UnitTestCase;
use Drupal\TestTools\TestRunner\WorkAllocator;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Group;

/**
 * Unit tests for WorkAllocator.
 */
class WorkAllocatorTest extends UnitTestCase {
  
  /**
   * Tests sorting and allocation of tests.
   */
  public function testAllocator(int $totalBins, int $binIndex, array $groupedTestClassInfoList, array $expected) : void {
    $allocator = new WorkAllocator($groupedTestClassInfoList, $totalBins, $binIndex);
    $this->assertEquals($expected, $allocator->getAllocatedList());
  }
  
  /**
   * Data for ::testAllocator.
   */
  public static function allocatorProvider() : \Generator {
    $path = __DIR__ . '/../../../../fixtures/test_runner/work_allocator';
    yield 'with slow test, single bin' => [
      1,
      1,
      json_decode(file_get_contents($path . '/simple_in.json'), TRUE),
      json_decode(file_get_contents($path . '/simple_out.json'), TRUE),
    ];
    yield 'with slow test, 2 bins, bin #1' => [
      2,
      1,
      json_decode(file_get_contents($path . '/simple_in.json'), TRUE),
      json_decode(file_get_contents($path . '/simple_one_of_two_out.json'), TRUE),
    ];
    // This is an edge case. Since we have 1 #slow test class and one other
    // test class not #slow, both classes get allocated to bin #1, and bin #2
    // remains empty, because the current algorithm allocates first all #slow
    // then all normal starting again. Does not happen in practice.
    yield 'with slow test, 2 bins, bin #2' => [
      2,
      2,
      json_decode(file_get_contents($path . '/simple_in.json'), TRUE),
      [],
    ];
    yield 'with slow test, 8 bins, bin #2' => [
      8,
      2,
      json_decode(file_get_contents($path . '/complex_in.json'), TRUE),
      json_decode(file_get_contents($path . '/complex_two_of_eight_out.json'), TRUE),
    ];
  }

}

Classes

Title Deprecated Summary
WorkAllocatorTest Unit tests for WorkAllocator.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.