|  | @@ -84,49 +84,37 @@ StressTestInteropClient::StressTestInteropClient(
 | 
	
		
			
				|  |  |      int test_id, const grpc::string& server_address,
 | 
	
		
			
				|  |  |      std::shared_ptr<Channel> channel,
 | 
	
		
			
				|  |  |      const WeightedRandomTestSelector& test_selector, long test_duration_secs,
 | 
	
		
			
				|  |  | -    long sleep_duration_ms, long metrics_collection_interval_secs)
 | 
	
		
			
				|  |  | +    long sleep_duration_ms)
 | 
	
		
			
				|  |  |      : test_id_(test_id),
 | 
	
		
			
				|  |  |        server_address_(server_address),
 | 
	
		
			
				|  |  |        channel_(channel),
 | 
	
		
			
				|  |  |        interop_client_(new InteropClient(channel, false)),
 | 
	
		
			
				|  |  |        test_selector_(test_selector),
 | 
	
		
			
				|  |  |        test_duration_secs_(test_duration_secs),
 | 
	
		
			
				|  |  | -      sleep_duration_ms_(sleep_duration_ms),
 | 
	
		
			
				|  |  | -      metrics_collection_interval_secs_(metrics_collection_interval_secs) {}
 | 
	
		
			
				|  |  | +      sleep_duration_ms_(sleep_duration_ms) {}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void StressTestInteropClient::MainLoop(std::shared_ptr<Gauge> qps_gauge) {
 | 
	
		
			
				|  |  | +void StressTestInteropClient::MainLoop(std::shared_ptr<QpsGauge> qps_gauge) {
 | 
	
		
			
				|  |  |    gpr_log(GPR_INFO, "Running test %d. ServerAddr: %s", test_id_,
 | 
	
		
			
				|  |  |            server_address_.c_str());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  gpr_timespec test_end_time =
 | 
	
		
			
				|  |  | -      gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
 | 
	
		
			
				|  |  | -                   gpr_time_from_seconds(test_duration_secs_, GPR_TIMESPAN));
 | 
	
		
			
				|  |  | +  gpr_timespec test_end_time;
 | 
	
		
			
				|  |  | +  if (test_duration_secs_ < 0) {
 | 
	
		
			
				|  |  | +    test_end_time = gpr_inf_future(GPR_CLOCK_REALTIME);
 | 
	
		
			
				|  |  | +  } else {
 | 
	
		
			
				|  |  | +    test_end_time =
 | 
	
		
			
				|  |  | +        gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
 | 
	
		
			
				|  |  | +                     gpr_time_from_seconds(test_duration_secs_, GPR_TIMESPAN));
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  gpr_timespec current_time = gpr_now(GPR_CLOCK_REALTIME);
 | 
	
		
			
				|  |  | -  gpr_timespec next_stat_collection_time = current_time;
 | 
	
		
			
				|  |  | -  gpr_timespec collection_interval =
 | 
	
		
			
				|  |  | -      gpr_time_from_seconds(metrics_collection_interval_secs_, GPR_TIMESPAN);
 | 
	
		
			
				|  |  | -  long num_calls_per_interval = 0;
 | 
	
		
			
				|  |  | +  qps_gauge->Reset();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  while (test_duration_secs_ < 0 ||
 | 
	
		
			
				|  |  | -         gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), test_end_time) < 0) {
 | 
	
		
			
				|  |  | +  while (gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), test_end_time) < 0) {
 | 
	
		
			
				|  |  |      // Select the test case to execute based on the weights and execute it
 | 
	
		
			
				|  |  |      TestCaseType test_case = test_selector_.GetNextTest();
 | 
	
		
			
				|  |  |      gpr_log(GPR_DEBUG, "%d - Executing the test case %d", test_id_, test_case);
 | 
	
		
			
				|  |  |      RunTest(test_case);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    num_calls_per_interval++;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    // See if its time to collect stats yet
 | 
	
		
			
				|  |  | -    current_time = gpr_now(GPR_CLOCK_REALTIME);
 | 
	
		
			
				|  |  | -    if (gpr_time_cmp(next_stat_collection_time, current_time) < 0) {
 | 
	
		
			
				|  |  | -      qps_gauge->Set(num_calls_per_interval /
 | 
	
		
			
				|  |  | -                     metrics_collection_interval_secs_);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      num_calls_per_interval = 0;
 | 
	
		
			
				|  |  | -      next_stat_collection_time =
 | 
	
		
			
				|  |  | -          gpr_time_add(current_time, collection_interval);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    qps_gauge->Incr();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Sleep between successive calls if needed
 | 
	
		
			
				|  |  |      if (sleep_duration_ms_ > 0) {
 |