diff --git a/core/modules/dblog/tests/src/Functional/DbLogTest.php b/core/modules/dblog/tests/src/Functional/DbLogTest.php index 075adb255ad8..45ad33bf2316 100644 --- a/core/modules/dblog/tests/src/Functional/DbLogTest.php +++ b/core/modules/dblog/tests/src/Functional/DbLogTest.php @@ -9,7 +9,6 @@ use Drupal\Core\Logger\RfcLogLevel; use Drupal\Core\Url; use Drupal\dblog\Controller\DbLogController; use Drupal\Tests\BrowserTestBase; -use Drupal\Tests\Traits\Core\CronRunTrait; /** * Generate events and verify dblog entries; verify user access to log reports @@ -18,7 +17,6 @@ use Drupal\Tests\Traits\Core\CronRunTrait; * @group dblog */ class DbLogTest extends BrowserTestBase { - use CronRunTrait; use FakeLogEntries; /** @@ -68,7 +66,6 @@ class DbLogTest extends BrowserTestBase { $row_limit = 100; $this->verifyRowLimit($row_limit); - $this->verifyCron($row_limit); $this->verifyEvents(); $this->verifyReports(); $this->verifyBreadcrumbs(); @@ -138,52 +135,6 @@ class DbLogTest extends BrowserTestBase { $this->assertTrue($current_limit == $row_limit, format_string('[Cache] Row limit variable of @count equals row limit of @limit', ['@count' => $current_limit, '@limit' => $row_limit])); } - /** - * Verifies that cron correctly applies the database log row limit. - * - * @param int $row_limit - * The row limit. - */ - private function verifyCron($row_limit) { - // Generate additional log entries. - $this->generateLogEntries($row_limit + 10); - // Verify that the database log row count exceeds the row limit. - $count = db_query('SELECT COUNT(wid) FROM {watchdog}')->fetchField(); - $this->assertTrue($count > $row_limit, format_string('Dblog row count of @count exceeds row limit of @limit', ['@count' => $count, '@limit' => $row_limit])); - - // Get the number of enabled modules. Cron adds a log entry for each module. - $list = \Drupal::moduleHandler()->getImplementations('cron'); - $module_count = count($list); - $cron_detailed_count = $this->runCron(); - $this->assertTrue($cron_detailed_count == $module_count + 2, format_string('Cron added @count of @expected new log entries', ['@count' => $cron_detailed_count, '@expected' => $module_count + 2])); - - // Test disabling of detailed cron logging. - $this->config('system.cron')->set('logging', 0)->save(); - $cron_count = $this->runCron(); - $this->assertTrue($cron_count = 1, format_string('Cron added @count of @expected new log entries', ['@count' => $cron_count, '@expected' => 1])); - } - - /** - * Runs cron and returns number of new log entries. - * - * @return int - * Number of new watchdog entries. - */ - private function runCron() { - // Get last ID to compare against; log entries get deleted, so we can't - // reliably add the number of newly created log entries to the current count - // to measure number of log entries created by cron. - $last_id = db_query('SELECT MAX(wid) FROM {watchdog}')->fetchField(); - - // Run a cron job. - $this->cronRun(); - - // Get last ID after cron was run. - $current_id = db_query('SELECT MAX(wid) FROM {watchdog}')->fetchField(); - - return $current_id - $last_id; - } - /** * Clear the entry logs by clicking on 'Clear log messages' button. */ diff --git a/core/modules/dblog/tests/src/Kernel/DbLogTest.php b/core/modules/dblog/tests/src/Kernel/DbLogTest.php new file mode 100644 index 000000000000..fc5eac7af18b --- /dev/null +++ b/core/modules/dblog/tests/src/Kernel/DbLogTest.php @@ -0,0 +1,77 @@ +installSchema('dblog', ['watchdog']); + $this->installSchema('system', ['key_value_expire', 'sequences']); + $this->installConfig(['system']); + } + + /** + * Tests that cron correctly applies the database log row limit. + */ + public function testDbLogCron() { + $row_limit = 100; + // Generate additional log entries. + $this->generateLogEntries($row_limit + 10); + // Verify that the database log row count exceeds the row limit. + $count = db_query('SELECT COUNT(wid) FROM {watchdog}')->fetchField(); + $this->assertGreaterThan($row_limit, $count, format_string('Dblog row count of @count exceeds row limit of @limit', ['@count' => $count, '@limit' => $row_limit])); + + // Get the number of enabled modules. Cron adds a log entry for each module. + $list = $this->container->get('module_handler')->getImplementations('cron'); + $module_count = count($list); + $cron_detailed_count = $this->runCron(); + $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])); + + // Test disabling of detailed cron logging. + $this->config('system.cron')->set('logging', 0)->save(); + $cron_count = $this->runCron(); + $this->assertEquals(1, $cron_count, format_string('Cron added @count of @expected new log entries', ['@count' => $cron_count, '@expected' => 1])); + } + + /** + * Runs cron and returns number of new log entries. + * + * @return int + * Number of new watchdog entries. + */ + private function runCron() { + // Get last ID to compare against; log entries get deleted, so we can't + // reliably add the number of newly created log entries to the current count + // to measure number of log entries created by cron. + $last_id = db_query('SELECT MAX(wid) FROM {watchdog}')->fetchField(); + + // Run a cron job. + $this->container->get('cron')->run(); + + // Get last ID after cron was run. + $current_id = db_query('SELECT MAX(wid) FROM {watchdog}')->fetchField(); + + return $current_id - $last_id; + } + +}