Skip to content
This repository has been archived by the owner on Sep 26, 2019. It is now read-only.

Convert MetricsConfigiguration to use a builder #1572

Merged
merged 1 commit into from
Jun 18, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public class PantheonFactoryConfigurationBuilder {
private PrivacyParameters privacyParameters = PrivacyParameters.DEFAULT;
private JsonRpcConfiguration jsonRpcConfiguration = JsonRpcConfiguration.createDefault();
private WebSocketConfiguration webSocketConfiguration = WebSocketConfiguration.createDefault();
private MetricsConfiguration metricsConfiguration = MetricsConfiguration.createDefault();
private MetricsConfiguration metricsConfiguration = MetricsConfiguration.builder().build();
private Optional<PermissioningConfiguration> permissioningConfiguration = Optional.empty();
private Optional<String> keyFilePath = Optional.empty();
private boolean devMode = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,9 +250,7 @@ private P2PNetwork createP2pNetwork() {
}

private MetricsConfiguration createMetricsConfiguration() {
final MetricsConfiguration config = MetricsConfiguration.createDefault();
config.setEnabled(true);
return config;
return MetricsConfiguration.builder().enabled(true).build();
}

private JsonRpcHttpService createJsonRpcHttpService(
Expand Down Expand Up @@ -375,7 +373,7 @@ public JsonRpcHttpService getJsonRpcHttpService(final boolean[] enabledNetServic
JsonRpcConfiguration jsonRpcConfiguration = JsonRpcConfiguration.createDefault();
WebSocketConfiguration webSocketConfiguration = WebSocketConfiguration.createDefault();
P2PNetwork p2pNetwork = mock(P2PNetwork.class);
MetricsConfiguration metricsConfiguration = MetricsConfiguration.createDefault();
MetricsConfiguration metricsConfiguration = MetricsConfiguration.builder().build();

if (enabledNetServices[netServices.indexOf("jsonrpc")]) {
jsonRpcConfiguration = createJsonRpcConfiguration();
Expand Down Expand Up @@ -403,7 +401,7 @@ public void netServicesTestWhenJsonrpcWebsocketP2pNetworkAndMatricesIsDisabled()
JsonRpcConfiguration.createDefault(),
WebSocketConfiguration.createDefault(),
mock(P2PNetwork.class),
MetricsConfiguration.createDefault());
MetricsConfiguration.builder().build());
final RequestBody body = createNetServicesRequestBody();

try (final Response resp = client.newCall(buildRequest(body)).execute()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,162 +23,125 @@
import java.util.Objects;
import java.util.Set;

import com.google.common.base.MoreObjects;

public class MetricsConfiguration {
private static final String DEFAULT_METRICS_HOST = "127.0.0.1";
public static final int DEFAULT_METRICS_PORT = 9545;

private static final String DEFAULT_METRICS_PUSH_HOST = "127.0.0.1";
public static final int DEFAULT_METRICS_PUSH_PORT = 9001;

private boolean enabled;
private int port;
private String host;
private Set<MetricCategory> metricCategories;
private boolean pushEnabled;
private int pushPort;
private String pushHost;
private int pushInterval;
private String prometheusJob;
private List<String> hostsWhitelist = Arrays.asList("localhost", "127.0.0.1");

public static MetricsConfiguration createDefault() {
final MetricsConfiguration metricsConfiguration = new MetricsConfiguration();
metricsConfiguration.setEnabled(false);
metricsConfiguration.setPort(DEFAULT_METRICS_PORT);
metricsConfiguration.setHost(DEFAULT_METRICS_HOST);
metricsConfiguration.setMetricCategories(DEFAULT_METRIC_CATEGORIES);
metricsConfiguration.setPushEnabled(false);
metricsConfiguration.setPushPort(DEFAULT_METRICS_PUSH_PORT);
metricsConfiguration.setPushHost(DEFAULT_METRICS_PUSH_HOST);
metricsConfiguration.setPushInterval(15);
metricsConfiguration.setPrometheusJob("pantheon-client");

return metricsConfiguration;
}

private MetricsConfiguration() {}
private final boolean enabled;
private final int port;
private final String host;
private final Set<MetricCategory> metricCategories;
private final boolean pushEnabled;
private final int pushPort;
private final String pushHost;
private final int pushInterval;
private final String prometheusJob;
private final List<String> hostsWhitelist;

public static Builder builder() {
return new Builder();
}

private MetricsConfiguration(
final boolean enabled,
final int port,
final String host,
final Set<MetricCategory> metricCategories,
final boolean pushEnabled,
final int pushPort,
final String pushHost,
final int pushInterval,
final String prometheusJob,
final List<String> hostsWhitelist) {
this.enabled = enabled;
this.port = port;
this.host = host;
this.metricCategories = metricCategories;
this.pushEnabled = pushEnabled;
this.pushPort = pushPort;
this.pushHost = pushHost;
this.pushInterval = pushInterval;
this.prometheusJob = prometheusJob;
this.hostsWhitelist = hostsWhitelist;
}

public boolean isEnabled() {
return enabled;
}

public void setEnabled(final boolean enabled) {
this.enabled = enabled;
}

public int getPort() {
return port;
}

public void setPort(final int port) {
this.port = port;
}

public String getHost() {
return host;
}

public void setHost(final String host) {
this.host = host;
}

public Set<MetricCategory> getMetricCategories() {
return metricCategories;
}

public void setMetricCategories(final Set<MetricCategory> metricCategories) {
this.metricCategories = metricCategories;
}

public int getPushPort() {
return pushPort;
}

public void setPushPort(final int pushPort) {
this.pushPort = pushPort;
}

public String getPushHost() {
return pushHost;
}

public void setPushHost(final String pushHost) {
this.pushHost = pushHost;
}

public boolean isPushEnabled() {
return pushEnabled;
}

public void setPushEnabled(final boolean pushEnabled) {
this.pushEnabled = pushEnabled;
}

public int getPushInterval() {
return pushInterval;
}

public void setPushInterval(final int pushInterval) {
this.pushInterval = pushInterval;
}

public String getPrometheusJob() {
return prometheusJob;
}

public void setPrometheusJob(final String prometheusJob) {
this.prometheusJob = prometheusJob;
}

Collection<String> getHostsWhitelist() {
return Collections.unmodifiableCollection(this.hostsWhitelist);
}

public void setHostsWhitelist(final List<String> hostsWhitelist) {
this.hostsWhitelist = hostsWhitelist;
}

@Override
public String toString() {
return "MetricsConfiguration{"
+ "enabled="
+ enabled
+ ", port="
+ port
+ ", host='"
+ host
+ '\''
+ ", categories="
+ metricCategories.toString()
+ ", pushEnabled="
+ pushEnabled
+ ", pushPort="
+ pushPort
+ ", pushHost='"
+ pushHost
+ '\''
+ ", pushInterval="
+ pushInterval
+ ", prometheusJob='"
+ prometheusJob
+ '\''
+ ", hostsWhitelist="
+ hostsWhitelist
+ '}';
return MoreObjects.toStringHelper(this)
.add("enabled", enabled)
.add("port", port)
.add("host", host)
.add("metricCategories", metricCategories)
.add("pushEnabled", pushEnabled)
.add("pushPort", pushPort)
.add("pushHost", pushHost)
.add("pushInterval", pushInterval)
.add("prometheusJob", prometheusJob)
.add("hostsWhitelist", hostsWhitelist)
.toString();
}

@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
final MetricsConfiguration that = (MetricsConfiguration) o;
return enabled == that.enabled
&& port == that.port
&& Objects.equals(metricCategories, that.metricCategories)
&& pushEnabled == that.pushEnabled
&& pushPort == that.pushPort
&& pushInterval == that.pushInterval
&& Objects.equals(host, that.host)
&& Objects.equals(metricCategories, that.metricCategories)
&& Objects.equals(pushHost, that.pushHost)
&& Objects.equals(prometheusJob, that.prometheusJob)
&& Objects.equals(hostsWhitelist, that.hostsWhitelist);
Expand All @@ -198,4 +161,83 @@ public int hashCode() {
prometheusJob,
hostsWhitelist);
}

public static class Builder {
private boolean enabled = false;
private int port = DEFAULT_METRICS_PORT;
private String host = DEFAULT_METRICS_HOST;
private Set<MetricCategory> metricCategories = DEFAULT_METRIC_CATEGORIES;
private boolean pushEnabled = false;
private int pushPort = DEFAULT_METRICS_PUSH_PORT;
private String pushHost = DEFAULT_METRICS_PUSH_HOST;
private int pushInterval = 15;
private String prometheusJob = "pantheon-client";
private List<String> hostsWhitelist = Arrays.asList("localhost", "127.0.0.1");

private Builder() {}

public Builder enabled(final boolean enabled) {
this.enabled = enabled;
return this;
}

public Builder port(final int port) {
this.port = port;
return this;
}

public Builder host(final String host) {
this.host = host;
return this;
}

public Builder metricCategories(final Set<MetricCategory> metricCategories) {
this.metricCategories = metricCategories;
return this;
}

public Builder pushEnabled(final boolean pushEnabled) {
this.pushEnabled = pushEnabled;
return this;
}

public Builder pushPort(final int pushPort) {
this.pushPort = pushPort;
return this;
}

public Builder pushHost(final String pushHost) {
this.pushHost = pushHost;
return this;
}

public Builder pushInterval(final int pushInterval) {
this.pushInterval = pushInterval;
return this;
}

public Builder prometheusJob(final String prometheusJob) {
this.prometheusJob = prometheusJob;
return this;
}

public Builder hostsWhitelist(final List<String> hostsWhitelist) {
this.hostsWhitelist = hostsWhitelist;
return this;
}

public MetricsConfiguration build() {
return new MetricsConfiguration(
enabled,
port,
host,
metricCategories,
pushEnabled,
pushPort,
pushHost,
pushInterval,
prometheusJob,
hostsWhitelist);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
*/
package tech.pegasys.pantheon.metrics.prometheus;

import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.assertThat;

import java.net.InetSocketAddress;
import java.util.Collections;
import java.util.Properties;

import io.vertx.core.Vertx;
Expand Down Expand Up @@ -54,17 +54,16 @@ private static MetricsHttpService createMetricsHttpService(final MetricsConfigur

private static MetricsHttpService createMetricsHttpService() {
final MetricsConfiguration metricsConfiguration = createMetricsConfig();
metricsConfiguration.setEnabled(true);
return new MetricsHttpService(
vertx, metricsConfiguration, PrometheusMetricsSystem.init(metricsConfiguration));
}

private static MetricsConfiguration createMetricsConfig() {
final MetricsConfiguration config = MetricsConfiguration.createDefault();
config.setEnabled(true);
config.setPort(0);
config.setHostsWhitelist(Collections.singletonList("*"));
return config;
return createMetricsConfigBuilder().build();
}

private static MetricsConfiguration.Builder createMetricsConfigBuilder() {
return MetricsConfiguration.builder().enabled(true).port(0).hostsWhitelist(singletonList("*"));
}

/** Tears down the HTTP server. */
Expand Down Expand Up @@ -114,8 +113,7 @@ public void getSocketAddressWhenStoppedIsEmpty() {

@Test
public void getSocketAddressWhenBindingToAllInterfaces() {
final MetricsConfiguration config = createMetricsConfig();
config.setHost("0.0.0.0");
final MetricsConfiguration config = createMetricsConfigBuilder().host("0.0.0.0").build();
final MetricsHttpService service = createMetricsHttpService(config);
service.start().join();

Expand Down
Loading