monitoring-8.x-1.x-dev/tests/src/Kernel/MonitoringPastTest.php

tests/src/Kernel/MonitoringPastTest.php
<?php
/**
 * @file
 * Contains \Drupal\Tests\monitoring\Kernel\MonitoringPastTest.
 */

namespace Drupal\Tests\monitoring\Kernel;

use Drupal\Core\Logger\RfcLogLevel;

/**
 * Tests for the past sensors in monitoring.
 *
 * @group monitoring
 * @dependencies past_db
 */
class MonitoringPastTest extends MonitoringUnitTestBase {

  protected static $modules = ['views', 'past', 'past_db', 'options'];

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    // Install the past entities and tables.
    $this->installEntitySchema('past_event');
    $this->installSchema('past_db', array('past_event_argument', 'past_event_data'));
    $this->installConfig(['system']);
    \Drupal::service('router.builder')->rebuild();

    // Prevent deprecation notices in Html::escape();
    $request_stack = $this->container->get('request_stack');
    $request = $request_stack->getCurrentRequest();
    $request->headers->set('referer', 'foo/bar');
  }

  /**
   * Tests the sensors that monitors past events.
   */
  public function testPastSensors() {

    // Creates dummy events for testing.
    $this->createEvents();

    // Run each sensor and test output.
    $result = $this->runSensor('past_db_critical');
    $this->assertEquals($result->getMessage(), '3 events in 1 day');

    $result = $this->runSensor('past_db_debug');
    $this->assertEquals($result->getMessage(), '2 events in 1 day');

    $result = $this->runSensor('past_db_emergency');
    $this->assertEquals($result->getMessage(), '3 events in 1 day');

    $result = $this->runSensor('past_db_error');
    $this->assertEquals($result->getMessage(), '3 events in 1 day');

    $result = $this->runSensor('past_db_info');
    $this->assertEquals($result->getMessage(), '2 events in 1 day');

    $result = $this->runSensor('past_db_notice');
    $this->assertEquals($result->getMessage(), '2 events in 1 day');

    $result = $this->runSensor('past_db_warning');
    $this->assertEquals($result->getMessage(), '3 events in 1 day');
  }

  /**
   * Creates some sample events.
   */
  protected function createEvents($count = 20) {
    // Set some for log creation.
    $machine_name = 'machine name';
    $severities = RfcLogLevel::getLevels();
    $severities_codes = array_keys($severities);
    $severities_count = count($severities);
    $event_desc = 'message #';

    // Prepare some logs.
    for ($i = 0; $i <= $count; $i++) {
      $event = past_event_create('past_db', $machine_name, $event_desc . ($i + 1), ['timestamp' => \Drupal::time()->getRequestTime()]);
      $event->setReferer('http://example.com/test-referer');
      $event->setLocation('http://example.com/this-url-gets-heavy-long/testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttest-testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttest-testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttest-testtesttesttesttesttesttest/seeme.htm');
      $event->addArgument('arg1', 'First Argument');
      $event->addArgument('arg2', new \stdClass());
      $event->addArgument('arg3', FALSE);
      $event->setSeverity($severities_codes[$i % $severities_count]);
      $event->save();
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc