(t *testing.T, opts testOpts)
| 47 | } |
| 48 | |
| 49 | func setup(t *testing.T, opts testOpts) (*controlPlane, *client, []*server) { |
| 50 | t.Helper() |
| 51 | if _, err := os.Stat(*clientPath); os.IsNotExist(err) { |
| 52 | t.Skip("skipped because client is not found") |
| 53 | } |
| 54 | if _, err := os.Stat(*serverPath); os.IsNotExist(err) { |
| 55 | t.Skip("skipped because server is not found") |
| 56 | } |
| 57 | backendCount := 1 |
| 58 | if opts.backendCount != 0 { |
| 59 | backendCount = opts.backendCount |
| 60 | } |
| 61 | |
| 62 | cp, err := newControlPlane(t) |
| 63 | if err != nil { |
| 64 | t.Fatalf("failed to start control-plane: %v", err) |
| 65 | } |
| 66 | |
| 67 | var clientLog bytes.Buffer |
| 68 | c, err := newClient(fmt.Sprintf("xds:///%s", opts.testName), *clientPath, cp.bootstrapContent, &clientLog, opts.clientFlags...) |
| 69 | if err != nil { |
| 70 | t.Fatalf("failed to start client: %v", err) |
| 71 | } |
| 72 | t.Cleanup(c.stop) |
| 73 | |
| 74 | var serverLog bytes.Buffer |
| 75 | servers, err := newServers(opts.testName, *serverPath, cp.bootstrapContent, &serverLog, backendCount) |
| 76 | if err != nil { |
| 77 | t.Fatalf("failed to start server: %v", err) |
| 78 | } |
| 79 | t.Cleanup(func() { |
| 80 | for _, s := range servers { |
| 81 | s.stop() |
| 82 | } |
| 83 | }) |
| 84 | t.Cleanup(func() { |
| 85 | // TODO: find a better way to print the log. They are long, and hide the failure. |
| 86 | t.Logf("\n----- client logs -----\n%v", clientLog.String()) |
| 87 | t.Logf("\n----- server logs -----\n%v", serverLog.String()) |
| 88 | }) |
| 89 | return cp, c, servers |
| 90 | } |
| 91 | |
| 92 | func TestPingPong(t *testing.T) { |
| 93 | const testName = "pingpong" |
no test coverage detected