From cafeb3da8a5baca0539e2071273dbb0ef3b24e51 Mon Sep 17 00:00:00 2001 From: Alexandre Rulleau Date: Wed, 11 Feb 2026 15:35:44 +0100 Subject: [PATCH 1/3] test(Laravel-Octane): resolve race condition in Laravel Octane test callbacks Signed-off-by: Alexandre Rulleau --- .../Laravel/Octane/Latest/CommonScenariosTest.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/Integrations/Laravel/Octane/Latest/CommonScenariosTest.php b/tests/Integrations/Laravel/Octane/Latest/CommonScenariosTest.php index 13b66e2a4ba..d6e56928ece 100644 --- a/tests/Integrations/Laravel/Octane/Latest/CommonScenariosTest.php +++ b/tests/Integrations/Laravel/Octane/Latest/CommonScenariosTest.php @@ -134,7 +134,11 @@ public function testScenarioGetWithView() foreach ($traces as $trace) { foreach ($trace as $span) { - if ($span && isset($span["name"]) && $span["name"] === "laravel.request") { + if ($span + && isset($span["name"]) + && $span["name"] === "laravel.request" + && str_contains($span["resource"], 'App\\Http\\Controllers') + ) { return true; } } @@ -219,7 +223,11 @@ public function testScenarioGetWithException() foreach ($traces as $trace) { foreach ($trace as $span) { - if ($span && isset($span["name"]) && $span["name"] === "laravel.request") { + if ($span + && isset($span["name"]) + && $span["name"] === "laravel.request" + && str_contains($span["resource"], 'App\\Http\\Controllers') + ) { return true; } } From 947ddabbe2dfe0c52f2d4821d5d0bfd759af1221 Mon Sep 17 00:00:00 2001 From: Alexandre Rulleau Date: Wed, 11 Feb 2026 16:13:16 +0100 Subject: [PATCH 2/3] test(custom-webserver): invalidate git cache data and wait for nginx to be ready Signed-off-by: Alexandre Rulleau --- ext/git.c | 5 +++++ tests/Nginx/NginxServer.php | 3 +++ tests/WebServer.php | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/ext/git.c b/ext/git.c index 343f1752e34..0bdd5b5aeed 100644 --- a/ext/git.c +++ b/ext/git.c @@ -272,6 +272,8 @@ void replace_git_metadata(git_metadata_t *git_metadata, zend_string *commit_sha, void refresh_git_metadata_if_needed(zend_string *cwd, git_metadata_t *git_metadata) { zend_string *git_dir = find_git_dir(ZSTR_VAL(cwd)); if (!git_dir) { + // Git directory no longer exists - invalidate cached entry + zend_hash_del(&DDTRACE_G(git_metadata), cwd); return; } zend_string *commit_sha = get_commit_sha(ZSTR_VAL(git_dir)); @@ -286,6 +288,9 @@ void refresh_git_metadata_if_needed(zend_string *cwd, git_metadata_t *git_metada } else if (commit_sha) { zend_string *repository_url = get_repository_url(ZSTR_VAL(git_dir)); replace_git_metadata(git_metadata, commit_sha, repository_url); + } else if (git_metadata->property_commit) { + // If we previously had a commit SHA but now can't read it, the git folder became invalid + zend_hash_del(&DDTRACE_G(git_metadata), cwd); } zend_string_release(git_dir); diff --git a/tests/Nginx/NginxServer.php b/tests/Nginx/NginxServer.php index 5eb0f52f26d..bae117bca12 100644 --- a/tests/Nginx/NginxServer.php +++ b/tests/Nginx/NginxServer.php @@ -103,6 +103,9 @@ public function waitUntilServerRunning() $socket = @fsockopen($this->serverHost, $this->hostPort); if ($socket !== false) { fclose($socket); + // Give nginx and PHP-FPM a bit more time to stabilize after port opens + // This prevents 502 Bad Gateway errors from happening right after startup + usleep(500000); // 500ms additional settle time return true; } usleep(50000); diff --git a/tests/WebServer.php b/tests/WebServer.php index c0da4de0a90..7c6215e3c53 100644 --- a/tests/WebServer.php +++ b/tests/WebServer.php @@ -237,6 +237,11 @@ public function start() self::FCGI_PORT ); $this->server->start(); + + // Wait for nginx to be ready before proceeding with tests + if (!$this->server->waitUntilServerRunning()) { + throw new \Exception('Nginx failed to start within expected time'); + } } } From 17c6cae8864f2f182bd904f0b0368b8442f5b189 Mon Sep 17 00:00:00 2001 From: Alexandre Rulleau Date: Thu, 12 Feb 2026 01:01:55 +0100 Subject: [PATCH 3/3] test(CI): use older sqlserver image Signed-off-by: Alexandre Rulleau --- .gitlab/generate-common.php | 2 +- tests/Nginx/NginxServer.php | 3 +-- tests/WebServer.php | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.gitlab/generate-common.php b/.gitlab/generate-common.php index 37aba561fd5..009673d1e91 100644 --- a/.gitlab/generate-common.php +++ b/.gitlab/generate-common.php @@ -200,7 +200,7 @@ function dockerhub_login() { MONGO_INITDB_ROOT_PASSWORD: test sqlsrv: - name: registry.ddbuild.io/images/mirror/sqlserver:2022-latest + name: registry.ddbuild.io/images/mirror/sqlserver:2019-CU15-ubuntu-20.04 alias: sqlsrv-integration variables: ACCEPT_EULA: Y diff --git a/tests/Nginx/NginxServer.php b/tests/Nginx/NginxServer.php index bae117bca12..40b1377fb98 100644 --- a/tests/Nginx/NginxServer.php +++ b/tests/Nginx/NginxServer.php @@ -104,8 +104,7 @@ public function waitUntilServerRunning() if ($socket !== false) { fclose($socket); // Give nginx and PHP-FPM a bit more time to stabilize after port opens - // This prevents 502 Bad Gateway errors from happening right after startup - usleep(500000); // 500ms additional settle time + usleep(500000); return true; } usleep(50000); diff --git a/tests/WebServer.php b/tests/WebServer.php index 7c6215e3c53..ce7d27c1dbf 100644 --- a/tests/WebServer.php +++ b/tests/WebServer.php @@ -238,7 +238,6 @@ public function start() ); $this->server->start(); - // Wait for nginx to be ready before proceeding with tests if (!$this->server->waitUntilServerRunning()) { throw new \Exception('Nginx failed to start within expected time'); }