3737import io .grpc .xds .internal .security .certprovider .CertificateProviderProvider ;
3838import io .grpc .xds .internal .security .certprovider .CertificateProviderRegistry ;
3939import io .grpc .xds .internal .security .certprovider .CertificateProviderStore ;
40+ import io .grpc .xds .internal .security .certprovider .IgnoreUpdatesWatcher ;
4041import io .grpc .xds .internal .security .certprovider .TestCertificateProvider ;
4142import org .junit .Before ;
4243import org .junit .Test ;
@@ -84,7 +85,7 @@ public void createCertProviderClientSslContextProvider() throws XdsInitializatio
8485 clientSslContextProviderFactory .create (upstreamTlsContext );
8586 assertThat (sslContextProvider .getClass ().getSimpleName ()).isEqualTo (
8687 "CertProviderClientSslContextProvider" );
87- verifyWatcher (sslContextProvider , watcherCaptor [0 ]);
88+ verifyWatcher (sslContextProvider , watcherCaptor [0 ], false );
8889 // verify that bootstrapInfo is cached...
8990 sslContextProvider =
9091 clientSslContextProviderFactory .create (upstreamTlsContext );
@@ -119,7 +120,7 @@ public void bothPresent_expectCertProviderClientSslContextProvider()
119120 clientSslContextProviderFactory .create (upstreamTlsContext );
120121 assertThat (sslContextProvider .getClass ().getSimpleName ()).isEqualTo (
121122 "CertProviderClientSslContextProvider" );
122- verifyWatcher (sslContextProvider , watcherCaptor [0 ]);
123+ verifyWatcher (sslContextProvider , watcherCaptor [0 ], true );
123124 }
124125
125126 @ Test
@@ -145,7 +146,7 @@ public void createCertProviderClientSslContextProvider_onlyRootCert()
145146 clientSslContextProviderFactory .create (upstreamTlsContext );
146147 assertThat (sslContextProvider .getClass ().getSimpleName ()).isEqualTo (
147148 "CertProviderClientSslContextProvider" );
148- verifyWatcher (sslContextProvider , watcherCaptor [0 ]);
149+ verifyWatcher (sslContextProvider , watcherCaptor [0 ], true );
149150 }
150151
151152 @ Test
@@ -179,7 +180,7 @@ public void createCertProviderClientSslContextProvider_withStaticContext()
179180 clientSslContextProviderFactory .create (upstreamTlsContext );
180181 assertThat (sslContextProvider .getClass ().getSimpleName ()).isEqualTo (
181182 "CertProviderClientSslContextProvider" );
182- verifyWatcher (sslContextProvider , watcherCaptor [0 ]);
183+ verifyWatcher (sslContextProvider , watcherCaptor [0 ], true );
183184 }
184185
185186 @ Test
@@ -209,8 +210,8 @@ public void createCertProviderClientSslContextProvider_2providers()
209210 clientSslContextProviderFactory .create (upstreamTlsContext );
210211 assertThat (sslContextProvider .getClass ().getSimpleName ()).isEqualTo (
211212 "CertProviderClientSslContextProvider" );
212- verifyWatcher (sslContextProvider , watcherCaptor [0 ]);
213- verifyWatcher (sslContextProvider , watcherCaptor [1 ]);
213+ verifyWatcher (sslContextProvider , watcherCaptor [0 ], true );
214+ verifyWatcher (sslContextProvider , watcherCaptor [1 ], true );
214215 }
215216
216217 @ Test
@@ -246,8 +247,8 @@ public void createNewCertProviderClientSslContextProvider_withSans() {
246247 clientSslContextProviderFactory .create (upstreamTlsContext );
247248 assertThat (sslContextProvider .getClass ().getSimpleName ()).isEqualTo (
248249 "CertProviderClientSslContextProvider" );
249- verifyWatcher (sslContextProvider , watcherCaptor [0 ]);
250- verifyWatcher (sslContextProvider , watcherCaptor [1 ]);
250+ verifyWatcher (sslContextProvider , watcherCaptor [0 ], true );
251+ verifyWatcher (sslContextProvider , watcherCaptor [1 ], true );
251252 }
252253
253254 @ Test
@@ -280,7 +281,7 @@ public void createNewCertProviderClientSslContextProvider_onlyRootCert() {
280281 clientSslContextProviderFactory .create (upstreamTlsContext );
281282 assertThat (sslContextProvider .getClass ().getSimpleName ()).isEqualTo (
282283 "CertProviderClientSslContextProvider" );
283- verifyWatcher (sslContextProvider , watcherCaptor [0 ]);
284+ verifyWatcher (sslContextProvider , watcherCaptor [0 ], true );
284285 }
285286
286287 static void createAndRegisterProviderProvider (
@@ -310,11 +311,18 @@ public CertificateProvider answer(InvocationOnMock invocation) throws Throwable
310311 }
311312
312313 static void verifyWatcher (
313- SslContextProvider sslContextProvider , CertificateProvider .DistributorWatcher watcherCaptor ) {
314+ SslContextProvider sslContextProvider , CertificateProvider .DistributorWatcher watcherCaptor ,
315+ boolean usesDelegateWatcher ) {
314316 assertThat (watcherCaptor ).isNotNull ();
315317 assertThat (watcherCaptor .getDownstreamWatchers ()).hasSize (1 );
316- assertThat (watcherCaptor .getDownstreamWatchers ().iterator ().next ())
317- .isSameInstanceAs (sslContextProvider );
318+ if (usesDelegateWatcher ) {
319+ assertThat (((IgnoreUpdatesWatcher ) watcherCaptor .getDownstreamWatchers ().iterator ().next ())
320+ .getDelegate ())
321+ .isSameInstanceAs (sslContextProvider );
322+ } else {
323+ assertThat (watcherCaptor .getDownstreamWatchers ().iterator ().next ())
324+ .isSameInstanceAs (sslContextProvider );
325+ }
318326 }
319327
320328 static CommonTlsContext .Builder addFilenames (
0 commit comments