blob: 927f54246f0b60c1c159d04e1fc90da31f8cd193 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.beam.sdk.testutils.publishing;
import static org.apache.beam.repackaged.core.org.apache.commons.lang3.StringUtils.isBlank;
public final class InfluxDBSettings {
public final String host;
public final String userName;
public final String userPassword;
public final String measurement;
public final String database;
private InfluxDBSettings(
String host, String userName, String userPassword, String measurement, String database) {
this.host = host;
this.userName = userName;
this.userPassword = userPassword;
this.measurement = measurement;
this.database = database;
}
public static Builder builder() {
return new Builder();
}
public InfluxDBSettings copyWithMeasurement(final String newMeasurement) {
return new InfluxDBSettings(host, userName, userPassword, newMeasurement, database);
}
public static class Builder {
private static final String DEFAULT_HOST = "http://localhost:8086/";
private static final String INFLUX_USER = "INFLUXDB_USER";
private static final String INFLUX_PASSWORD = "INFLUXDB_USER_PASSWORD";
private String host;
private String measurement;
private String database;
public Builder withHost(final String host) {
this.host = host;
return this;
}
public Builder withMeasurement(final String measurement) {
this.measurement = measurement;
return this;
}
public Builder withDatabase(final String database) {
this.database = database;
return this;
}
public InfluxDBSettings get() {
final String userName = System.getenv(INFLUX_USER);
final String userPassword = System.getenv(INFLUX_PASSWORD);
final String influxHost = isBlank(host) ? DEFAULT_HOST : host;
return new InfluxDBSettings(influxHost, userName, userPassword, measurement, database);
}
}
}