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

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

namespace Drupal\Tests\monitoring\Kernel;

use Drupal\monitoring\Entity\SensorConfig;

/**
 * Kernel tests for the  monitoring database disk usage plugin.
 *
 * @group monitoring
 */
class MonitoringDatabaseDiskUsageSensorTest extends MonitoringUnitTestBase {

  /**
   * Tests the database disk usage sensor.
   */
  public function testDatabaseDiskUsage() {
    $sensor_config = SensorConfig::load('database_disk_usage');
    $sensor_config->thresholds['type'] = 'exceeds';
    $sensor_config->thresholds['warning'] = 80;
    $sensor_config->thresholds['critical'] = 100;
    $sensor_config->save();

    if (\Drupal::database()->databaseType() == 'mysql') {
      \Drupal::state()->set('monitoring.test_database_disk_usage', '');

      $sensor_result = $this->runSensor('database_disk_usage');
      $this->assertTrue($sensor_result->isCritical());
      $this->assertEquals($sensor_result->getMessage(), 'RuntimeException: The disk space usage is not available.');

      \Drupal::state()->set('monitoring.test_database_disk_usage', 50);

      $sensor_result = $this->runSensor('database_disk_usage');
      $this->assertTrue($sensor_result->isOk());
      $this->assertEquals($sensor_result->getMessage(), '50.00 mb');

      $verbose_output = $sensor_result->getVerboseOutput();
      $this->setRawContent(\Drupal::getContainer()->get('renderer')->renderPlain($verbose_output));
      $this->assertText('62.50%');
      $this->assertText('50.00%');

      \Drupal::state()->set('monitoring.test_database_disk_usage', 81);

      $sensor_result = $this->runSensor('database_disk_usage');
      $this->assertTrue($sensor_result->isWarning());
      $this->assertEquals($sensor_result->getMessage(), '81.00 mb, exceeds 80');

      $verbose_output = $sensor_result->getVerboseOutput();
      $this->setRawContent(\Drupal::getContainer()->get('renderer')->renderPlain($verbose_output));
      $this->assertText('101.25%');
      $this->assertText('81.00%');

      \Drupal::state()->set('monitoring.test_database_disk_usage', 101);

      $sensor_result = $this->runSensor('database_disk_usage');
      $this->assertTrue($sensor_result->isCritical());
      $this->assertEquals($sensor_result->getMessage(), '101.00 mb, exceeds 100');

      $verbose_output = $sensor_result->getVerboseOutput();
      $this->setRawContent(\Drupal::getContainer()->get('renderer')->renderPlain($verbose_output));
      $this->assertText('126.25%');
      $this->assertText('101.00%');
    }
    else {
      $sensor_result = $this->runSensor('database_disk_usage');
      $this->assertTrue($sensor_result->isCritical());
      $this->assertEquals($sensor_result->getMessage(), 'RuntimeException: The table information is only available for mysql databases.');
    }

  }

}

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

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