annotate core/modules/dblog/tests/src/Kernel/DbLogTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents a9cd425dd02b
children
rev   line source
Chris@4 1 <?php
Chris@4 2
Chris@4 3 namespace Drupal\Tests\dblog\Kernel;
Chris@4 4
Chris@4 5 use Drupal\KernelTests\KernelTestBase;
Chris@4 6 use Drupal\Tests\dblog\Functional\FakeLogEntries;
Chris@4 7
Chris@4 8 /**
Chris@4 9 * Generate events and verify dblog entries.
Chris@4 10 *
Chris@4 11 * @group dblog
Chris@4 12 */
Chris@4 13 class DbLogTest extends KernelTestBase {
Chris@4 14
Chris@4 15 use FakeLogEntries;
Chris@4 16
Chris@4 17 /**
Chris@4 18 * {@inheritdoc}
Chris@4 19 */
Chris@4 20 protected static $modules = ['dblog', 'system'];
Chris@4 21
Chris@4 22 /**
Chris@4 23 * {@inheritdoc}
Chris@4 24 */
Chris@4 25 protected function setUp() {
Chris@4 26 parent::setUp();
Chris@4 27
Chris@4 28 $this->installSchema('dblog', ['watchdog']);
Chris@4 29 $this->installSchema('system', ['key_value_expire', 'sequences']);
Chris@4 30 $this->installConfig(['system']);
Chris@4 31 }
Chris@4 32
Chris@4 33 /**
Chris@4 34 * Tests that cron correctly applies the database log row limit.
Chris@4 35 */
Chris@4 36 public function testDbLogCron() {
Chris@4 37 $row_limit = 100;
Chris@4 38 // Generate additional log entries.
Chris@4 39 $this->generateLogEntries($row_limit + 10);
Chris@4 40 // Verify that the database log row count exceeds the row limit.
Chris@4 41 $count = db_query('SELECT COUNT(wid) FROM {watchdog}')->fetchField();
Chris@4 42 $this->assertGreaterThan($row_limit, $count, format_string('Dblog row count of @count exceeds row limit of @limit', ['@count' => $count, '@limit' => $row_limit]));
Chris@4 43
Chris@4 44 // Get the number of enabled modules. Cron adds a log entry for each module.
Chris@4 45 $list = $this->container->get('module_handler')->getImplementations('cron');
Chris@4 46 $module_count = count($list);
Chris@4 47 $cron_detailed_count = $this->runCron();
Chris@4 48 $this->assertEquals($module_count + 2, $cron_detailed_count, format_string('Cron added @count of @expected new log entries', ['@count' => $cron_detailed_count, '@expected' => $module_count + 2]));
Chris@4 49
Chris@4 50 // Test disabling of detailed cron logging.
Chris@4 51 $this->config('system.cron')->set('logging', 0)->save();
Chris@4 52 $cron_count = $this->runCron();
Chris@4 53 $this->assertEquals(1, $cron_count, format_string('Cron added @count of @expected new log entries', ['@count' => $cron_count, '@expected' => 1]));
Chris@4 54 }
Chris@4 55
Chris@4 56 /**
Chris@4 57 * Runs cron and returns number of new log entries.
Chris@4 58 *
Chris@4 59 * @return int
Chris@4 60 * Number of new watchdog entries.
Chris@4 61 */
Chris@4 62 private function runCron() {
Chris@4 63 // Get last ID to compare against; log entries get deleted, so we can't
Chris@4 64 // reliably add the number of newly created log entries to the current count
Chris@4 65 // to measure number of log entries created by cron.
Chris@4 66 $last_id = db_query('SELECT MAX(wid) FROM {watchdog}')->fetchField();
Chris@4 67
Chris@4 68 // Run a cron job.
Chris@4 69 $this->container->get('cron')->run();
Chris@4 70
Chris@4 71 // Get last ID after cron was run.
Chris@4 72 $current_id = db_query('SELECT MAX(wid) FROM {watchdog}')->fetchField();
Chris@4 73
Chris@4 74 return $current_id - $last_id;
Chris@4 75 }
Chris@4 76
Chris@4 77 }