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)