@Override public Supplier<ManagedTimestampService> createTimestampService(String client, LeaderConfig leaderConfig) { ServiceDiscoveringAtlasSupplier atlasFactory = new ServiceDiscoveringAtlasSupplier( new MetricsManager(new MetricRegistry(), new DefaultTaggedMetricRegistry(), x -> false), kvsConfig, Optional.of(leaderConfig), Optional.empty(), Optional.of(AtlasDbConstants.TIMELOCK_TIMESTAMP_TABLE)); TimestampService timestampService = atlasFactory.getTimestampService(); Preconditions.checkArgument(TimestampManagementService.class.isInstance(timestampService), "The timestamp service is not a managed timestamp service."); return () -> new DelegatingManagedTimestampService(timestampService, (TimestampManagementService) timestampService); } }
@Test public void returnDifferentTimestampServicesOnSubsequentCalls() { // Need to get a newly-initialized timestamp service in case leadership changed between calls. ServiceDiscoveringAtlasSupplier supplier = new ServiceDiscoveringAtlasSupplier( metrics, kvsConfig, leaderConfig); AutoServiceAnnotatedAtlasDbFactory.nextTimestampServiceToReturn( mock(TimestampService.class), mock(TimestampService.class)); assertThat(supplier.getTimestampService(), is(not(sameObjectAs(supplier.getTimestampService())))); }
@Test public void delegateToFactoriesAnnotatedWithAutoServiceForCreatingTimestampServices() { ServiceDiscoveringAtlasSupplier atlasSupplier = new ServiceDiscoveringAtlasSupplier( metrics, kvsConfig, leaderConfig); TimestampService timestampService = mock(TimestampService.class); AutoServiceAnnotatedAtlasDbFactory.nextTimestampServiceToReturn(timestampService); assertThat( atlasSupplier.getTimestampService(), is(timestampService)); }
@Test public void delegateToFactoriesAnnotatedWithAutoServiceForCreatingKeyValueServices() { ServiceDiscoveringAtlasSupplier atlasSupplier = new ServiceDiscoveringAtlasSupplier( metrics, kvsConfig, leaderConfig); assertThat( atlasSupplier.getKeyValueService(), is(delegate.createRawKeyValueService(metrics, kvsConfig, leaderConfig))); }
@Value.Derived public ServiceDiscoveringAtlasSupplier atlasDbSupplier(MetricsManager metrics) { return new ServiceDiscoveringAtlasSupplier( metrics, atlasDbConfig().keyValueService(), () -> atlasDbRuntimeConfig().keyValueService(), atlasDbConfig().leader(), atlasDbConfig().namespace(), Optional.empty(), atlasDbConfig().initializeAsync(), adapter()); }
@Test public void alwaysSaveThreadDumpsToTheSameFile() throws IOException { ServiceDiscoveringAtlasSupplier supplier = new ServiceDiscoveringAtlasSupplier( metrics, kvsConfig, leaderConfig); String firstPath = supplier.saveThreadDumps(); String secondPath = supplier.saveThreadDumps(); assertEquals(firstPath, secondPath); }
@Test public void notAllowConstructionWithoutAValidBackingFactory() { exception.expect(IllegalStateException.class); exception.expectMessage("No atlas provider"); exception.expectMessage(invalidKvsConfig.type()); exception.expectMessage("Have you annotated it with @AutoService(AtlasDbFactory.class)?"); new ServiceDiscoveringAtlasSupplier(metrics, invalidKvsConfig, leaderConfig); }
ServiceDiscoveringAtlasSupplier atlasFactory = new ServiceDiscoveringAtlasSupplier(metricsManager, config().keyValueService(), Suppliers.compose(AtlasDbRuntimeConfig::keyValueService, runtimeConfigSupplier::get),
@Value.Derived public ServiceDiscoveringAtlasSupplier atlasDbSupplier(MetricsManager metrics) { return new ServiceDiscoveringAtlasSupplier( metrics, atlasDbConfig().keyValueService(), () -> atlasDbRuntimeConfig().keyValueService(), atlasDbConfig().leader(), atlasDbConfig().namespace(), Optional.empty(), atlasDbConfig().initializeAsync(), adapter()); }
ServiceDiscoveringAtlasSupplier atlasFactory = new ServiceDiscoveringAtlasSupplier(metricsManager, config().keyValueService(), Suppliers.compose(AtlasDbRuntimeConfig::keyValueService, runtimeConfigSupplier::get),