()
| 323 | } |
| 324 | |
| 325 | func main() { |
| 326 | flag.Parse() |
| 327 | resolver.SetDefaultScheme("dns") |
| 328 | addresses := strings.Split(*serverAddresses, ",") |
| 329 | tests := parseTestCases(*testCases) |
| 330 | logParameterInfo(addresses, tests) |
| 331 | testSelector := newWeightedRandomTestSelector(tests) |
| 332 | metricsServer := newMetricsServer() |
| 333 | |
| 334 | var wg sync.WaitGroup |
| 335 | wg.Add(len(addresses) * *numChannelsPerServer * *numStubsPerChannel) |
| 336 | stop := make(chan bool) |
| 337 | |
| 338 | for serverIndex, address := range addresses { |
| 339 | for connIndex := 0; connIndex < *numChannelsPerServer; connIndex++ { |
| 340 | conn, err := newConn(address, *useTLS, *testCA, *tlsServerName) |
| 341 | if err != nil { |
| 342 | logger.Fatalf("Fail to dial: %v", err) |
| 343 | } |
| 344 | defer conn.Close() |
| 345 | for clientIndex := 0; clientIndex < *numStubsPerChannel; clientIndex++ { |
| 346 | name := fmt.Sprintf("/stress_test/server_%d/channel_%d/stub_%d/qps", serverIndex+1, connIndex+1, clientIndex+1) |
| 347 | go func() { |
| 348 | defer wg.Done() |
| 349 | g := metricsServer.createGauge(name) |
| 350 | performRPCs(g, conn, testSelector, stop) |
| 351 | }() |
| 352 | } |
| 353 | |
| 354 | } |
| 355 | } |
| 356 | go startServer(metricsServer, *metricsPort) |
| 357 | if *testDurationSecs > 0 { |
| 358 | time.Sleep(time.Duration(*testDurationSecs) * time.Second) |
| 359 | close(stop) |
| 360 | } |
| 361 | wg.Wait() |
| 362 | fmt.Fprintf(os.Stdout, "Total calls made: %v\n", totalNumCalls) |
| 363 | logger.Infof(" ===== ALL DONE ===== ") |
| 364 | } |
nothing calls this directly
no test coverage detected