]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix FreeBSDNumCPU test
authorDavid Carlier <devnexen@gmail.com>
Sun, 17 Jun 2018 17:27:13 +0000 (17:27 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 19 Jun 2018 22:19:28 +0000 (22:19 +0000)
num cpu unit test fixes for FreeBSD.
cpuset -g can possibly output more
data than expected.

Fixes #25924

Change-Id: Iec45a919df68648759331da7cd1fa3b9f3ca4241
GitHub-Last-Rev: 4cc275b519cda13189ec48b581ab9ce00cacd7f6
GitHub-Pull-Request: golang/go#25931
Reviewed-on: https://go-review.googlesource.com/119376
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/runtime/testdata/testprog/numcpu_freebsd.go

index 035c53470be567025d349c82e073c99a7e371fef..42ee15488306db8f85224452a50d3fa2c8b3701b 100644 (file)
@@ -9,12 +9,17 @@ import (
        "fmt"
        "os"
        "os/exec"
+       "regexp"
        "runtime"
        "strconv"
        "strings"
        "syscall"
 )
 
+var (
+       cpuSetRE = regexp.MustCompile(`(\d,?)+`)
+)
+
 func init() {
        register("FreeBSDNumCPU", FreeBSDNumCPU)
        register("FreeBSDNumCPUHelper", FreeBSDNumCPUHelper)
@@ -105,8 +110,12 @@ func checkNCPU(list []string) error {
                return fmt.Errorf("could not check against an empty CPU list")
        }
 
+       cListString := cpuSetRE.FindString(listString)
+       if len(cListString) == 0 {
+               return fmt.Errorf("invalid cpuset output '%s'", listString)
+       }
        // Launch FreeBSDNumCPUHelper() with specified CPUs list.
-       cmd := exec.Command("cpuset", "-l", listString, os.Args[0], "FreeBSDNumCPUHelper")
+       cmd := exec.Command("cpuset", "-l", cListString, os.Args[0], "FreeBSDNumCPUHelper")
        cmdline := strings.Join(cmd.Args, " ")
        output, err := cmd.CombinedOutput()
        if err != nil {
@@ -120,7 +129,7 @@ func checkNCPU(list []string) error {
                return fmt.Errorf("fail to parse output from child '%s', error: %s, output: %s", cmdline, err, output)
        }
        if n != len(list) {
-               return fmt.Errorf("runtime.NumCPU() expected to %d, got %d when run with CPU list %s", len(list), n, listString)
+               return fmt.Errorf("runtime.NumCPU() expected to %d, got %d when run with CPU list %s", len(list), n, cListString)
        }
        return nil
 }