diff options
author | Arne Juul <arnej@yahooinc.com> | 2022-10-04 09:16:40 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2022-10-04 09:16:40 +0000 |
commit | 639aed00c4f4587dc93489bb50916f9d4639b58a (patch) | |
tree | 4ec19ad08a9f16bfb0fb9119ce112f70f7f2a252 /client | |
parent | 03b3b5b4f48b2d90a2df57df0efa7dca540b8a89 (diff) |
refactor to ensure "-bin" is always added
Diffstat (limited to 'client')
-rw-r--r-- | client/go/script-utils/startcbinary/cmd.go | 6 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/execvp.go | 2 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/numactl_test.go | 27 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/progspec.go | 16 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/progspec_test.go | 4 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/startcbinary.go | 4 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/valgrind_test.go | 4 |
7 files changed, 34 insertions, 29 deletions
diff --git a/client/go/script-utils/startcbinary/cmd.go b/client/go/script-utils/startcbinary/cmd.go index a3e08cee140..c367f4255e2 100644 --- a/client/go/script-utils/startcbinary/cmd.go +++ b/client/go/script-utils/startcbinary/cmd.go @@ -18,11 +18,7 @@ func Run(args []string) int { trace.Warning("missing program argument") return 1 } - spec := ProgSpec{ - Program: args[0], - Args: args, - } - spec.setup() + spec := NewProgSpec(args) err := vespa.LoadDefaultEnv() if err != nil { panic(err) diff --git a/client/go/script-utils/startcbinary/execvp.go b/client/go/script-utils/startcbinary/execvp.go index 1ceaf88b47a..6ca34c4076b 100644 --- a/client/go/script-utils/startcbinary/execvp.go +++ b/client/go/script-utils/startcbinary/execvp.go @@ -30,9 +30,9 @@ func findInPath(prog string) string { } func myexecvp(prog string, argv []string, envv []string) error { - trace.Trace("run cmd", strings.Join(argv, " ")) prog = findInPath(prog) argv[0] = prog + trace.Trace("run cmd:", strings.Join(argv, " ")) err := unix.Exec(prog, argv, envv) return fmt.Errorf("cannot execute '%s': %v", prog, err) } diff --git a/client/go/script-utils/startcbinary/numactl_test.go b/client/go/script-utils/startcbinary/numactl_test.go index 326ff088276..0671a0a7fbc 100644 --- a/client/go/script-utils/startcbinary/numactl_test.go +++ b/client/go/script-utils/startcbinary/numactl_test.go @@ -27,9 +27,8 @@ func TestNumaCtlDetection(t *testing.T) { } _, tfn, _, _ := runtime.Caller(0) setup(t, tfn) - var spec ProgSpec - spec.setup() - var argv []string + orig := []string{"/bin/myprog", "-c", "cfgid"} + spec := NewProgSpec(orig) useMock("no-numactl", "numactl") spec.configureNumaCtl() @@ -44,37 +43,43 @@ func TestNumaCtlDetection(t *testing.T) { spec.configureNumaCtl() assert.Equal(t, true, spec.shouldUseNumaCtl) assert.Equal(t, -1, spec.numaSocket) - argv = spec.prependNumaCtl([]string{"/bin/myprog", "-c", "cfgid"}) + argv := spec.prependNumaCtl(orig) trace.Trace("argv:", argv) assert.Equal(t, 6, len(argv)) assert.Equal(t, "numactl", argv[0]) assert.Equal(t, "--interleave", argv[1]) assert.Equal(t, "all", argv[2]) - assert.Equal(t, "/bin/myprog", argv[3]) + assert.Equal(t, "/bin/myprog-bin", argv[3]) + assert.Equal(t, "-c", argv[4]) + assert.Equal(t, "cfgid", argv[5]) t.Setenv("VESPA_AFFINITY_CPU_SOCKET", "0") spec.configureNumaCtl() assert.Equal(t, true, spec.shouldUseNumaCtl) assert.Equal(t, 0, spec.numaSocket) - argv = spec.prependNumaCtl([]string{"/bin/myprog", "-c", "cfgid", "-p", "param"}) + argv = spec.prependNumaCtl(orig) trace.Trace("argv:", argv) - assert.Equal(t, 8, len(argv)) + assert.Equal(t, 6, len(argv)) assert.Equal(t, "numactl", argv[0]) assert.Equal(t, "--cpunodebind=0", argv[1]) assert.Equal(t, "--membind=0", argv[2]) - assert.Equal(t, "/bin/myprog", argv[3]) + assert.Equal(t, "/bin/myprog-bin", argv[3]) + assert.Equal(t, "-c", argv[4]) + assert.Equal(t, "cfgid", argv[5]) t.Setenv("VESPA_AFFINITY_CPU_SOCKET", "1") spec.configureNumaCtl() assert.Equal(t, true, spec.shouldUseNumaCtl) assert.Equal(t, 1, spec.numaSocket) - argv = spec.prependNumaCtl([]string{"/bin/myprog"}) + argv = spec.prependNumaCtl(orig) trace.Trace("argv:", argv) - assert.Equal(t, 4, len(argv)) + assert.Equal(t, 6, len(argv)) assert.Equal(t, "numactl", argv[0]) assert.Equal(t, "--cpunodebind=1", argv[1]) assert.Equal(t, "--membind=1", argv[2]) - assert.Equal(t, "/bin/myprog", argv[3]) + assert.Equal(t, "/bin/myprog-bin", argv[3]) + assert.Equal(t, "-c", argv[4]) + assert.Equal(t, "cfgid", argv[5]) t.Setenv("VESPA_AFFINITY_CPU_SOCKET", "2") spec.configureNumaCtl() diff --git a/client/go/script-utils/startcbinary/progspec.go b/client/go/script-utils/startcbinary/progspec.go index 10097419395..9ce74646cf6 100644 --- a/client/go/script-utils/startcbinary/progspec.go +++ b/client/go/script-utils/startcbinary/progspec.go @@ -23,10 +23,18 @@ type ProgSpec struct { vespaMallocPreload string } -func (p *ProgSpec) setup() { - p.BaseName = baseNameOf(p.Program) - p.Env = make(map[string]string) - p.numaSocket = -1 +func NewProgSpec(argv []string) *ProgSpec { + progName := argv[0] + binProg := progName + "-bin" + p := ProgSpec{ + Program: binProg, + Args: argv, + BaseName: baseNameOf(progName), + Env: make(map[string]string), + numaSocket: -1, + } + p.Args[0] = binProg + return &p } func baseNameOf(s string) string { diff --git a/client/go/script-utils/startcbinary/progspec_test.go b/client/go/script-utils/startcbinary/progspec_test.go index 8a38fb8777b..be113e4e350 100644 --- a/client/go/script-utils/startcbinary/progspec_test.go +++ b/client/go/script-utils/startcbinary/progspec_test.go @@ -8,9 +8,7 @@ import ( ) func TestProgSpec(t *testing.T) { - var spec ProgSpec - spec.Program = "/opt/vespa/bin/foobar" - spec.setup() + spec := NewProgSpec([]string{"/opt/vespa/bin/foobar"}) var b bool b = spec.matchesListString("") diff --git a/client/go/script-utils/startcbinary/startcbinary.go b/client/go/script-utils/startcbinary/startcbinary.go index 9c06ead4d06..7a2b13ebf87 100644 --- a/client/go/script-utils/startcbinary/startcbinary.go +++ b/client/go/script-utils/startcbinary/startcbinary.go @@ -8,7 +8,7 @@ import ( "os" ) -func startCbinary(spec ProgSpec) int { +func startCbinary(spec *ProgSpec) int { spec.configureCommonEnv() spec.configurePath() spec.configureTuning() @@ -27,7 +27,7 @@ func startCbinary(spec ProgSpec) int { } func (spec *ProgSpec) run() error { - prog := spec.Program + "-bin" + prog := spec.Program args := spec.Args if spec.shouldUseValgrind { args = spec.prependValgrind(args) diff --git a/client/go/script-utils/startcbinary/valgrind_test.go b/client/go/script-utils/startcbinary/valgrind_test.go index 906dfc054c6..efbe56e9950 100644 --- a/client/go/script-utils/startcbinary/valgrind_test.go +++ b/client/go/script-utils/startcbinary/valgrind_test.go @@ -41,9 +41,7 @@ func TestValgrindDetection(t *testing.T) { } _, tfn, _, _ := runtime.Caller(0) setupValgrind(t, tfn) - var spec ProgSpec - spec.Program = "/opt/vespa/bin/foobar" - spec.setup() + spec := NewProgSpec([]string{"/opt/vespa/bin/foobar"}) var argv []string useMock("has-valgrind", "which") |