@@ -5,9 +5,11 @@ package e2e
55import (
66 "encoding/json"
77 "fmt"
8+ "net/http"
89 "os"
910 "path/filepath"
1011 "testing"
12+ "time"
1113
1214 "github.com/stretchr/testify/assert"
1315 "github.com/stretchr/testify/require"
@@ -29,6 +31,19 @@ func createDebugTraceRoute(t *testing.T, env []string, serviceID, routeID, path
2931 require .NoError (t , err , "stdout=%s stderr=%s" , stdout , stderr )
3032}
3133
34+ func waitForDebugTraceRoute (t * testing.T , path string ) {
35+ t .Helper ()
36+ status , err := waitForGatewayStatus (gatewayURL + path , func () (* http.Request , error ) {
37+ return http .NewRequest ("GET" , gatewayURL + path , nil )
38+ }, func (code int ) bool {
39+ return code != 404
40+ }, 15 * time .Second )
41+ require .NoError (t , err )
42+ if status == 404 {
43+ t .Skipf ("route %s did not propagate to the local gateway within timeout" , path )
44+ }
45+ }
46+
3247func TestDebugTrace_JSONOutput (t * testing.T ) {
3348 requireGatewayURL (t )
3449 requireHTTPBin (t )
@@ -41,6 +56,7 @@ func TestDebugTrace_JSONOutput(t *testing.T) {
4156 })
4257 createTestServiceViaCLI (t , env , svcID )
4358 createDebugTraceRoute (t , env , svcID , routeID , "/debug-trace-test" , "" )
59+ waitForDebugTraceRoute (t , "/debug-trace-test" )
4460
4561 // Trace the route with JSON output.
4662 stdout , stderr , err := runA7WithEnv (env , "debug" , "trace" , routeID ,
@@ -70,6 +86,7 @@ func TestDebugTrace_WithMethod(t *testing.T) {
7086 createTestServiceViaCLI (t , env , svcID )
7187 createDebugTraceRoute (t , env , svcID , routeID , "/debug-trace-method" ,
7288 `, "methods": ["GET", "POST"], "plugins": {"proxy-rewrite": {"uri": "/post"}}` )
89+ waitForDebugTraceRoute (t , "/debug-trace-method" )
7390
7491 // Trace with --method POST.
7592 stdout , stderr , err := runA7WithEnv (env , "debug" , "trace" , routeID ,
@@ -99,6 +116,7 @@ func TestDebugTrace_WithHeaders(t *testing.T) {
99116 })
100117 createTestServiceViaCLI (t , env , svcID )
101118 createDebugTraceRoute (t , env , svcID , routeID , "/debug-trace-headers" , "" )
119+ waitForDebugTraceRoute (t , "/debug-trace-headers" )
102120
103121 // Trace with custom header.
104122 stdout , stderr , err := runA7WithEnv (env , "debug" , "trace" , routeID ,
@@ -124,6 +142,7 @@ func TestDebugTrace_WithHost(t *testing.T) {
124142 createTestServiceViaCLI (t , env , svcID )
125143 createDebugTraceRoute (t , env , svcID , routeID , "/debug-trace-host" ,
126144 `, "host": "trace.example.com"` )
145+ waitForDebugTraceRoute (t , "/debug-trace-host" )
127146
128147 // Trace with --host flag.
129148 stdout , stderr , err := runA7WithEnv (env , "debug" , "trace" , routeID ,
@@ -151,6 +170,7 @@ func TestDebugTrace_WithPath(t *testing.T) {
151170 createTestServiceViaCLI (t , env , svcID )
152171 createDebugTraceRoute (t , env , svcID , routeID , "/debug-trace-path/*" ,
153172 `, "plugins": {"proxy-rewrite": {"uri": "/get"}}` )
173+ waitForDebugTraceRoute (t , "/debug-trace-path/sub" )
154174
155175 // Trace with --path flag override.
156176 stdout , stderr , err := runA7WithEnv (env , "debug" , "trace" , routeID ,
@@ -192,6 +212,7 @@ func TestDebugTrace_YAMLOutput(t *testing.T) {
192212 })
193213 createTestServiceViaCLI (t , env , svcID )
194214 createDebugTraceRoute (t , env , svcID , routeID , "/debug-trace-yaml" , "" )
215+ waitForDebugTraceRoute (t , "/debug-trace-yaml" )
195216
196217 stdout , stderr , err := runA7WithEnv (env , "debug" , "trace" , routeID ,
197218 "-g" , gatewayGroup ,
0 commit comments