3333/** Unit tests for {@link NameResolverRegistry}. */
3434@ RunWith (JUnit4 .class )
3535public class NameResolverRegistryTest {
36- private final URI uri = URI .create ("dns:///localhost" );
36+ private final URI javaNetUri = URI .create ("dns:///localhost" );
37+ private final Uri ioGrpcUri = Uri .create ("dns:///localhost" );
3738 private final NameResolver .Args args = NameResolver .Args .newBuilder ()
3839 .setDefaultPort (8080 )
3940 .setProxyDetector (mock (ProxyDetector .class ))
@@ -96,43 +97,80 @@ public void getDefaultScheme_noProvider() {
9697 }
9798
9899 @ Test
99- public void newNameResolver_providerReturnsNull () {
100+ public void newNameResolver_providerReturnsNull_ioGrpcUri () {
100101 NameResolverRegistry registry = new NameResolverRegistry ();
101102 registry .register (
102103 new BaseProvider (true , 5 , "noScheme" ) {
103104 @ Override
104105 public NameResolver newNameResolver (URI passedUri , NameResolver .Args passedArgs ) {
105- assertThat (passedUri ).isSameInstanceAs (uri );
106+ assertThat (passedUri ).isSameInstanceAs (ioGrpcUri );
106107 assertThat (passedArgs ).isSameInstanceAs (args );
107108 return null ;
108109 }
109110 });
110- assertThat (registry .asFactory ().newNameResolver (uri , args )).isNull ();
111+ assertThat (registry .asFactory ().newNameResolver (ioGrpcUri , args )).isNull ();
111112 assertThat (registry .asFactory ().getDefaultScheme ()).isEqualTo ("noScheme" );
112113 }
113114
114115 @ Test
115- public void newNameResolver_providerReturnsNonNull () {
116+ public void newNameResolver_providerReturnsNull_javaNetUri () {
116117 NameResolverRegistry registry = new NameResolverRegistry ();
117- registry .register (new BaseProvider (true , 5 , uri .getScheme ()) {
118- @ Override
119- public NameResolver newNameResolver (URI passedUri , NameResolver .Args passedArgs ) {
120- return null ;
121- }
122- });
123- final NameResolver nr = new NameResolver () {
124- @ Override public String getServiceAuthority () {
125- throw new UnsupportedOperationException ();
126- }
118+ registry .register (
119+ new BaseProvider (true , 5 , "noScheme" ) {
120+ @ Override
121+ public NameResolver newNameResolver (URI passedUri , NameResolver .Args passedArgs ) {
122+ assertThat (passedUri ).isSameInstanceAs (javaNetUri );
123+ assertThat (passedArgs ).isSameInstanceAs (args );
124+ return null ;
125+ }
126+ });
127+ assertThat (registry .asFactory ().newNameResolver (javaNetUri , args )).isNull ();
128+ assertThat (registry .asFactory ().getDefaultScheme ()).isEqualTo ("noScheme" );
129+ }
127130
128- @ Override public void start (Listener2 listener ) {
129- throw new UnsupportedOperationException ();
130- }
131+ @ Test
132+ public void newNameResolver_providerReturnsNonNull_ioGrpcUri () {
133+ NameResolverRegistry registry = new NameResolverRegistry ();
134+ Uri uri = ioGrpcUri ;
135+ registry .register (
136+ new BaseProvider (true , 5 , uri .getScheme ()) {
137+ @ Override
138+ public NameResolver newNameResolver (Uri passedUri , NameResolver .Args passedArgs ) {
139+ return null ;
140+ }
141+ });
142+ final NameResolver nr = new DummyNameResolver ();
143+ registry .register (
144+ new BaseProvider (true , 4 , uri .getScheme ()) {
145+ @ Override
146+ public NameResolver newNameResolver (Uri passedUri , NameResolver .Args passedArgs ) {
147+ return nr ;
148+ }
149+ });
150+ registry .register (
151+ new BaseProvider (true , 3 , uri .getScheme ()) {
152+ @ Override
153+ public NameResolver newNameResolver (Uri passedUri , NameResolver .Args passedArgs ) {
154+ fail ("Should not be called" );
155+ throw new AssertionError ();
156+ }
157+ });
158+ assertThat (registry .asFactory ().newNameResolver (uri , args )).isNull ();
159+ assertThat (registry .asFactory ().getDefaultScheme ()).isEqualTo (uri .getScheme ());
160+ }
131161
132- @ Override public void shutdown () {
133- throw new UnsupportedOperationException ();
134- }
135- };
162+ @ Test
163+ public void newNameResolver_providerReturnsNonNull_javaNetUri () {
164+ NameResolverRegistry registry = new NameResolverRegistry ();
165+ URI uri = javaNetUri ;
166+ registry .register (
167+ new BaseProvider (true , 5 , uri .getScheme ()) {
168+ @ Override
169+ public NameResolver newNameResolver (URI passedUri , NameResolver .Args passedArgs ) {
170+ return null ;
171+ }
172+ });
173+ final NameResolver nr = new DummyNameResolver ();
136174 registry .register (
137175 new BaseProvider (true , 4 , uri .getScheme ()) {
138176 @ Override
@@ -153,27 +191,45 @@ public NameResolver newNameResolver(URI passedUri, NameResolver.Args passedArgs)
153191 }
154192
155193 @ Test
156- public void newNameResolver_multipleScheme () {
194+ public void newNameResolver_multipleScheme_ioGrpcUri () {
157195 NameResolverRegistry registry = new NameResolverRegistry ();
158- registry .register (new BaseProvider (true , 5 , uri .getScheme ()) {
159- @ Override
160- public NameResolver newNameResolver (URI passedUri , NameResolver .Args passedArgs ) {
161- return null ;
162- }
163- });
164- final NameResolver nr = new NameResolver () {
165- @ Override public String getServiceAuthority () {
166- throw new UnsupportedOperationException ();
167- }
196+ Uri uri = ioGrpcUri ;
197+ registry .register (
198+ new BaseProvider (true , 5 , uri .getScheme ()) {
199+ @ Override
200+ public NameResolver newNameResolver (Uri passedUri , NameResolver .Args passedArgs ) {
201+ return null ;
202+ }
203+ });
204+ final NameResolver nr = new DummyNameResolver ();
205+ registry .register (
206+ new BaseProvider (true , 4 , "other" ) {
207+ @ Override
208+ public NameResolver newNameResolver (Uri passedUri , NameResolver .Args passedArgs ) {
209+ return nr ;
210+ }
211+ });
168212
169- @ Override public void start (Listener2 listener ) {
170- throw new UnsupportedOperationException ();
171- }
213+ assertThat (registry .asFactory ().newNameResolver (uri , args )).isNull ();
214+ assertThat (registry .asFactory ().newNameResolver (Uri .create ("other:///0.0.0.0:80" ), args ))
215+ .isSameInstanceAs (nr );
216+ assertThat (registry .asFactory ().newNameResolver (Uri .create ("OTHER:///0.0.0.0:80" ), args ))
217+ .isSameInstanceAs (nr );
218+ assertThat (registry .asFactory ().getDefaultScheme ()).isEqualTo ("dns" );
219+ }
172220
173- @ Override public void shutdown () {
174- throw new UnsupportedOperationException ();
175- }
176- };
221+ @ Test
222+ public void newNameResolver_multipleScheme_javaNetUri () {
223+ NameResolverRegistry registry = new NameResolverRegistry ();
224+ URI uri = javaNetUri ;
225+ registry .register (
226+ new BaseProvider (true , 5 , uri .getScheme ()) {
227+ @ Override
228+ public NameResolver newNameResolver (URI passedUri , NameResolver .Args passedArgs ) {
229+ return null ;
230+ }
231+ });
232+ final NameResolver nr = new DummyNameResolver ();
177233 registry .register (
178234 new BaseProvider (true , 4 , "other" ) {
179235 @ Override
@@ -186,16 +242,17 @@ public NameResolver newNameResolver(URI passedUri, NameResolver.Args passedArgs)
186242 assertThat (registry .asFactory ().newNameResolver (URI .create ("/0.0.0.0:80" ), args )).isNull ();
187243 assertThat (registry .asFactory ().newNameResolver (URI .create ("///0.0.0.0:80" ), args )).isNull ();
188244 assertThat (registry .asFactory ().newNameResolver (URI .create ("other:///0.0.0.0:80" ), args ))
189- .isSameInstanceAs (nr );
245+ .isSameInstanceAs (nr );
190246 assertThat (registry .asFactory ().newNameResolver (URI .create ("OTHER:///0.0.0.0:80" ), args ))
191- .isSameInstanceAs (nr );
247+ .isSameInstanceAs (nr );
192248 assertThat (registry .asFactory ().getDefaultScheme ()).isEqualTo ("dns" );
193249 }
194250
195251 @ Test
196252 public void newNameResolver_noProvider () {
197253 NameResolver .Factory factory = new NameResolverRegistry ().asFactory ();
198- assertThat (factory .newNameResolver (uri , args )).isNull ();
254+ assertThat (factory .newNameResolver (javaNetUri , args )).isNull ();
255+ assertThat (factory .newNameResolver (ioGrpcUri , args )).isNull ();
199256 assertThat (factory .getDefaultScheme ()).isEqualTo ("unknown" );
200257 }
201258
@@ -261,9 +318,31 @@ public NameResolver newNameResolver(URI targetUri, NameResolver.Args args) {
261318 throw new UnsupportedOperationException ();
262319 }
263320
321+ @ Override
322+ public NameResolver newNameResolver (Uri targetUri , NameResolver .Args args ) {
323+ throw new UnsupportedOperationException ();
324+ }
325+
264326 @ Override
265327 public String getDefaultScheme () {
266328 return scheme == null ? "scheme" + getClass ().getSimpleName () : scheme ;
267329 }
268330 }
331+
332+ private static class DummyNameResolver extends NameResolver {
333+ @ Override
334+ public String getServiceAuthority () {
335+ throw new UnsupportedOperationException ();
336+ }
337+
338+ @ Override
339+ public void start (Listener2 listener ) {
340+ throw new UnsupportedOperationException ();
341+ }
342+
343+ @ Override
344+ public void shutdown () {
345+ throw new UnsupportedOperationException ();
346+ }
347+ }
269348}
0 commit comments