@JsonIgnore public AtlasDbConfig toOfflineConfig() { return ImmutableAtlasDbConfig.builder() .from(this) .leader(Optional.empty()) .lock(Optional.empty()) .timestamp(Optional.empty()) .build(); } }
@Test public void inMemoryConfigCanHaveEmptyNamespace() { InMemoryAtlasDbConfig kvsConfig = new InMemoryAtlasDbConfig(); assertFalse("This test assumes the InMemoryAtlasDbConfig has no namespace by default", kvsConfig.namespace().isPresent()); ImmutableAtlasDbConfig config = ImmutableAtlasDbConfig.builder() .namespace(Optional.empty()) .keyValueService(kvsConfig) .build(); assertThat(config.getNamespaceString(), equalTo(AtlasDbConfig.UNSPECIFIED_NAMESPACE)); }
@Test(expected = IllegalStateException.class) public void kvsConfigIsRequired() { ImmutableAtlasDbConfig.builder().build(); }
@Test public void inMemoryKeyspaceAndTimelockClientCanBeDifferent() { InMemoryAtlasDbConfig kvsConfig = new InMemoryAtlasDbConfig(); assertFalse("This test assumes the InMemoryAtlasDbConfig has no namespace by default", kvsConfig.namespace().isPresent()); ImmutableAtlasDbConfig config = ImmutableAtlasDbConfig.builder() .keyValueService(kvsConfig) .timelock(TIMELOCK_CONFIG_WITH_OTHER_CLIENT) .build(); assertThat(config.getNamespaceString(), equalTo(OTHER_CLIENT)); }
@Test public void configWithNoLeaderOrLockIsValid() { AtlasDbConfig config = ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITH_NAMESPACE) .build(); assertThat(config, not(nullValue())); }
@Test public void absentNamespaceRequiresTimelockClient() { assertThatThrownBy(() -> ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITH_NAMESPACE) .timelock(TIMELOCK_CONFIG_WITH_OPTIONAL_EMPTY_CLIENT) .build()) .isInstanceOf(IllegalStateException.class) .satisfies((exception) -> assertThat(exception.getMessage(), containsString("config should be present"))); }
@Test public void absentNamespaceRequiresKvsNamespace() { assertThatThrownBy(() -> ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITHOUT_NAMESPACE) .leader(LEADER_CONFIG) .build()) .isInstanceOf(IllegalStateException.class) .satisfies((exception) -> assertThat(exception.getMessage(), containsString("config needs to be set"))); }
@Test public void namespaceAndKvsNamespaceShouldMatch() { assertThatThrownBy(() -> ImmutableAtlasDbConfig.builder() .namespace(TEST_NAMESPACE) .keyValueService(KVS_CONFIG_WITH_OTHER_NAMESPACE) .timelock(TIMELOCK_CONFIG_WITH_OPTIONAL_EMPTY_CLIENT) .build()) .isInstanceOf(IllegalStateException.class) .satisfies((exception) -> assertThat(exception.getMessage(), containsString("config should be the same"))); }
@Test public void namespaceAndTimelockClientShouldMatch() { assertThatThrownBy(() -> ImmutableAtlasDbConfig.builder() .namespace(TEST_NAMESPACE) .keyValueService(KVS_CONFIG_WITHOUT_NAMESPACE) .timelock(TIMELOCK_CONFIG_WITH_OTHER_CLIENT) .build()) .isInstanceOf(IllegalStateException.class) .satisfies((exception) -> assertThat(exception.getMessage(), containsString("config should be the same"))); }
@Test public void configWithLeaderBlockIsValid() { AtlasDbConfig config = ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITH_NAMESPACE) .leader(LEADER_CONFIG) .build(); assertThat(config.getNamespaceString(), equalTo(TEST_NAMESPACE)); assertThat(config, not(nullValue())); }
@Test public void configWithTimelockBlockIsValid() { AtlasDbConfig config = ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITH_NAMESPACE) .timelock(TIMELOCK_CONFIG) .build(); assertThat(config.getNamespaceString(), equalTo(TEST_NAMESPACE)); assertThat(config, not(nullValue())); }
@Test public void inMemoryConfigCannotHaveEmptyNamespaceWithEmptyTimelockClient() { InMemoryAtlasDbConfig kvsConfig = new InMemoryAtlasDbConfig(); assertFalse("This test assumes the InMemoryAtlasDbConfig has no namespace by default", kvsConfig.namespace().isPresent()); assertThatThrownBy(() -> ImmutableAtlasDbConfig.builder() .namespace(Optional.empty()) .keyValueService(kvsConfig) .timelock(TIMELOCK_CONFIG_WITH_OPTIONAL_EMPTY_CLIENT) .build()) .isInstanceOf(IllegalStateException.class) .satisfies((exception) -> assertThat(exception.getMessage(), containsString("TimeLock client should not be empty"))); }
@Test public void remoteLockAndTimestampConfigIsValid() { AtlasDbConfig config = ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITH_NAMESPACE) .lock(SINGLETON_SERVER_LIST) .timestamp(SINGLETON_SERVER_LIST) .build(); assertThat(config.getNamespaceString(), equalTo(TEST_NAMESPACE)); assertThat(config, not(nullValue())); }
public AtlasDbServices connect() { if (services != null) { throw new IllegalStateException("connect() has already been called"); } DockerizedDatabaseUri dburi = DockerizedDatabaseUri.fromUriString(uri); KeyValueServiceConfig config = dburi.getKeyValueServiceInstrumentation() .getKeyValueServiceConfig(dburi.getAddress()); ImmutableAtlasDbConfig atlasDbConfig = ImmutableAtlasDbConfig.builder().keyValueService(config).build(); ImmutableAtlasDbRuntimeConfig runtimeConfig = ImmutableAtlasDbRuntimeConfig.defaultRuntimeConfig(); ServicesConfigModule servicesConfigModule = ServicesConfigModule.create(atlasDbConfig, runtimeConfig); services = DaggerAtlasDbServices.builder() .servicesConfigModule(servicesConfigModule) .build(); return services; }
@Test(expected = IllegalStateException.class) public void lockBlockRequiresTimestampBlock() { ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITH_NAMESPACE) .lock(SINGLETON_SERVER_LIST) .build(); }
@Test(expected = IllegalStateException.class) public void timestampBlockRequiresLockBlock() { ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITH_NAMESPACE) .timestamp(SINGLETON_SERVER_LIST) .build(); }
@Test(expected = IllegalStateException.class) public void absentNamespaceRequiresMatchingKvsNamespaceAndTimelockClient() { ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITH_NAMESPACE) .timelock(TIMELOCK_CONFIG_WITH_OTHER_CLIENT) .build(); }
@Test public void addingFallbackSslAddsItToLeaderBlock() { AtlasDbConfig withoutSsl = ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITH_NAMESPACE) .leader(LEADER_CONFIG) .build(); AtlasDbConfig withSsl = AtlasDbConfigs.addFallbackSslConfigurationToAtlasDbConfig(withoutSsl, SSL_CONFIG); assertThat(withSsl.leader().get().sslConfiguration(), is(SSL_CONFIG)); assertThat(withoutSsl.getNamespaceString(), equalTo(TEST_NAMESPACE)); }
/** * Create a {@link TransactionManager} backed by an * {@link com.palantir.atlasdb.keyvalue.impl.InMemoryKeyValueService}. This should be used for testing * purposes only. */ public static TransactionManager createInMemory(Set<Schema> schemas) { AtlasDbConfig config = ImmutableAtlasDbConfig.builder().keyValueService(new InMemoryAtlasDbConfig()).build(); return builder() .config(config) .userAgent(UserAgents.DEFAULT_USER_AGENT) .globalMetricsRegistry(new MetricRegistry()) .globalTaggedMetricRegistry(DefaultTaggedMetricRegistry.getDefault()) .addAllSchemas(schemas) .build() .serializable(); }
@Test public void addingAbsentFallbackSslWhenItDoesntExistsLeavesItAsAbsent() { AtlasDbConfig withoutSsl = ImmutableAtlasDbConfig.builder() .keyValueService(KVS_CONFIG_WITH_NAMESPACE) .leader(LEADER_CONFIG) .build(); AtlasDbConfig withSsl = AtlasDbConfigs.addFallbackSslConfigurationToAtlasDbConfig(withoutSsl, NO_SSL_CONFIG); assertThat(withSsl.leader().get().sslConfiguration(), is(NO_SSL_CONFIG)); }