@@ -3,11 +3,11 @@ package firecracker
33import (
44 "bufio"
55 "context"
6+ "fmt"
67 "io/ioutil"
78 "os"
89 "path/filepath"
910 "strings"
10- "sync"
1111 "testing"
1212
1313 "github.com/sirupsen/logrus"
@@ -106,25 +106,34 @@ func benchmarkForwardSignals(b *testing.B, forwardSignals []os.Signal) {
106106 b .Logf ("%s: %d" , b .Name (), b .N )
107107
108108 for i := 0 ; i < b .N ; i ++ {
109- var wg sync. WaitGroup
109+ errCh := make ( chan error , numberOfVMs )
110110 for j := 0 ; j < numberOfVMs ; j ++ {
111- wg .Add (1 )
112111 go func () {
113- defer wg .Done ()
112+ var err error
113+ defer func () { errCh <- err }()
114114
115115 machine , cleanup , err := createMachine (ctx , b .Name (), forwardSignals )
116116 if err != nil {
117- b .Fatalf ("failed to create a VM: %s" , err )
117+ err = fmt .Errorf ("failed to create a VM: %v" , err )
118+ return // anonymous defer func() will deliver the error
118119 }
119120 defer cleanup ()
120121
121122 err = startAndWaitVM (ctx , machine )
122123 if err != nil && ! strings .Contains (err .Error (), "signal: terminated" ) {
123- b .Fatalf ("failed to start the VM: %s" , err )
124+ err = fmt .Errorf ("failed to start the VM: %v" , err )
125+ return // anonymous defer func() will deliver the error
124126 }
127+ return // anonymous defer func() will deliver this nil error
125128 }()
126129 }
127- wg .Wait ()
130+ for k := 0 ; k < numberOfVMs ; k ++ {
131+ err := <- errCh
132+ if err != nil {
133+ b .Fatal (err )
134+ }
135+ }
136+ close (errCh )
128137 }
129138}
130139func BenchmarkForwardSignalsDefault (t * testing.B ) {
0 commit comments