package com.spotify.heroic.metric.bigtable;
import com.spotify.heroic.metric.MetricModule;
import com.spotify.heroic.metric.bigtable.credentials.JsonCredentialsBuilder;
import com.spotify.heroic.test.AbstractMetricBackendIT;
import com.spotify.heroic.test.TestProperties;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
import java.util.UUID;
public class BigtableBackendIT extends AbstractMetricBackendIT {
private final TestProperties properties = TestProperties.ofPrefix("it.bigtable");
@Override
protected Optional<Long> period() {
return Optional.of(BigtableBackend.PERIOD);
}
@Override
protected void setupSupport() {
super.setupSupport();
this.eventSupport = true;
this.maxBatchSize = Optional.of(BigtableBackend.MAX_BATCH_SIZE);
this.brokenSegmentsPr208 = true;
}
@Override
public Optional<MetricModule> setupModule() {
final String table = "heroic_it_" + UUID.randomUUID();
final Optional<MetricModule> remote = properties.getOptionalString("remote").map(v -> {
final String project = properties.getRequiredString("project");
final String instance = properties.getRequiredString("instance");
final Path credentials = Paths.get(properties.getRequiredString("credentials"));
return BigtableMetricModule
.builder()
.configure(true)
.project(project)
.instance(instance)
.table(table)
.credentials(JsonCredentialsBuilder.builder().path(credentials).build())
.build();
});
if (remote.isPresent()) {
return remote;
}
final BigtableMetricModule module = BigtableMetricModule
.builder()
.configure(true)
.project("fake")
.table(table)
.fake(true)
.build();
return Optional.of(module);
}
}