|  | @@ -210,8 +210,9 @@ class TestScenario {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static std::ostream& operator<<(std::ostream& out,
 | 
	
		
			
				|  |  |                                  const TestScenario& scenario) {
 | 
	
		
			
				|  |  | -  return out << "TestScenario{use_proxy="
 | 
	
		
			
				|  |  | -             << (scenario.use_proxy ? "true" : "false")
 | 
	
		
			
				|  |  | +  return out << "TestScenario{use_interceptors="
 | 
	
		
			
				|  |  | +             << (scenario.use_interceptors ? "true" : "false")
 | 
	
		
			
				|  |  | +             << ", use_proxy=" << (scenario.use_proxy ? "true" : "false")
 | 
	
		
			
				|  |  |               << ", inproc=" << (scenario.inproc ? "true" : "false")
 | 
	
		
			
				|  |  |               << ", credentials='" << scenario.credentials_type << "'}";
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -275,6 +276,7 @@ class End2endTest : public ::testing::TestWithParam<TestScenario> {
 | 
	
		
			
				|  |  |          creators.push_back(std::unique_ptr<DummyInterceptorFactory>(
 | 
	
		
			
				|  |  |              new DummyInterceptorFactory()));
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | +      builder.experimental().SetInterceptorCreators(std::move(creators));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      builder.AddListeningPort(server_address_.str(), server_creds);
 | 
	
		
			
				|  |  |      builder.RegisterService(&service_);
 | 
	
	
		
			
				|  | @@ -308,10 +310,21 @@ class End2endTest : public ::testing::TestWithParam<TestScenario> {
 | 
	
		
			
				|  |  |      args.SetString(GRPC_ARG_SECONDARY_USER_AGENT_STRING, "end2end_test");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (!GetParam().inproc) {
 | 
	
		
			
				|  |  | -      channel_ =
 | 
	
		
			
				|  |  | -          CreateCustomChannel(server_address_.str(), channel_creds, args);
 | 
	
		
			
				|  |  | +      if (!GetParam().use_interceptors) {
 | 
	
		
			
				|  |  | +        channel_ =
 | 
	
		
			
				|  |  | +            CreateCustomChannel(server_address_.str(), channel_creds, args);
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        channel_ = CreateCustomChannelWithInterceptors(
 | 
	
		
			
				|  |  | +            server_address_.str(), channel_creds, args,
 | 
	
		
			
				|  |  | +            CreateDummyClientInterceptors());
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  | -      channel_ = server_->InProcessChannel(args);
 | 
	
		
			
				|  |  | +      if (!GetParam().use_interceptors) {
 | 
	
		
			
				|  |  | +        channel_ = server_->InProcessChannel(args);
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        channel_ = server_->experimental().InProcessChannelWithInterceptors(
 | 
	
		
			
				|  |  | +            args, CreateDummyClientInterceptors());
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -336,6 +349,7 @@ class End2endTest : public ::testing::TestWithParam<TestScenario> {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      stub_ = grpc::testing::EchoTestService::NewStub(channel_);
 | 
	
		
			
				|  |  | +    DummyInterceptor::Reset();
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    bool is_server_started_;
 | 
	
	
		
			
				|  | @@ -392,6 +406,7 @@ class End2endServerTryCancelTest : public End2endTest {
 | 
	
		
			
				|  |  |    // NOTE: Do not call this function with server_try_cancel == DO_NOT_CANCEL.
 | 
	
		
			
				|  |  |    void TestRequestStreamServerCancel(
 | 
	
		
			
				|  |  |        ServerTryCancelRequestPhase server_try_cancel, int num_msgs_to_send) {
 | 
	
		
			
				|  |  | +    RestartServer(std::shared_ptr<AuthMetadataProcessor>());
 | 
	
		
			
				|  |  |      ResetStub();
 | 
	
		
			
				|  |  |      EchoRequest request;
 | 
	
		
			
				|  |  |      EchoResponse response;
 | 
	
	
		
			
				|  | @@ -448,6 +463,10 @@ class End2endServerTryCancelTest : public End2endTest {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      EXPECT_FALSE(s.ok());
 | 
	
		
			
				|  |  |      EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code());
 | 
	
		
			
				|  |  | +    // Make sure that the server interceptors were notified
 | 
	
		
			
				|  |  | +    if (GetParam().use_interceptors) {
 | 
	
		
			
				|  |  | +      EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // Helper for testing server-streaming RPCs which are cancelled on the server.
 | 
	
	
		
			
				|  | @@ -465,6 +484,7 @@ class End2endServerTryCancelTest : public End2endTest {
 | 
	
		
			
				|  |  |    // NOTE: Do not call this function with server_try_cancel == DO_NOT_CANCEL.
 | 
	
		
			
				|  |  |    void TestResponseStreamServerCancel(
 | 
	
		
			
				|  |  |        ServerTryCancelRequestPhase server_try_cancel) {
 | 
	
		
			
				|  |  | +    RestartServer(std::shared_ptr<AuthMetadataProcessor>());
 | 
	
		
			
				|  |  |      ResetStub();
 | 
	
		
			
				|  |  |      EchoRequest request;
 | 
	
		
			
				|  |  |      EchoResponse response;
 | 
	
	
		
			
				|  | @@ -524,7 +544,10 @@ class End2endServerTryCancelTest : public End2endTest {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      EXPECT_FALSE(s.ok());
 | 
	
		
			
				|  |  | -    EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code());
 | 
	
		
			
				|  |  | +    // Make sure that the server interceptors were notified
 | 
	
		
			
				|  |  | +    if (GetParam().use_interceptors) {
 | 
	
		
			
				|  |  | +      EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // Helper for testing bidirectional-streaming RPCs which are cancelled on the
 | 
	
	
		
			
				|  | @@ -542,6 +565,7 @@ class End2endServerTryCancelTest : public End2endTest {
 | 
	
		
			
				|  |  |    // NOTE: Do not call this function with server_try_cancel == DO_NOT_CANCEL.
 | 
	
		
			
				|  |  |    void TestBidiStreamServerCancel(ServerTryCancelRequestPhase server_try_cancel,
 | 
	
		
			
				|  |  |                                    int num_messages) {
 | 
	
		
			
				|  |  | +    RestartServer(std::shared_ptr<AuthMetadataProcessor>());
 | 
	
		
			
				|  |  |      ResetStub();
 | 
	
		
			
				|  |  |      EchoRequest request;
 | 
	
		
			
				|  |  |      EchoResponse response;
 | 
	
	
		
			
				|  | @@ -608,6 +632,10 @@ class End2endServerTryCancelTest : public End2endTest {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      EXPECT_FALSE(s.ok());
 | 
	
		
			
				|  |  |      EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code());
 | 
	
		
			
				|  |  | +    // Make sure that the server interceptors were notified
 | 
	
		
			
				|  |  | +    if (GetParam().use_interceptors) {
 | 
	
		
			
				|  |  | +      EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1005,6 +1033,9 @@ TEST_P(End2endTest, CancelRpcBeforeStart) {
 | 
	
		
			
				|  |  |    Status s = stub_->Echo(&context, request, &response);
 | 
	
		
			
				|  |  |    EXPECT_EQ("", response.message());
 | 
	
		
			
				|  |  |    EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code());
 | 
	
		
			
				|  |  | +  if (GetParam().use_interceptors) {
 | 
	
		
			
				|  |  | +    EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel());
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Client cancels request stream after sending two messages
 | 
	
	
		
			
				|  | @@ -1025,6 +1056,9 @@ TEST_P(End2endTest, ClientCancelsRequestStream) {
 | 
	
		
			
				|  |  |    EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    EXPECT_EQ(response.message(), "");
 | 
	
		
			
				|  |  | +  if (GetParam().use_interceptors) {
 | 
	
		
			
				|  |  | +    EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel());
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Client cancels server stream after sending some messages
 | 
	
	
		
			
				|  | @@ -1057,6 +1091,9 @@ TEST_P(End2endTest, ClientCancelsResponseStream) {
 | 
	
		
			
				|  |  |    // The final status could be either of CANCELLED or OK depending on
 | 
	
		
			
				|  |  |    // who won the race.
 | 
	
		
			
				|  |  |    EXPECT_GE(grpc::StatusCode::CANCELLED, s.error_code());
 | 
	
		
			
				|  |  | +  if (GetParam().use_interceptors) {
 | 
	
		
			
				|  |  | +    EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel());
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Client cancels bidi stream after sending some messages
 | 
	
	
		
			
				|  | @@ -1090,6 +1127,9 @@ TEST_P(End2endTest, ClientCancelsBidi) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    Status s = stream->Finish();
 | 
	
		
			
				|  |  |    EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code());
 | 
	
		
			
				|  |  | +  if (GetParam().use_interceptors) {
 | 
	
		
			
				|  |  | +    EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel());
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  TEST_P(End2endTest, RpcMaxMessageSize) {
 |