Commit c210ddfe authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

net/http: make strace test more robust

Apparently some distros don't let you ptrace attach
to your own existing processes.

Run strace on the child directly, instead, which
reportedly is more often allowed, and makes the
code simpler too.

R=golang-dev, n13m3y3r
CC=golang-dev
https://golang.org/cl/5675050
parent a5031530
......@@ -18,7 +18,6 @@ import (
"path/filepath"
"regexp"
"runtime"
"strconv"
"strings"
"testing"
"time"
......@@ -387,24 +386,15 @@ func TestLinuxSendfile(t *testing.T) {
}
defer ln.Close()
child := exec.Command(os.Args[0], "-test.run=TestLinuxSendfileChild")
var buf bytes.Buffer
child := exec.Command("strace", "-f", os.Args[0], "-test.run=TestLinuxSendfileChild")
child.ExtraFiles = append(child.ExtraFiles, lnf)
child.Env = append([]string{"GO_WANT_HELPER_PROCESS=1"}, os.Environ()...)
child.Stdout = &buf
child.Stderr = &buf
err = child.Start()
if err != nil {
t.Fatal(err)
}
pid := child.Process.Pid
var buf bytes.Buffer
strace := exec.Command("strace", "-f", "-p", strconv.Itoa(pid))
strace.Stdout = &buf
strace.Stderr = &buf
err = strace.Start()
if err != nil {
t.Logf("skipping; failed to start strace: %v", err)
t.Logf("skipping; failed to start straced child: %v", err)
return
}
......@@ -417,7 +407,6 @@ func TestLinuxSendfile(t *testing.T) {
// Force child to exit cleanly.
Get(fmt.Sprintf("http://%s/quit", ln.Addr()))
child.Wait()
strace.Wait()
rx := regexp.MustCompile(`sendfile(64)?\(\d+,\s*\d+,\s*NULL,\s*\d+\)\s*=\s*\d+\s*\n`)
rxResume := regexp.MustCompile(`<\.\.\. sendfile(64)? resumed> \)\s*=\s*\d+\s*\n`)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment