@@ -321,9 +321,11 @@ func BuildHTTPRequest() *HTTPRequestBuilder {
321
321
}
322
322
}
323
323
324
- func (m * HTTPRequest ) Run (ctx context.Context , l * zap.Logger ) * ContainerResult {
325
- result := & ContainerResult {}
326
- var err error
324
+ func (m * HTTPRequest ) Run (ctx context.Context , l * zap.Logger ) * Container {
325
+ result := ContainerResult {}
326
+ c := & Container {
327
+ resultCh : make (chan ContainerResult ),
328
+ }
327
329
328
330
envVars := m .toEnvVars ()
329
331
@@ -337,7 +339,7 @@ func (m *HTTPRequest) Run(ctx context.Context, l *zap.Logger) *ContainerResult {
337
339
},
338
340
LogConsumerCfg : & testcontainers.LogConsumerConfig {
339
341
Opts : []testcontainers.LogProductionOption {testcontainers .WithLogProductionTimeout (10 * time .Second )},
340
- Consumers : []testcontainers.LogConsumer {result },
342
+ Consumers : []testcontainers.LogConsumer {& result },
341
343
},
342
344
WaitingFor : wait .ForExit ().WithPollInterval (10 * time .Millisecond ),
343
345
AutoRemove : true , // Clean up container when it exits
@@ -355,29 +357,35 @@ func (m *HTTPRequest) Run(ctx context.Context, l *zap.Logger) *ContainerResult {
355
357
// }
356
358
// }
357
359
358
- // Start the container
359
- l .Info ("🕹️ starting container" , zap .String ("image" , m .ImageURL ))
360
- container , err := testcontainers .GenericContainer (ctx , req )
361
- if err != nil {
362
- l .Error ("start container error" , zap .Error (err ))
363
- result .Error = fmt .Errorf ("starting container %s: %w" , m .ImageURL , err )
364
- result .ExitCode = - 1
365
- return result
366
- }
360
+ go func () {
361
+ // Start the container
362
+ l .Info ("🕹️ starting container" , zap .String ("image" , m .ImageURL ))
363
+ container , err := testcontainers .GenericContainer (ctx , req )
364
+ if err != nil {
365
+ l .Error ("start container error" , zap .Error (err ))
366
+ result .Error = fmt .Errorf ("starting container %s: %w" , m .ImageURL , err )
367
+ result .ExitCode = - 1
368
+ c .resultCh <- result
369
+ return
370
+ }
367
371
368
- state , err := container .State (ctx )
369
- if err != nil {
370
- l .Error ("get container state error" , zap .Error (err ))
371
- result .Error = fmt .Errorf ("getting container state: %w" , err )
372
- result .ExitCode = - 1
373
- return result
374
- }
372
+ state , err := container .State (ctx )
373
+ if err != nil {
374
+ l .Error ("get container state error" , zap .Error (err ))
375
+ result .Error = fmt .Errorf ("getting container state: %w" , err )
376
+ result .ExitCode = - 1
377
+ c .resultCh <- result
378
+ return
379
+ }
375
380
376
- l .Debug ("container state" , zap .Any ("state" , state ))
377
- result .ExitCode = state .ExitCode
378
- if state .Error != "" {
379
- result .Error = fmt .Errorf ("container error: %s" , state .Error )
380
- }
381
+ l .Debug ("container state" , zap .Any ("state" , state ))
382
+ result .ExitCode = state .ExitCode
383
+ if state .Error != "" {
384
+ result .Error = fmt .Errorf ("container error: %s" , state .Error )
385
+ }
386
+
387
+ c .resultCh <- result
388
+ }()
381
389
382
- return result
390
+ return c
383
391
}
0 commit comments