summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2022-10-04 09:16:40 +0000
committerArne Juul <arnej@yahooinc.com>2022-10-04 09:16:40 +0000
commit639aed00c4f4587dc93489bb50916f9d4639b58a (patch)
tree4ec19ad08a9f16bfb0fb9119ce112f70f7f2a252 /client
parent03b3b5b4f48b2d90a2df57df0efa7dca540b8a89 (diff)
refactor to ensure "-bin" is always added
Diffstat (limited to 'client')
-rw-r--r--client/go/script-utils/startcbinary/cmd.go6
-rw-r--r--client/go/script-utils/startcbinary/execvp.go2
-rw-r--r--client/go/script-utils/startcbinary/numactl_test.go27
-rw-r--r--client/go/script-utils/startcbinary/progspec.go16
-rw-r--r--client/go/script-utils/startcbinary/progspec_test.go4
-rw-r--r--client/go/script-utils/startcbinary/startcbinary.go4
-rw-r--r--client/go/script-utils/startcbinary/valgrind_test.go4
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")