From 7c4d8882284a076cef284c31e99bbb476e8d76b7 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 30 Jul 2025 17:59:09 +0200 Subject: [PATCH] Added some startup checks in integration test --- .../integrationtest/daemon/daemon_test.go | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/internal/integrationtest/daemon/daemon_test.go b/internal/integrationtest/daemon/daemon_test.go index ae094a0d856..20171e66da7 100644 --- a/internal/integrationtest/daemon/daemon_test.go +++ b/internal/integrationtest/daemon/daemon_test.go @@ -24,6 +24,7 @@ import ( "net/http" "net/http/httptest" "strings" + "sync/atomic" "testing" "time" @@ -567,17 +568,36 @@ func TestDaemonUserAgent(t *testing.T) { // The user-agent is tested inside the HTTPServeFile function test_index := paths.New("..", "testdata", "test_index.json") url := env.HTTPServeFile(8000, test_index) + // Wait for the server to be ready + fmt.Print("Waiting for test server to be ready: ") + for i := range 20 { + if resp, err := http.Get(url.String()); err == nil && resp.StatusCode == http.StatusOK { + fmt.Println("Test server is ready") + break + } + time.Sleep(100 * time.Millisecond) + fmt.Print(".") + require.Less(t, i, 19, "Test server did not start in time") + } + + var enableTest atomic.Bool + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Test that the user-agent contains metadata from the context when the CLI is in daemon mode userAgent := r.Header.Get("User-Agent") + if !enableTest.Load() { + return + } + fmt.Println("Got user-agent:", userAgent) + require.Contains(t, userAgent, "cli-test/0.0.0") require.Contains(t, userAgent, "grpc-go") // Depends on how we built the client we may have git-snapshot or 0.0.0-git in dev releases - require.Condition(t, func() (success bool) { - return strings.Contains(userAgent, "arduino-cli/git-snapshot") || - strings.Contains(userAgent, "arduino-cli/0.0.0-git") - }) + require.True(t, + strings.Contains(userAgent, "arduino-cli/git-snapshot") || strings.Contains(userAgent, "arduino-cli/0.0.0-git"), + "invalid user-agent value: "+userAgent, + ) proxiedReq, err := http.NewRequest(r.Method, url.String(), r.Body) require.NoError(t, err) @@ -594,6 +614,19 @@ func TestDaemonUserAgent(t *testing.T) { })) defer ts.Close() + fmt.Print("Waiting for the proxy test server to be ready: ") + for i := range 20 { + if resp, err := http.Get(ts.URL); err == nil && resp.StatusCode == http.StatusOK { + fmt.Println("Test server is ready") + break + } + time.Sleep(100 * time.Millisecond) + fmt.Print(".") + require.Less(t, i, 19, "Test server did not start in time") + } + + enableTest.Store(true) + grpcInst := cli.Create() require.NoError(t, grpcInst.Init("", "", func(ir *commands.InitResponse) { fmt.Printf("INIT> %v\n", ir.GetMessage()) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy