You are here

class HoldTestSubscriber in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/system/tests/modules/hold_test/src/EventSubscriber/HoldTestSubscriber.php \Drupal\hold_test\EventSubscriber\HoldTestSubscriber
  2. 10 core/modules/system/tests/modules/hold_test/src/EventSubscriber/HoldTestSubscriber.php \Drupal\hold_test\EventSubscriber\HoldTestSubscriber

Response subscriber to test hold.

Hierarchy

  • class \Drupal\hold_test\EventSubscriber\HoldTestSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface

Expanded class hierarchy of HoldTestSubscriber

1 file declares its use of HoldTestSubscriber
hold_test.module in core/modules/system/tests/modules/hold_test/hold_test.module
Contains functions for testing hold request/response.
1 string reference to 'HoldTestSubscriber'
hold_test.services.yml in core/modules/system/tests/modules/hold_test/hold_test.services.yml
core/modules/system/tests/modules/hold_test/hold_test.services.yml
1 service uses HoldTestSubscriber
hold_test.response in core/modules/system/tests/modules/hold_test/hold_test.services.yml
Drupal\hold_test\EventSubscriber\HoldTestSubscriber

File

core/modules/system/tests/modules/hold_test/src/EventSubscriber/HoldTestSubscriber.php, line 11

Namespace

Drupal\hold_test\EventSubscriber
View source
class HoldTestSubscriber implements EventSubscriberInterface {
  const HOLD_REQUEST = 'request';
  const HOLD_RESPONSE = 'response';

  /**
   * Time in microseconds to wait for before checking if the file is updated.
   *
   * @var int
   */
  const WAIT = 100000;

  /**
   * The site path.
   *
   * @var string
   */
  protected $sitePath;

  /**
   * HoldTestSubscriber constructor.
   *
   * @param string $site_path
   *   The site path.
   */
  public function __construct(string $site_path) {
    $this->sitePath = $site_path;
  }

  /**
   * Request hold.
   */
  public function onRequest() {
    $this
      ->hold(static::HOLD_REQUEST);
  }

  /**
   * Response hold.
   */
  public function onRespond() {
    $this
      ->hold(static::HOLD_RESPONSE);
  }

  /**
   * Hold process by type.
   *
   * @param string $type
   *   Type of hold.
   */
  protected function hold($type) {
    $path = "{$this->sitePath}/hold_test_{$type}.txt";
    do {
      $status = (bool) file_get_contents($path);
    } while ($status && NULL === usleep(static::WAIT));
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    $events[KernelEvents::REQUEST][] = [
      'onRequest',
    ];
    $events[KernelEvents::RESPONSE][] = [
      'onRespond',
    ];
    return $events;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
HoldTestSubscriber::$sitePath protected property The site path.
HoldTestSubscriber::getSubscribedEvents public static function
HoldTestSubscriber::hold protected function Hold process by type.
HoldTestSubscriber::HOLD_REQUEST constant
HoldTestSubscriber::HOLD_RESPONSE constant
HoldTestSubscriber::onRequest public function Request hold.
HoldTestSubscriber::onRespond public function Response hold.
HoldTestSubscriber::WAIT constant Time in microseconds to wait for before checking if the file is updated.
HoldTestSubscriber::__construct public function HoldTestSubscriber constructor.