mirror of
https://github.com/go-delve/delve.git
synced 2025-10-27 03:56:24 +08:00
* *: randomize testnextnethttp.go listen port * service/test: prefer t.Setenv * *: cleanup port pid files * service: fix final parallelization bugs * address review feedback * pkg/proc: fix test on windows * fix finding port file on TestIssue462
44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"net/http"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
)
|
|
func main() {
|
|
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
|
|
runtime.Breakpoint()
|
|
msg := "hello, world!"
|
|
header := w.Header().Get("Content-Type")
|
|
w.Write([]byte(msg + header))
|
|
})
|
|
http.HandleFunc("/nobp", func(w http.ResponseWriter, req *http.Request) {
|
|
msg := "hello, world!"
|
|
header := w.Header().Get("Content-Type")
|
|
w.Write([]byte(msg + header))
|
|
})
|
|
listener, err := net.Listen("tcp", ":0")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
port := listener.Addr().(*net.TCPAddr).Port
|
|
fmt.Printf("LISTENING:%d\n", port)
|
|
|
|
// Also write port to a file for tests that can't capture stdout
|
|
// Include PID in filename to avoid conflicts when tests run in parallel
|
|
tmpdir := os.TempDir()
|
|
portFile := filepath.Join(tmpdir, fmt.Sprintf("testnextnethttp_port_%d", os.Getpid()))
|
|
os.WriteFile(portFile, []byte(fmt.Sprintf("%d", port)), 0644)
|
|
|
|
// Clean up port file when program exits
|
|
defer os.Remove(portFile)
|
|
|
|
err = http.Serve(listener, nil)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|