MCPcopy
hub / github.com/tsenart/vegeta / TestUnixSocket

Function TestUnixSocket

lib/attack_test.go:298–346  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

296}
297
298func TestUnixSocket(t *testing.T) {
299 t.Parallel()
300 body := []byte("IT'S A UNIX SYSTEM, I KNOW THIS")
301
302 socketDir, err := os.MkdirTemp("", "vegata")
303 if err != nil {
304 t.Fatal("Failed to create socket dir", err)
305 }
306 defer os.RemoveAll(socketDir)
307 socketFile := filepath.Join(socketDir, "test.sock")
308
309 unixListener, err := net.Listen("unix", socketFile)
310
311 if err != nil {
312 t.Fatal("Failed to listen on unix socket", err)
313 }
314
315 server := http.Server{
316 Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
317 w.Write(body)
318 }),
319 }
320 defer server.Close()
321
322 go server.Serve(unixListener)
323
324 start := time.Now()
325 for {
326 if time.Since(start) > 1*time.Second {
327 t.Fatal("Server didn't listen on unix socket in time")
328 }
329 _, err := os.Stat(socketFile)
330 if err == nil {
331 break
332 } else if os.IsNotExist(err) {
333 time.Sleep(10 * time.Millisecond)
334 } else {
335 t.Fatal("unexpected error from unix socket", err)
336 }
337 }
338
339 atk := NewAttacker(UnixSocket(socketFile))
340
341 tr := NewStaticTargeter(Target{Method: "GET", URL: "http://anyserver/"})
342 res := atk.hit(tr, &attack{name: "", began: time.Now()})
343 if !bytes.Equal(res.Body, body) {
344 t.Fatalf("got: %s, want: %s", string(res.Body), string(body))
345 }
346}
347
348func TestClient(t *testing.T) {
349 t.Parallel()

Callers

nothing calls this directly

Calls 7

hitMethod · 0.95
NewAttackerFunction · 0.85
UnixSocketFunction · 0.85
NewStaticTargeterFunction · 0.85
WriteMethod · 0.80
CloseMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected