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

tests/src/Kernel/MonitoringResponseTimeSensorTest.php
<?php

namespace Drupal\Tests\monitoring\Kernel;

use Drupal\monitoring\Entity\SensorConfig;

/**
 * Kernel tests for the monitoring response time plugin.
 *
 * @group monitoring
 */
class MonitoringResponseTimeSensorTest extends MonitoringUnitTestBase {

  /**
   * Test the response time sensor plugin.
   */
  public function testResponseTimeSensorPlugin() {
    $sensor = SensorConfig::create([
      'id' => 'response_time_test',
      'label' => 'Response time',
      'plugin_id' => 'response_time',
      'caching_time' => 86400,
      'value_type' => 'number',
      'value_label' => 'ms',
      'thresholds' => [
        'type' => 'exceeds',
        'warning' => 3000,
        'critical' => 3200,
      ],
      'settings' => [
        'main_metric' => 'percentile_90',
        'lines' => 25,
        'log_file' => \Drupal::service('extension.list.module')->getPath('monitoring') . '/tests/fixtures/example.php.access.log',
      ],
    ]);
    $sensor->save();

    $sensor_result = $this->runSensor('response_time_test');
    $this->assertTrue($sensor_result->isOk());
    $this->assertEquals('2935 ms, Average: 1010 ms, 90%: 2935 ms, 95%: 4626ms, start date: 2021-11-13T15:36:54Z', $sensor_result->getMessage());

    // More lines than the length of the file.
    $sensor->set('settings', [
      'main_metric' => 'percentile_90',
      'lines' => 2500,
      'log_file' => __DIR__ . '/../../fixtures/example.php.access.log',
    ]);
    $sensor->save();
    \Drupal::state()->delete('monitoring.response_time_test');
    $sensor_result = $this->runSensor('response_time_test');
    $this->assertTrue($sensor_result->isOk());
    $this->assertEquals('2856 ms, Average: 975 ms, 90%: 2856 ms, 95%: 4540ms, start date: 2021-11-13T15:23:36Z', $sensor_result->getMessage());

    // Change thresholds to get the warning status.
    $sensor->set('thresholds', [
      'type' => 'exceeds',
      'warning' => '2800',
      'critical' => 3000,
    ]);
    $sensor->save();
    $sensor_result = $this->runSensor('response_time_test');
    $this->assertTrue($sensor_result->isWarning());
    $this->assertEquals('2856 ms, exceeds 2800, Average: 975 ms, 90%: 2856 ms, 95%: 4540ms, start date: 2021-11-13T15:23:36Z', $sensor_result->getMessage());

    // Change thresholds to get the critical status.
    $sensor->set('thresholds', [
      'type' => 'exceeds',
      'warning' => '2500',
      'critical' => 2800,
    ]);
    $sensor->save();
    $sensor_result = $this->runSensor('response_time_test');
    $this->assertTrue($sensor_result->isCritical());
    $this->assertEquals('2856 ms, exceeds 2800, Average: 975 ms, 90%: 2856 ms, 95%: 4540ms, start date: 2021-11-13T15:23:36Z', $sensor_result->getMessage());

    // New metric.
    $sensor->set('settings', [
      'main_metric' => 'percentile_95',
      'lines' => 25,
      'log_file' => __DIR__ . '/../../fixtures/example.php.access.log',
    ]);
    $sensor->save();
    $sensor_result = $this->runSensor('response_time_test');
    $this->assertEquals('4626', $sensor_result->getValue());
    $this->assertTrue($sensor_result->isCritical());
    $this->assertEquals('4626 ms, exceeds 2800, Average: 1010 ms, 90%: 2935 ms, 95%: 4626ms, start date: 2021-11-13T15:36:54Z', $sensor_result->getMessage());

    // New metric.
    $sensor->set('settings', [
      'main_metric' => 'average',
      'lines' => 25,
      'log_file' => __DIR__ . '/../../fixtures/example.php.access.log',
    ]);
    $sensor->save();
    $sensor_result = $this->runSensor('response_time_test');
    $this->assertEquals('1010', $sensor_result->getValue());
    $this->assertTrue($sensor_result->isOk());
    $this->assertEquals('1010 ms, Average: 1010 ms, 90%: 2935 ms, 95%: 4626ms, start date: 2021-11-13T15:36:54Z', $sensor_result->getMessage());

    // Set invalid file.
    $sensor->set('settings', [
      'main_metric' => 'percentile_90',
      'lines' => 25,
      'log_file' => '/example.php.access.log',
    ]);
    $sensor->save();
    $sensor_result = $this->runSensor('response_time_test');
    $this->assertTrue($sensor_result->isCritical());
    $this->assertEquals('Exception: Log file /example.php.access.log not found.', $sensor_result->getMessage());

    // Empty file.
    $sensor->set('settings', [
      'main_metric' => 'percentile_90',
      'lines' => 25,
      'log_file' => __DIR__ . '/../../fixtures/empty.php.access.log',
    ]);
    $sensor->save();
    $sensor_result = $this->runSensor('response_time_test');
    $this->assertTrue($sensor_result->isWarning());
    $this->assertEquals('Log file ' . __DIR__ . '/../../fixtures/empty.php.access.log is empty.', $sensor_result->getMessage());

  }

}

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

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