From e5f70173d540b5a125390a76a8b60fad5cfd757b Mon Sep 17 00:00:00 2001 From: iamgergo Date: Mon, 23 Nov 2020 12:56:47 +0100 Subject: [PATCH 1/3] wip --- .phpunit.result.cache | 1 + composer.json | 14 +++++++++- phpunit.xml | 34 +++++++++++++++++++++++++ src/QueueEventLoggerServiceProvider.php | 28 ++++++++++++++++++++ tests/CreatesApplication.php | 28 ++++++++++++++++++++ tests/Feature/QueueEventLoggerTest.php | 14 ++++++++++ tests/TestCase.php | 15 +++++++++++ 7 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 .phpunit.result.cache create mode 100644 phpunit.xml create mode 100644 src/QueueEventLoggerServiceProvider.php create mode 100644 tests/CreatesApplication.php create mode 100644 tests/Feature/QueueEventLoggerTest.php create mode 100644 tests/TestCase.php diff --git a/.phpunit.result.cache b/.phpunit.result.cache new file mode 100644 index 0000000..c6c5132 --- /dev/null +++ b/.phpunit.result.cache @@ -0,0 +1 @@ +C:37:"PHPUnit\Runner\DefaultTestResultCache":242:{a:2:{s:7:"defects";a:1:{s:85:"Larawelders\QueueEventLogger\Tests\Feature\QueueEventLoggerTest::it_logs_queue_events";i:4;}s:5:"times";a:1:{s:85:"Larawelders\QueueEventLogger\Tests\Feature\QueueEventLoggerTest::it_logs_queue_events";d:0.102;}}} \ No newline at end of file diff --git a/composer.json b/composer.json index c93f9f6..ba2b2d2 100644 --- a/composer.json +++ b/composer.json @@ -9,6 +9,18 @@ }, "require-dev": { "nunomaduro/larastan": "^0.6.9", - "orchestra/testbench": "^6.4" + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^9.0", + "laravel/laravel": "^8.0" + }, + "autoload": { + "psr-4": { + "Larawelders\\QueueEventLogger\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Larawelders\\QueueEventLogger\\Tests\\": "tests/" + } } } diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..4c08155 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,34 @@ + + + + + ./src + + + + + + + + ./tests/Unit + + + ./tests/Feature + + + + + + + + + + + + + + diff --git a/src/QueueEventLoggerServiceProvider.php b/src/QueueEventLoggerServiceProvider.php new file mode 100644 index 0000000..0df6da6 --- /dev/null +++ b/src/QueueEventLoggerServiceProvider.php @@ -0,0 +1,28 @@ +booting(static function () use ($app): void { + $app->register(QueueEventLoggerServiceProvider::class); + }); + + $app->make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/tests/Feature/QueueEventLoggerTest.php b/tests/Feature/QueueEventLoggerTest.php new file mode 100644 index 0000000..605186d --- /dev/null +++ b/tests/Feature/QueueEventLoggerTest.php @@ -0,0 +1,14 @@ +assertTrue(true); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 0000000..433b90a --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,15 @@ + Date: Mon, 23 Nov 2020 13:15:54 +0100 Subject: [PATCH 2/3] tests --- .phpunit.result.cache | 1 - composer.json | 14 ++++++++++- src/QueueEventLoggerServiceProvider.php | 31 ++++++++++++++++--------- tests/Feature/QueueEventLoggerTest.php | 30 ++++++++++++++++++++++-- 4 files changed, 61 insertions(+), 15 deletions(-) delete mode 100644 .phpunit.result.cache diff --git a/.phpunit.result.cache b/.phpunit.result.cache deleted file mode 100644 index c6c5132..0000000 --- a/.phpunit.result.cache +++ /dev/null @@ -1 +0,0 @@ -C:37:"PHPUnit\Runner\DefaultTestResultCache":242:{a:2:{s:7:"defects";a:1:{s:85:"Larawelders\QueueEventLogger\Tests\Feature\QueueEventLoggerTest::it_logs_queue_events";i:4;}s:5:"times";a:1:{s:85:"Larawelders\QueueEventLogger\Tests\Feature\QueueEventLoggerTest::it_logs_queue_events";d:0.102;}}} \ No newline at end of file diff --git a/composer.json b/composer.json index ba2b2d2..ffe64bd 100644 --- a/composer.json +++ b/composer.json @@ -22,5 +22,17 @@ "psr-4": { "Larawelders\\QueueEventLogger\\Tests\\": "tests/" } - } + }, + "extra": { + "laravel": { + "providers": [ + "Larawelders\\QueueEventLogger\\QueueEventLoggerServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "minimum-stability": "dev", + "prefer-stable": true } diff --git a/src/QueueEventLoggerServiceProvider.php b/src/QueueEventLoggerServiceProvider.php index 0df6da6..f70321e 100644 --- a/src/QueueEventLoggerServiceProvider.php +++ b/src/QueueEventLoggerServiceProvider.php @@ -2,20 +2,18 @@ namespace Larawelders\QueueEventLogger; +use Illuminate\Queue\Events\JobExceptionOccurred; +use Illuminate\Queue\Events\JobFailed; +use Illuminate\Queue\Events\JobProcessed; +use Illuminate\Queue\Events\JobProcessing; +use Illuminate\Queue\Events\Looping; +use Illuminate\Queue\Events\WorkerStopping; +use Illuminate\Support\Facades\Event; +use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; class QueueEventLoggerServiceProvider extends ServiceProvider { - /** - * Register any application services. - * - * @return void - */ - public function register(): void - { - // - } - /** * Boot any application services. * @@ -23,6 +21,17 @@ public function register(): void */ public function boot(): void { - // + Event::listen(JobExceptionOccurred::class, static function (JobExceptionOccurred $event) { + Log::channel('queue')->error( + sprintf( + '[%s] Uncaught exception %s in job %s: %s%s', + $event->job->getJobId(), + get_class($event->exception), + $event->job->resolveName(), + $event->exception->getMessage(), + property_exists($event->job, 'contextString') ? ', '.$event->job->contextString : '' + ) + ); + }); } } diff --git a/tests/Feature/QueueEventLoggerTest.php b/tests/Feature/QueueEventLoggerTest.php index 605186d..3e3f00a 100644 --- a/tests/Feature/QueueEventLoggerTest.php +++ b/tests/Feature/QueueEventLoggerTest.php @@ -2,13 +2,39 @@ namespace Larawelders\QueueEventLogger\Tests\Feature; +use Exception; +use Illuminate\Contracts\Queue\ShouldQueue; +use Illuminate\Queue\Events\JobExceptionOccurred; +use Illuminate\Support\Facades\Log; use Larawelders\QueueEventLogger\Tests\TestCase; class QueueEventLoggerTest extends TestCase { /** @test */ - public function it_logs_queue_events() + public function it_logs_job_exception_occurred_event() { - $this->assertTrue(true); + $job = new TestJob; + $exception = new Exception('TestJob failed'); + + $this->app['events']->dispatch( + new JobExceptionOccurred('default', $job, $exception) + ); + + Log::shouldReceive('queue')->with( + '[test-job] Uncaught exception Exception in job Larawelders\\QueueEventLogger\\Tests\\Feature\\TestJob: TestJob failed', + ); + } +} + +class TestJob implements ShouldQueue +{ + public function resolveName() + { + return static::class; + } + + public function getJobId() + { + return 'test-job'; } } From 54b697f32e0a33ee8f538fdc41a64ee1c643f2e4 Mon Sep 17 00:00:00 2001 From: iamgergo Date: Mon, 23 Nov 2020 13:18:14 +0100 Subject: [PATCH 3/3] cleanup --- src/QueueEventLoggerServiceProvider.php | 2 +- tests/TestCase.php | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/QueueEventLoggerServiceProvider.php b/src/QueueEventLoggerServiceProvider.php index f70321e..ce0ccb2 100644 --- a/src/QueueEventLoggerServiceProvider.php +++ b/src/QueueEventLoggerServiceProvider.php @@ -21,7 +21,7 @@ class QueueEventLoggerServiceProvider extends ServiceProvider */ public function boot(): void { - Event::listen(JobExceptionOccurred::class, static function (JobExceptionOccurred $event) { + Event::listen(JobExceptionOccurred::class, static function (JobExceptionOccurred $event): void { Log::channel('queue')->error( sprintf( '[%s] Uncaught exception %s in job %s: %s%s', diff --git a/tests/TestCase.php b/tests/TestCase.php index 433b90a..cf314cd 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -7,9 +7,4 @@ abstract class TestCase extends BaseTestCase { use CreatesApplication; - - public function setUp(): void - { - parent::setUp(); - } }