Skip to content

Commit 4e58200

Browse files
authored
[skip-changelog] Added some startup checks in integration test (#2962)
1 parent 16b2b20 commit 4e58200

File tree

1 file changed

+37
-4
lines changed

1 file changed

+37
-4
lines changed

internal/integrationtest/daemon/daemon_test.go

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"net/http"
2525
"net/http/httptest"
2626
"strings"
27+
"sync/atomic"
2728
"testing"
2829
"time"
2930

@@ -567,17 +568,36 @@ func TestDaemonUserAgent(t *testing.T) {
567568
// The user-agent is tested inside the HTTPServeFile function
568569
test_index := paths.New("..", "testdata", "test_index.json")
569570
url := env.HTTPServeFile(8000, test_index)
571+
// Wait for the server to be ready
572+
fmt.Print("Waiting for test server to be ready: ")
573+
for i := range 20 {
574+
if resp, err := http.Get(url.String()); err == nil && resp.StatusCode == http.StatusOK {
575+
fmt.Println("Test server is ready")
576+
break
577+
}
578+
time.Sleep(100 * time.Millisecond)
579+
fmt.Print(".")
580+
require.Less(t, i, 19, "Test server did not start in time")
581+
}
582+
583+
var enableTest atomic.Bool
584+
570585
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
571586
// Test that the user-agent contains metadata from the context when the CLI is in daemon mode
572587
userAgent := r.Header.Get("User-Agent")
573588

589+
if !enableTest.Load() {
590+
return
591+
}
592+
fmt.Println("Got user-agent:", userAgent)
593+
574594
require.Contains(t, userAgent, "cli-test/0.0.0")
575595
require.Contains(t, userAgent, "grpc-go")
576596
// Depends on how we built the client we may have git-snapshot or 0.0.0-git in dev releases
577-
require.Condition(t, func() (success bool) {
578-
return strings.Contains(userAgent, "arduino-cli/git-snapshot") ||
579-
strings.Contains(userAgent, "arduino-cli/0.0.0-git")
580-
})
597+
require.True(t,
598+
strings.Contains(userAgent, "arduino-cli/git-snapshot") || strings.Contains(userAgent, "arduino-cli/0.0.0-git"),
599+
"invalid user-agent value: "+userAgent,
600+
)
581601

582602
proxiedReq, err := http.NewRequest(r.Method, url.String(), r.Body)
583603
require.NoError(t, err)
@@ -594,6 +614,19 @@ func TestDaemonUserAgent(t *testing.T) {
594614
}))
595615
defer ts.Close()
596616

617+
fmt.Print("Waiting for the proxy test server to be ready: ")
618+
for i := range 20 {
619+
if resp, err := http.Get(ts.URL); err == nil && resp.StatusCode == http.StatusOK {
620+
fmt.Println("Test server is ready")
621+
break
622+
}
623+
time.Sleep(100 * time.Millisecond)
624+
fmt.Print(".")
625+
require.Less(t, i, 19, "Test server did not start in time")
626+
}
627+
628+
enableTest.Store(true)
629+
597630
grpcInst := cli.Create()
598631
require.NoError(t, grpcInst.Init("", "", func(ir *commands.InitResponse) {
599632
fmt.Printf("INIT> %v\n", ir.GetMessage())

0 commit comments

Comments
 (0)
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