From b1ce784d5bbdb0c3ab551cfc5df6a5ba6cae9383 Mon Sep 17 00:00:00 2001 From: Yang Song Date: Wed, 10 Oct 2018 17:28:37 -0700 Subject: Exporter/OcAgent: Add options on retry interval and config. (#1487) * Exporter/OcAgent: Add options on retry interval and config. * Use options when creating Handler. * Comment out unused fileds. --- .../trace/ocagent/OcAgentTraceExporter.java | 4 ++- .../ocagent/OcAgentTraceExporterConfiguration.java | 40 +++++++++++++++++++++- .../trace/ocagent/OcAgentTraceExporterHandler.java | 32 ++++++++++------- .../OcAgentTraceExporterConfigurationTest.java | 8 +++++ 4 files changed, 70 insertions(+), 14 deletions(-) diff --git a/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporter.java b/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporter.java index c704314a..5c468ded 100644 --- a/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporter.java +++ b/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporter.java @@ -80,7 +80,9 @@ public final class OcAgentTraceExporter { new OcAgentTraceExporterHandler( configuration.getEndPoint(), configuration.getServiceName(), - configuration.getUseInsecure()); + configuration.getUseInsecure(), + configuration.getRetryInterval(), + configuration.getEnableConfig()); registerInternal(newHandler); } } diff --git a/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterConfiguration.java b/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterConfiguration.java index 0800eff6..c7bf1e95 100644 --- a/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterConfiguration.java +++ b/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterConfiguration.java @@ -17,6 +17,7 @@ package io.opencensus.exporter.trace.ocagent; import com.google.auto.value.AutoValue; +import io.opencensus.common.Duration; import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; @@ -58,6 +59,23 @@ public abstract class OcAgentTraceExporterConfiguration { @Nullable public abstract String getServiceName(); + /** + * Returns the retry time interval when trying to connect to Agent. + * + * @return the retry time interval. + * @since 0.17 + */ + @Nullable + public abstract Duration getRetryInterval(); + + /** + * Returns whether the {@link OcAgentTraceExporter} should handle the config streams. + * + * @return whether the {@code OcAgentTraceExporter} should handle the config streams. + * @since 0.17 + */ + public abstract boolean getEnableConfig(); + /** * Returns a new {@link Builder}. * @@ -65,7 +83,7 @@ public abstract class OcAgentTraceExporterConfiguration { * @since 0.17 */ public static Builder builder() { - return new AutoValue_OcAgentTraceExporterConfiguration.Builder(); + return new AutoValue_OcAgentTraceExporterConfiguration.Builder().setEnableConfig(true); } /** @@ -106,6 +124,26 @@ public abstract class OcAgentTraceExporterConfiguration { */ public abstract Builder setServiceName(String serviceName); + /** + * Sets the retry time interval when trying to connect to Agent. + * + * @param retryInterval the retry time interval. + * @return this. + * @since 0.17 + */ + public abstract Builder setRetryInterval(Duration retryInterval); + + /** + * Sets whether {@link OcAgentTraceExporter} should handle the config streams. + * + * @param enableConfig whether {@code OcAgentTraceExporter} should handle the config streams. + * @return this. + * @since 0.17 + */ + public abstract Builder setEnableConfig(boolean enableConfig); + + // TODO(songya): add an option that controls whether to always keep the RPC connection alive. + /** * Builds a {@link OcAgentTraceExporterConfiguration}. * diff --git a/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterHandler.java b/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterHandler.java index cb4b06aa..5edc06df 100644 --- a/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterHandler.java +++ b/exporters/trace/ocagent/src/main/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterHandler.java @@ -16,6 +16,7 @@ package io.opencensus.exporter.trace.ocagent; +import io.opencensus.common.Duration; import io.opencensus.trace.export.SpanData; import io.opencensus.trace.export.SpanExporter.Handler; import java.util.Collection; @@ -26,29 +27,36 @@ final class OcAgentTraceExporterHandler extends Handler { private static final String DEFAULT_END_POINT = "localhost:55678"; private static final String DEFAULT_SERVICE_NAME = "OpenCensus"; - - // private final String endPoint; - // private final Node node; - // private final boolean useInsecure; + private static final Duration DEFAULT_RETRY_INTERVAL = Duration.create(300, 0); // 5 minutes OcAgentTraceExporterHandler() { - this(null, null, null); + this(null, null, null, null, /* enableConfig= */ true); } OcAgentTraceExporterHandler( - @Nullable String endPoint, @Nullable String serviceName, @Nullable Boolean useInsecure) { - // this.endPoint = endPoint == null ? DEFAULT_END_POINT : endPoint; + @Nullable String endPoint, + @Nullable String serviceName, + @Nullable Boolean useInsecure, + @Nullable Duration retryInterval, + boolean enableConfig) { + // if (endPoint == null) { + // endPoint = DEFAULT_END_POINT; + // } // if (serviceName == null) { // serviceName = DEFAULT_SERVICE_NAME; // } - // this.node = OcAgentNodeUtils.getNodeInfo(serviceName); - // this.useInsecure = useInsecure == null ? false : useInsecure; + // if (useInsecure == null) { + // useInsecure = false; + // } + // if (retryInterval == null) { + // retryInterval = DEFAULT_RETRY_INTERVAL; + // } + // OcAgentTraceServiceClients.startAttemptsToConnectToAgent( + // endPoint, useInsecure, serviceName, retryInterval.toMillis(), enableConfig); } @Override public void export(Collection spanDataList) { - // TODO(songya): implement this. - // for (SpanData spanData : spanDataList) { - // } + // OcAgentTraceServiceClients.onExport(spanDataList); } } diff --git a/exporters/trace/ocagent/src/test/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterConfigurationTest.java b/exporters/trace/ocagent/src/test/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterConfigurationTest.java index 4349dfd7..81bc5c60 100644 --- a/exporters/trace/ocagent/src/test/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterConfigurationTest.java +++ b/exporters/trace/ocagent/src/test/java/io/opencensus/exporter/trace/ocagent/OcAgentTraceExporterConfigurationTest.java @@ -18,6 +18,7 @@ package io.opencensus.exporter.trace.ocagent; import static com.google.common.truth.Truth.assertThat; +import io.opencensus.common.Duration; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -33,18 +34,25 @@ public class OcAgentTraceExporterConfigurationTest { assertThat(configuration.getEndPoint()).isNull(); assertThat(configuration.getServiceName()).isNull(); assertThat(configuration.getUseInsecure()).isNull(); + assertThat(configuration.getRetryInterval()).isNull(); + assertThat(configuration.getEnableConfig()).isTrue(); } @Test public void setAndGet() { + Duration oneMinute = Duration.create(60, 0); OcAgentTraceExporterConfiguration configuration = OcAgentTraceExporterConfiguration.builder() .setEndPoint("192.168.0.1:50051") .setServiceName("service") .setUseInsecure(true) + .setRetryInterval(oneMinute) + .setEnableConfig(false) .build(); assertThat(configuration.getEndPoint()).isEqualTo("192.168.0.1:50051"); assertThat(configuration.getServiceName()).isEqualTo("service"); assertThat(configuration.getUseInsecure()).isTrue(); + assertThat(configuration.getRetryInterval()).isEqualTo(oneMinute); + assertThat(configuration.getEnableConfig()).isFalse(); } } -- cgit v1.2.3