in integration/runner/runner.go [198:254]
func Run() error {
start := time.Now()
defer func() {
klog.Infof("Execution time %v", time.Since(start))
}()
defer klog.Flush()
hosts := flag.Args()
testDir := fmt.Sprintf("/tmp/cadvisor-%d", os.Getpid())
klog.Infof("Running integration tests on host(s) %q", strings.Join(hosts, ","))
// Build cAdvisor.
klog.Infof("Building cAdvisor...")
err := RunCommand("build/build.sh")
if err != nil {
return err
}
defer func() {
err := RunCommand("rm", cadvisorBinary)
if err != nil {
klog.Error(err)
}
}()
// Run test on all hosts in parallel.
var wg sync.WaitGroup
allErrors := make([]error, 0)
var allErrorsLock sync.Mutex
for _, host := range hosts {
wg.Add(1)
go func(host string) {
defer wg.Done()
err := PushAndRunTests(host, testDir)
if err != nil {
func() {
allErrorsLock.Lock()
defer allErrorsLock.Unlock()
allErrors = append(allErrors, err)
}()
}
}(host)
}
wg.Wait()
if len(allErrors) != 0 {
var buffer bytes.Buffer
for i, err := range allErrors {
buffer.WriteString(fmt.Sprintf("Error %d: ", i))
buffer.WriteString(err.Error())
buffer.WriteString("\n")
}
return errors.New(buffer.String())
}
klog.Infof("All tests pass!")
return nil
}