3232import io .grpc .stub .StreamObserver ;
3333import io .grpc .testing .GrpcCleanupRule ;
3434import io .grpc .util .MutableHandlerRegistry ;
35- import io .grpc .xds .internal .grpcservice .ChannelCredsConfig ;
35+ import io .grpc .xds .ExternalProcessorFilter .ExternalProcessorFilterConfig ;
36+ import io .grpc .xds .ExternalProcessorFilter .ExternalProcessorInterceptor ;
37+ import io .grpc .xds .internal .grpcservice .CachedChannelManager ;
3638import io .grpc .xds .internal .grpcservice .ConfiguredChannelCredentials ;
3739import io .grpc .xds .internal .grpcservice .GrpcServiceXdsContext ;
3840import io .grpc .xds .internal .grpcservice .GrpcServiceXdsContextProvider ;
41+ import io .grpc .xds .internal .grpcservice .ChannelCredsConfig ;
3942import java .io .ByteArrayInputStream ;
4043import java .io .InputStream ;
4144import java .util .ArrayList ;
@@ -116,11 +119,10 @@ public void setUp() throws Exception {
116119 InProcessChannelBuilder .forName (dataPlaneServerName ).directExecutor ().build ());
117120 }
118121
119- private ExternalProcessorFilter . ExternalProcessorFilterConfig createFilterConfig () {
122+ private ExternalProcessorFilterConfig createFilterConfig () {
120123 GrpcService grpcService = GrpcService .newBuilder ()
121124 .setGoogleGrpc (GrpcService .GoogleGrpc .newBuilder ()
122- // Important: Use "in-process:" scheme so Grpc.newChannelBuilder resolves it correctly
123- .setTargetUri ("in-process:" + extProcServerName )
125+ .setTargetUri (extProcServerName )
124126 .setStatPrefix ("ext_proc" )
125127 .build ())
126128 .build ();
@@ -152,7 +154,7 @@ private ExternalProcessorFilter.ExternalProcessorFilterConfig createFilterConfig
152154 this .filter = provider .newInstance ("ext-proc" , contextProvider );
153155
154156 // 2. Parse the config using the provider
155- ConfigOrError <ExternalProcessorFilter . ExternalProcessorFilterConfig > configOrError =
157+ ConfigOrError <ExternalProcessorFilterConfig > configOrError =
156158 provider .parseFilterConfig (Any .pack (externalProcessor ));
157159
158160 assertThat (configOrError .errorDetail ).isNull ();
@@ -161,10 +163,14 @@ private ExternalProcessorFilter.ExternalProcessorFilterConfig createFilterConfig
161163
162164 @ Test
163165 public void requestHeadersMutated () throws Exception {
164- ExternalProcessorFilter . ExternalProcessorFilterConfig filterConfig = createFilterConfig ();
166+ ExternalProcessorFilterConfig filterConfig = createFilterConfig ();
165167
166- // Use the filter instance created in createFilterConfig()
167- ClientInterceptor interceptor = filter .buildClientInterceptor (filterConfig , null , null );
168+ // Manually create the interceptor using the test-friendly constructor
169+ CachedChannelManager testChannelManager = new CachedChannelManager (config ->
170+ grpcCleanup .register (InProcessChannelBuilder .forName (extProcServerName ).directExecutor ().build ())
171+ );
172+ ClientInterceptor interceptor = new ExternalProcessorInterceptor (filterConfig , testChannelManager );
173+
168174 Channel interceptedChannel = ClientInterceptors .intercept (dataPlaneChannel , interceptor );
169175
170176 // Data Plane Server
0 commit comments