@@ -22,6 +22,7 @@ func main() {
2222 must (waitForHTTP (cfg .schedulerMetricsURL + "/health" , client , cfg .maxRetries , cfg .retryInterval ))
2323 must (waitForHTTP (cfg .schedulerMetricsURL + "/metrics" , client , cfg .maxRetries , cfg .retryInterval ))
2424 must (waitForHTTP (cfg .agentMetricsURL + "/health" , client , cfg .maxRetries , cfg .retryInterval ))
25+ must (waitForRegisteredNode (cfg ))
2526
2627 logStep ("apply workload" )
2728 must (applyWorkloadWithRetry (cfg ))
@@ -41,11 +42,8 @@ func main() {
4142
4243 listOut , err := runSmokeCapture (cfg .schedulerGRPCAddr , "-op" , "list-workloads" )
4344 must (err )
44- var listResp listWorkloadsResponse
45- must (unmarshalSmokeJSON (listOut , & listResp ))
46- if ! containsWorkload (listResp .Workloads , cfg .testWorkloadID ) {
47- failf ("workload %s missing from list-workloads" , cfg .testWorkloadID )
48- }
45+ _ = listOut
46+ must (waitForWorkloadInList (cfg ))
4947
5048 summaryOut , err := runSmokeCapture (cfg .schedulerGRPCAddr , "-op" , "cluster-summary" )
5149 if err != nil {
@@ -131,7 +129,7 @@ func loadConfig() config {
131129
132130func applyWorkloadWithRetry (cfg config ) error {
133131 return poll (cfg .maxRetries , cfg .retryInterval , func () (bool , error ) {
134- err := runSmoke (cfg .schedulerGRPCAddr ,
132+ out , err := runSmokeCapture (cfg .schedulerGRPCAddr ,
135133 "-op" , "apply-container" ,
136134 "-workload-id" , cfg .testWorkloadID ,
137135 "-container-image" , "busybox:latest" ,
@@ -147,7 +145,48 @@ func applyWorkloadWithRetry(cfg config) error {
147145 }
148146 return false , err
149147 }
150- return true , nil
148+ lower := strings .ToLower (out )
149+ if strings .Contains (lower , "success=true" ) {
150+ return true , nil
151+ }
152+ if strings .Contains (lower , "no suitable node" ) || strings .Contains (lower , "cannot place workload" ) {
153+ return false , nil
154+ }
155+ return false , fmt .Errorf ("apply-container did not report success: %s" , out )
156+ })
157+ }
158+
159+ func waitForRegisteredNode (cfg config ) error {
160+ logStep ("wait for compute-agent node registration" )
161+ return poll (cfg .maxRetries , cfg .retryInterval , func () (bool , error ) {
162+ out , err := runSmokeCapture (cfg .schedulerGRPCAddr , "-op" , "cluster-summary" )
163+ if err != nil {
164+ return false , nil
165+ }
166+ var summary struct {
167+ TotalNodes int32 `json:"totalNodes"`
168+ }
169+ if err := unmarshalSmokeJSON (out , & summary ); err != nil {
170+ return false , nil
171+ }
172+ return summary .TotalNodes >= 1 , nil
173+ })
174+ }
175+
176+ func waitForWorkloadInList (cfg config ) error {
177+ return poll (cfg .maxRetries , cfg .retryInterval , func () (bool , error ) {
178+ out , err := runSmokeCapture (cfg .schedulerGRPCAddr , "-op" , "list-workloads" )
179+ if err != nil {
180+ return false , nil
181+ }
182+ var listResp listWorkloadsResponse
183+ if err := unmarshalSmokeJSON (out , & listResp ); err != nil {
184+ return false , nil
185+ }
186+ if containsWorkload (listResp .Workloads , cfg .testWorkloadID ) {
187+ return true , nil
188+ }
189+ return false , nil
151190 })
152191}
153192
0 commit comments