(t *testing.T)
| 375 | } |
| 376 | |
| 377 | func TestClientHTTP(t *testing.T) { |
| 378 | server := newTestServer("service", new(Service)) |
| 379 | defer server.Stop() |
| 380 | |
| 381 | client, hs := httpTestClient(server, "http", nil) |
| 382 | defer hs.Close() |
| 383 | defer client.Close() |
| 384 | |
| 385 | // Launch concurrent requests. |
| 386 | var ( |
| 387 | results = make([]Result, 100) |
| 388 | errc = make(chan error) |
| 389 | wantResult = Result{"a", 1, new(Args)} |
| 390 | ) |
| 391 | defer client.Close() |
| 392 | for i := range results { |
| 393 | i := i |
| 394 | go func() { |
| 395 | errc <- client.Call(&results[i], "service_echo", |
| 396 | wantResult.String, wantResult.Int, wantResult.Args) |
| 397 | }() |
| 398 | } |
| 399 | |
| 400 | // Wait for all of them to complete. |
| 401 | timeout := time.NewTimer(5 * time.Second) |
| 402 | defer timeout.Stop() |
| 403 | for i := range results { |
| 404 | select { |
| 405 | case err := <-errc: |
| 406 | if err != nil { |
| 407 | t.Fatal(err) |
| 408 | } |
| 409 | case <-timeout.C: |
| 410 | t.Fatalf("timeout (got %d/%d) results)", i+1, len(results)) |
| 411 | } |
| 412 | } |
| 413 | |
| 414 | // Check results. |
| 415 | for i := range results { |
| 416 | if !reflect.DeepEqual(results[i], wantResult) { |
| 417 | t.Errorf("result %d mismatch: got %#v, want %#v", i, results[i], wantResult) |
| 418 | } |
| 419 | } |
| 420 | } |
| 421 | |
| 422 | func TestClientReconnect(t *testing.T) { |
| 423 | startServer := func(addr string) (*Server, net.Listener) { |
nothing calls this directly
no test coverage detected