(t *testing.T)
| 296 | } |
| 297 | |
| 298 | func 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 | |
| 348 | func TestClient(t *testing.T) { |
| 349 | t.Parallel() |
nothing calls this directly
no test coverage detected