Reduce overhead of health check endpoints

This commit is contained in:
Constantin Graf
2024-09-12 14:02:19 +02:00
committed by Constantin Graf
parent d3545b3c73
commit cc10af0b97
4 changed files with 17 additions and 4 deletions

View File

@@ -51,6 +51,9 @@ class Kernel extends HttpKernel
\Illuminate\Routing\Middleware\SubstituteBindings::class,
ForceJsonResponse::class,
],
'health-check' => [
],
];
/**

View File

@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace App\Providers;
use App\Http\Controllers\Web\HealthCheckController;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
@@ -37,6 +38,12 @@ class RouteServiceProvider extends ServiceProvider
});
$this->routes(function () {
Route::middleware('health-check')
->group(function () {
Route::get('health-check/up', [HealthCheckController::class, 'up']);
Route::get('health-check/debug', [HealthCheckController::class, 'debug']);
});
Route::middleware('api')
->prefix('api')
->name('api.')

View File

@@ -3,7 +3,6 @@
declare(strict_types=1);
use App\Http\Controllers\Web\DashboardController;
use App\Http\Controllers\Web\HealthCheckController;
use App\Http\Controllers\Web\HomeController;
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
@@ -64,6 +63,3 @@ Route::middleware([
})->name('import');
});
Route::get('health-check/up', [HealthCheckController::class, 'up']);
Route::get('health-check/debug', [HealthCheckController::class, 'debug']);

View File

@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Tests\Unit\Endpoint\Web;
use App\Http\Controllers\Web\HealthCheckController;
use Illuminate\Support\Facades\DB;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\UsesClass;
@@ -14,10 +15,16 @@ class HealthCheckEndpointTest extends EndpointTestAbstract
{
public function test_up_endpoint_returns_ok(): void
{
// Arrange
DB::enableQueryLog();
DB::flushQueryLog();
// Act
$response = $this->get('health-check/up');
$queryLog = DB::getQueryLog();
// Assert
$this->assertCount(0, $queryLog);
$response->assertSuccessful();
$response->assertExactJson([
'success' => true,