@Test public void testHttpSelectorAnnotation() { injector = Guice.createInjector( new ApplicationNameModule("test-application"), new ConfigurationModule(new ConfigurationFactory(ImmutableMap.<String, String>of())), new TestingNodeModule(), new TestingDiscoveryModule(), new TestingMBeanModule(), new ReportingModule(), new Module() { @Override public void configure(Binder binder) { discoveryBinder(binder).bindHttpSelector(serviceType("apple")); } }); InMemoryDiscoveryClient discoveryClient = injector.getInstance(InMemoryDiscoveryClient.class); discoveryClient.announce( ImmutableSet.of( serviceAnnouncement("apple").addProperty("http", "fake://server-http").build())); HttpServiceSelector selector = injector.getInstance(Key.get(HttpServiceSelector.class, serviceType("apple"))); assertEquals(getOnlyElement(selector.selectHttpService()), URI.create("fake://server-http")); }
@Test public void testHttpSelectorString() { InMemoryDiscoveryClient discoveryClient = injector.getInstance(InMemoryDiscoveryClient.class); discoveryClient.announce( ImmutableSet.of( serviceAnnouncement("apple").addProperty("http", "fake://server-http").build())); HttpServiceSelector selector = injector.getInstance(Key.get(HttpServiceSelector.class, serviceType("apple"))); assertEquals(getOnlyElement(selector.selectHttpService()), URI.create("fake://server-http")); }
@Test public void testNoHttpServices() { InMemoryDiscoveryClient discoveryClient = injector.getInstance(InMemoryDiscoveryClient.class); discoveryClient.announce( ImmutableSet.of( serviceAnnouncement("apple").addProperty("foo", "fake://server-https").build())); HttpServiceSelector selector = injector.getInstance(Key.get(HttpServiceSelector.class, serviceType("apple"))); assertEquals(selector.selectHttpService(), ImmutableList.of()); }
@Test public void testInvalidUris() { InMemoryDiscoveryClient discoveryClient = injector.getInstance(InMemoryDiscoveryClient.class); discoveryClient.announce( ImmutableSet.of(serviceAnnouncement("apple").addProperty("http", ":::INVALID:::").build())); discoveryClient.announce( ImmutableSet.of( serviceAnnouncement("apple").addProperty("https", ":::INVALID:::").build())); HttpServiceSelector selector = injector.getInstance(Key.get(HttpServiceSelector.class, serviceType("apple"))); assertEquals(selector.selectHttpService(), ImmutableList.of()); }
@Test public void testFavorHttpsOverHttpSelector() { InMemoryDiscoveryClient discoveryClient = injector.getInstance(InMemoryDiscoveryClient.class); discoveryClient.announce( ImmutableSet.of( serviceAnnouncement("apple").addProperty("http", "fake://server-http").build(), serviceAnnouncement("apple") .addProperty("http", "fake://server-http-dontuse") .addProperty("https", "fake://server-https") .build())); HttpServiceSelector selector = injector.getInstance(Key.get(HttpServiceSelector.class, serviceType("apple"))); assertEqualsIgnoreOrder( selector.selectHttpService(), ImmutableList.of(URI.create("fake://server-https"), URI.create("fake://server-http"))); }