1717package io .grpc .internal ;
1818
1919import static com .google .common .truth .Truth .assertThat ;
20+ import static io .grpc .internal .DnsNameResolver .NETWORKADDRESS_CACHE_TTL_PROPERTY ;
2021import static org .junit .Assert .assertEquals ;
2122import static org .junit .Assert .assertFalse ;
2223import static org .junit .Assert .assertNotNull ;
7879import java .util .logging .Level ;
7980import java .util .logging .Logger ;
8081import java .util .regex .Pattern ;
81- import javax .annotation .Nullable ;
82- import org .junit .After ;
8382import org .junit .Before ;
8483import org .junit .Rule ;
8584import org .junit .Test ;
@@ -100,6 +99,7 @@ public class DnsNameResolverTest {
10099
101100 @ Rule public final TestRule globalTimeout = new DisableOnDebug (Timeout .seconds (10 ));
102101 @ Rule public final MockitoRule mocks = MockitoJUnit .rule ();
102+ @ Rule public final FlagResetRule flagResetRule = new FlagResetRule ();
103103
104104 private final Map <String , ?> serviceConfig = new LinkedHashMap <>();
105105
@@ -152,8 +152,6 @@ public void close(Executor instance) {}
152152 private NameResolver .Listener2 mockListener ;
153153 @ Captor
154154 private ArgumentCaptor <ResolutionResult > resultCaptor ;
155- @ Nullable
156- private String networkaddressCacheTtlPropertyValue ;
157155 @ Mock
158156 private RecordFetcher recordFetcher ;
159157 @ Mock private ProxyDetector mockProxyDetector ;
@@ -213,24 +211,11 @@ private RetryingNameResolver newResolver(
213211 @ Before
214212 public void setUp () {
215213 DnsNameResolver .enableJndi = true ;
216- networkaddressCacheTtlPropertyValue =
217- System .getProperty (DnsNameResolver .NETWORKADDRESS_CACHE_TTL_PROPERTY );
218214
219215 // By default the mock listener processes the result successfully.
220216 when (mockListener .onResult2 (isA (ResolutionResult .class ))).thenReturn (Status .OK );
221217 }
222218
223- @ After
224- public void restoreSystemProperty () {
225- if (networkaddressCacheTtlPropertyValue == null ) {
226- System .clearProperty (DnsNameResolver .NETWORKADDRESS_CACHE_TTL_PROPERTY );
227- } else {
228- System .setProperty (
229- DnsNameResolver .NETWORKADDRESS_CACHE_TTL_PROPERTY ,
230- networkaddressCacheTtlPropertyValue );
231- }
232- }
233-
234219 @ Test
235220 public void invalidDnsName () throws Exception {
236221 testInvalidUri (new URI ("dns" , null , "/[invalid]" , null ));
@@ -275,19 +260,19 @@ public void invalidDnsName_containsUnderscore() {
275260
276261 @ Test
277262 public void resolve_androidIgnoresPropertyValue () throws Exception {
278- System . setProperty ( DnsNameResolver . NETWORKADDRESS_CACHE_TTL_PROPERTY , Long . toString ( 2 ) );
263+ flagResetRule . setSystemPropertyForTest ( NETWORKADDRESS_CACHE_TTL_PROPERTY , "2" );
279264 resolveNeverCache (true );
280265 }
281266
282267 @ Test
283268 public void resolve_androidIgnoresPropertyValueCacheForever () throws Exception {
284- System . setProperty ( DnsNameResolver . NETWORKADDRESS_CACHE_TTL_PROPERTY , Long . toString (- 1 ) );
269+ flagResetRule . setSystemPropertyForTest ( NETWORKADDRESS_CACHE_TTL_PROPERTY , "-1" );
285270 resolveNeverCache (true );
286271 }
287272
288273 @ Test
289274 public void resolve_neverCache () throws Exception {
290- System . setProperty ( DnsNameResolver . NETWORKADDRESS_CACHE_TTL_PROPERTY , "0" );
275+ flagResetRule . setSystemPropertyForTest ( NETWORKADDRESS_CACHE_TTL_PROPERTY , "0" );
291276 resolveNeverCache (false );
292277 }
293278
@@ -387,7 +372,7 @@ public void execute(Runnable command) {
387372
388373 @ Test
389374 public void resolve_cacheForever () throws Exception {
390- System . setProperty ( DnsNameResolver . NETWORKADDRESS_CACHE_TTL_PROPERTY , "-1" );
375+ flagResetRule . setSystemPropertyForTest ( NETWORKADDRESS_CACHE_TTL_PROPERTY , "-1" );
391376 final List <InetAddress > answer1 = createAddressList (2 );
392377 String name = "foo.googleapis.com" ;
393378 FakeTicker fakeTicker = new FakeTicker ();
@@ -421,7 +406,7 @@ public void resolve_cacheForever() throws Exception {
421406 @ Test
422407 public void resolve_usingCache () throws Exception {
423408 long ttl = 60 ;
424- System . setProperty ( DnsNameResolver . NETWORKADDRESS_CACHE_TTL_PROPERTY , Long .toString (ttl ));
409+ flagResetRule . setSystemPropertyForTest ( NETWORKADDRESS_CACHE_TTL_PROPERTY , Long .toString (ttl ));
425410 final List <InetAddress > answer = createAddressList (2 );
426411 String name = "foo.googleapis.com" ;
427412 FakeTicker fakeTicker = new FakeTicker ();
@@ -456,7 +441,7 @@ public void resolve_usingCache() throws Exception {
456441 @ Test
457442 public void resolve_cacheExpired () throws Exception {
458443 long ttl = 60 ;
459- System . setProperty ( DnsNameResolver . NETWORKADDRESS_CACHE_TTL_PROPERTY , Long .toString (ttl ));
444+ flagResetRule . setSystemPropertyForTest ( NETWORKADDRESS_CACHE_TTL_PROPERTY , Long .toString (ttl ));
460445 final List <InetAddress > answer1 = createAddressList (2 );
461446 final List <InetAddress > answer2 = createAddressList (1 );
462447 String name = "foo.googleapis.com" ;
@@ -491,13 +476,13 @@ public void resolve_cacheExpired() throws Exception {
491476
492477 @ Test
493478 public void resolve_invalidTtlPropertyValue () throws Exception {
494- System . setProperty ( DnsNameResolver . NETWORKADDRESS_CACHE_TTL_PROPERTY , "not_a_number" );
479+ flagResetRule . setSystemPropertyForTest ( NETWORKADDRESS_CACHE_TTL_PROPERTY , "not_a_number" );
495480 resolveDefaultValue ();
496481 }
497482
498483 @ Test
499484 public void resolve_noPropertyValue () throws Exception {
500- System . clearProperty ( DnsNameResolver . NETWORKADDRESS_CACHE_TTL_PROPERTY );
485+ flagResetRule . clearSystemPropertyForTest ( NETWORKADDRESS_CACHE_TTL_PROPERTY );
501486 resolveDefaultValue ();
502487 }
503488
0 commit comments