newExporter(binder).export(DiscoveryNodeManager.class).withGeneratedName(); httpClientBinder(binder).bindHttpClient("node-manager", ForNodeManager.class) .withTracing() .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(30, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS)); .withTracing() .withFilter(GenerateTraceTokenRequestFilter.class) .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(30, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS));
newExporter(binder).export(DiscoveryNodeManager.class).withGeneratedName(); httpClientBinder(binder).bindHttpClient("node-manager", ForNodeManager.class) .withTracing() .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(30, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS)); .withTracing() .withFilter(GenerateTraceTokenRequestFilter.class) .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(30, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS));
newExporter(binder).export(DiscoveryNodeManager.class).withGeneratedName(); httpClientBinder(binder).bindHttpClient("node-manager", ForNodeManager.class) .withTracing() .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(30, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS)); .withTracing() .withFilter(GenerateTraceTokenRequestFilter.class) .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(30, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS));
.withTracing() .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(2, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS)); newExporter(binder).export(RemoteTaskFactory.class).withGeneratedName(); httpClientBinder(binder).bindHttpClient("scheduler", ForScheduler.class) .withTracing() .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(2, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS)); .withTracing() .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(2, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS)); .withTracing() .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(2, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS));
binder.bind(ClusterMemoryPoolManager.class).to(ClusterMemoryManager.class).in(Scopes.SINGLETON); httpClientBinder(binder).bindHttpClient("memoryManager", ForMemoryManager.class) .withTracing() .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(30, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS)); .withTracing() .withFilter(GenerateTraceTokenRequestFilter.class) .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(30, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS));
binder.bind(ClusterMemoryPoolManager.class).to(ClusterMemoryManager.class).in(Scopes.SINGLETON); httpClientBinder(binder).bindHttpClient("memoryManager", ForMemoryManager.class) .withTracing() .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(30, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS)); .withTracing() .withFilter(GenerateTraceTokenRequestFilter.class) .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(30, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS));
.withTracing() .withConfigDefaults(config -> { config.setIdleTimeout(new Duration(2, SECONDS)); config.setRequestTimeout(new Duration(10, SECONDS));
.bindGlobalFilter(globalFilter2); httpClientBinder(binder).bindHttpClient("foo", FooClient.class) .addFilterBinding().toInstance(filter1); httpClientBinder(binder).bindHttpClient("bar", BarClient.class) .addFilterBinding().toInstance(filter2); }, new TraceTokenModule())
.bindGlobalFilter(globalFilter2); httpClientBinder(binder).bindHttpClient("foo", FooClient.class) .addFilterBinding().toInstance(filter1); httpClientBinder(binder).bindHttpClient("bar", BarClient.class) .addFilterBinding().toInstance(filter2); }, new TraceTokenModule())
@Test public void testBindingMultipleFiltersAndClients() throws Exception { Injector injector = new Bootstrap( binder -> { httpClientBinder(binder).bindHttpClient("foo", FooClient.class) .withFilter(TestingRequestFilter.class) .withFilter(AnotherHttpRequestFilter.class) .withTracing(); httpClientBinder(binder).bindHttpClient("bar", BarClient.class) .withFilter(TestingRequestFilter.class) .addFilterBinding().to(AnotherHttpRequestFilter.class); }, new TraceTokenModule()) .quiet() .strictConfig() .initialize(); assertFilterCount(injector.getInstance(Key.get(HttpClient.class, FooClient.class)), 3); assertFilterCount(injector.getInstance(Key.get(HttpClient.class, BarClient.class)), 2); }
@Test public void testBindingMultipleFiltersAndClients() throws Exception { Injector injector = new Bootstrap( binder -> { httpClientBinder(binder).bindHttpClient("foo", FooClient.class) .withFilter(TestingRequestFilter.class) .withFilter(AnotherHttpRequestFilter.class) .withTracing(); httpClientBinder(binder).bindHttpClient("bar", BarClient.class) .withFilter(TestingRequestFilter.class) .addFilterBinding().to(AnotherHttpRequestFilter.class); }, new TraceTokenModule()) .quiet() .strictConfig() .initialize(); assertFilterCount(injector.getInstance(Key.get(HttpClient.class, FooClient.class)), 3); assertFilterCount(injector.getInstance(Key.get(HttpClient.class, BarClient.class)), 2); }
@Override public void configure(Binder binder) { httpClientBinder(binder) .bindHttpClient("failure-detector", ForFailureDetector.class) .withPrivateIoThreadPool() .withTracing(); configBinder(binder).bindConfig(FailureDetectorConfig.class); binder.bind(HeartbeatFailureDetector.class).in(Scopes.SINGLETON); binder.bind(FailureDetector.class) .to(HeartbeatFailureDetector.class) .in(Scopes.SINGLETON); ExportBinder.newExporter(binder) .export(HeartbeatFailureDetector.class) .withGeneratedName(); } }
@Override public void configure(Binder binder) { httpClientBinder(binder) .bindHttpClient("failure-detector", ForFailureDetector.class) .withTracing(); configBinder(binder).bindConfig(FailureDetectorConfig.class); binder.bind(HeartbeatFailureDetector.class).in(Scopes.SINGLETON); binder.bind(FailureDetector.class) .to(HeartbeatFailureDetector.class) .in(Scopes.SINGLETON); ExportBinder.newExporter(binder) .export(HeartbeatFailureDetector.class) .withGeneratedName(); } }
@Test public void testAliases() throws Exception { Injector injector = new Bootstrap( binder -> httpClientBinder(binder).bindHttpClient("foo", FooClient.class) .withAlias(FooAlias1.class) .withAliases(ImmutableList.of(FooAlias2.class, FooAlias3.class))) .quiet() .strictConfig() .initialize(); HttpClient client = injector.getInstance(Key.get(HttpClient.class, FooClient.class)); assertSame(injector.getInstance(Key.get(HttpClient.class, FooAlias1.class)), client); assertSame(injector.getInstance(Key.get(HttpClient.class, FooAlias2.class)), client); assertSame(injector.getInstance(Key.get(HttpClient.class, FooAlias3.class)), client); }
@Override public void configure(Binder binder) { httpClientBinder(binder) .bindHttpClient("failure-detector", ForFailureDetector.class) .withTracing(); configBinder(binder).bindConfig(FailureDetectorConfig.class); binder.bind(HeartbeatFailureDetector.class).in(Scopes.SINGLETON); binder.bind(FailureDetector.class) .to(HeartbeatFailureDetector.class) .in(Scopes.SINGLETON); ExportBinder.newExporter(binder) .export(HeartbeatFailureDetector.class) .withGeneratedName(); } }
@Test public void testBindClientWithFilter() throws Exception { Injector injector = new Bootstrap( binder -> httpClientBinder(binder).bindHttpClient("foo", FooClient.class) .withFilter(TestingRequestFilter.class) .withFilter(AnotherHttpRequestFilter.class) .withTracing(), new TraceTokenModule()) .quiet() .strictConfig() .initialize(); HttpClient httpClient = injector.getInstance(Key.get(HttpClient.class, FooClient.class)); assertFilterCount(httpClient, 3); }
@Test public void testBindClientWithAliases() throws Exception { Injector injector = new Bootstrap( binder -> httpClientBinder(binder).bindHttpClient("foo", FooClient.class) .withAlias(FooAlias1.class) .withAlias(FooAlias2.class)) .quiet() .strictConfig() .initialize(); HttpClient client = injector.getInstance(Key.get(HttpClient.class, FooClient.class)); assertSame(injector.getInstance(Key.get(HttpClient.class, FooAlias1.class)), client); assertSame(injector.getInstance(Key.get(HttpClient.class, FooAlias2.class)), client); }
@Test public void testConfigDefaults() throws Exception { Injector injector = new Bootstrap( binder -> httpClientBinder(binder) .bindHttpClient("foo", FooClient.class) .withConfigDefaults(config -> config.setRequestTimeout(new Duration(33, MINUTES))), new TraceTokenModule()) .quiet() .strictConfig() .initialize(); JettyHttpClient httpClient = (JettyHttpClient) injector.getInstance(Key.get(HttpClient.class, FooClient.class)); assertEquals(httpClient.getRequestTimeoutMillis(), MINUTES.toMillis(33)); }
@Test public void testAliases() throws Exception { Injector injector = new Bootstrap( binder -> httpClientBinder(binder).bindHttpClient("foo", FooClient.class) .withAlias(FooAlias1.class) .withAliases(ImmutableList.of(FooAlias2.class, FooAlias3.class))) .quiet() .strictConfig() .initialize(); HttpClient client = injector.getInstance(Key.get(HttpClient.class, FooClient.class)); assertSame(injector.getInstance(Key.get(HttpClient.class, FooAlias1.class)), client); assertSame(injector.getInstance(Key.get(HttpClient.class, FooAlias2.class)), client); assertSame(injector.getInstance(Key.get(HttpClient.class, FooAlias3.class)), client); }
@Test public void testConfigDefaults() throws Exception { Injector injector = new Bootstrap( binder -> httpClientBinder(binder) .bindHttpClient("foo", FooClient.class) .withConfigDefaults(config -> config.setRequestTimeout(new Duration(33, MINUTES))), new TraceTokenModule()) .quiet() .strictConfig() .initialize(); JettyHttpClient httpClient = (JettyHttpClient) injector.getInstance(Key.get(HttpClient.class, FooClient.class)); assertEquals(httpClient.getRequestTimeoutMillis(), MINUTES.toMillis(33)); }