1
0
mirror of https://github.com/golang/go synced 2024-11-21 23:54:40 -07:00

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
This commit is contained in:
Brad Fitzpatrick 2012-02-15 11:05:51 +11:00
parent a50315304d
commit c210ddfe2c

View File

@ -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`)