|  | @@ -495,8 +495,13 @@ std::unique_ptr<ScenarioResult> RunScenario(
 | 
	
		
			
				|  |  |    for (size_t i = 0; i < num_clients; i++) {
 | 
	
		
			
				|  |  |      auto client = &clients[i];
 | 
	
		
			
				|  |  |      Status s = client->stream->Finish();
 | 
	
		
			
				|  |  | -    result->add_client_success(s.ok());
 | 
	
		
			
				|  |  | -    if (!s.ok()) {
 | 
	
		
			
				|  |  | +    // Since we shutdown servers and clients at the same time, clients can
 | 
	
		
			
				|  |  | +    // observe cancellation.  Thus, we consider both OK and CANCELLED as good
 | 
	
		
			
				|  |  | +    // status.
 | 
	
		
			
				|  |  | +    const bool success = s.ok() || static_cast<StatusCode>(s.error_code()) ==
 | 
	
		
			
				|  |  | +                                       StatusCode::CANCELLED;
 | 
	
		
			
				|  |  | +    result->add_client_success(success);
 | 
	
		
			
				|  |  | +    if (!success) {
 | 
	
		
			
				|  |  |        gpr_log(GPR_ERROR, "Client %zu had an error %s", i,
 | 
	
		
			
				|  |  |                s.error_message().c_str());
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -526,8 +531,13 @@ std::unique_ptr<ScenarioResult> RunScenario(
 | 
	
		
			
				|  |  |    for (size_t i = 0; i < num_servers; i++) {
 | 
	
		
			
				|  |  |      auto server = &servers[i];
 | 
	
		
			
				|  |  |      Status s = server->stream->Finish();
 | 
	
		
			
				|  |  | -    result->add_server_success(s.ok());
 | 
	
		
			
				|  |  | -    if (!s.ok()) {
 | 
	
		
			
				|  |  | +    // Since we shutdown servers and clients at the same time, servers can
 | 
	
		
			
				|  |  | +    // observe cancellation.  Thus, we consider both OK and CANCELLED as good
 | 
	
		
			
				|  |  | +    // status.
 | 
	
		
			
				|  |  | +    const bool success = s.ok() || static_cast<StatusCode>(s.error_code()) ==
 | 
	
		
			
				|  |  | +                                       StatusCode::CANCELLED;
 | 
	
		
			
				|  |  | +    result->add_server_success(success);
 | 
	
		
			
				|  |  | +    if (!success) {
 | 
	
		
			
				|  |  |        gpr_log(GPR_ERROR, "Server %zu had an error %s", i,
 | 
	
		
			
				|  |  |                s.error_message().c_str());
 | 
	
		
			
				|  |  |      }
 |