Skip to content

Commit be0a7d5

Browse files
committed
initial implementation for support ipv6 addresses in dd_agent_host
1 parent 6181783 commit be0a7d5

File tree

2 files changed

+51
-30
lines changed

2 files changed

+51
-30
lines changed

communication/src/test/groovy/datadog/communication/ddagent/SharedCommunicationsObjectsSpecification.groovy

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,37 @@
11
package datadog.communication.ddagent
22

3+
import com.squareup.moshi.JsonAdapter
4+
import com.squareup.moshi.Moshi
5+
import com.squareup.moshi.Types
36
import datadog.communication.monitor.Monitoring
47
import datadog.trace.api.Config
8+
import datadog.trace.api.IdGenerationStrategy
59
import datadog.trace.test.util.DDSpecification
610
import okhttp3.HttpUrl
711
import okhttp3.OkHttpClient
12+
import okhttp3.Request
13+
import spock.lang.AutoCleanup
14+
import spock.lang.Shared
15+
16+
import java.lang.reflect.Type
17+
18+
import static datadog.trace.api.ConfigDefaults.DEFAULT_TRACE_AGENT_PORT
19+
import static datadog.trace.api.config.TracerConfig.AGENT_HOST
820

921
class SharedCommunicationsObjectsSpecification extends DDSpecification {
1022
SharedCommunicationObjects sco = new SharedCommunicationObjects()
1123

1224
void 'nothing populated'() {
1325
given:
14-
Config config = Mock()
26+
injectSysConfig(AGENT_HOST, "2600:1f18:19c0:bd07:d55b::17")
27+
Config config = Config.get()
28+
// Config config = Mock()
1529

1630
when:
1731
sco.createRemaining(config)
1832

1933
then:
20-
1 * config.agentUrl >> 'http://example.com/'
34+
1 * config.agentUrl >> "http://[2600:1f18:19c0:bd07:d55b::17]:8126"
2135
1 * config.agentNamedPipe >> null
2236
1 * config.agentTimeout >> 1
2337
1 * config.agentUnixDomainSocket >> null

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,8 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins
681681

682682
if (agentHostFromEnvironment == null) {
683683
agentHost = DEFAULT_AGENT_HOST;
684+
} else if (agentHostFromEnvironment.charAt(0) == '[') {
685+
agentHost = agentHostFromEnvironment.substring(1, agentHostFromEnvironment.length()-2);
684686
} else {
685687
agentHost = agentHostFromEnvironment;
686688
}
@@ -691,12 +693,17 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins
691693
agentPort = agentPortFromEnvironment;
692694
}
693695

694-
if (rebuildAgentUrl) {
695-
agentUrl = "http://" + agentHost + ":" + agentPort;
696+
if (rebuildAgentUrl) { //check if agenthost contains ':'
697+
if (agentHost.indexOf(':') != -1) { //Checking to see whether host address is IPv6 vs IPv4
698+
agentUrl = "http://[" + agentHost + "]:" + agentPort;
699+
} else {
700+
agentUrl = "http://" + agentHost + ":" + agentPort;
701+
}
696702
} else {
697703
agentUrl = agentUrlFromEnvironment;
698704
}
699705

706+
700707
if (unixSocketFromEnvironment == null) {
701708
unixSocketFromEnvironment = configProvider.getString(AGENT_UNIX_DOMAIN_SOCKET);
702709
String unixPrefix = "unix://";
@@ -1203,7 +1210,7 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
12031210
telemetryMetricsInterval = telemetryInterval;
12041211

12051212
telemetryMetricsEnabled =
1206-
configProvider.getBoolean(GeneralConfig.TELEMETRY_METRICS_ENABLED, true);
1213+
configProvider.getBoolean(TELEMETRY_METRICS_ENABLED, true);
12071214

12081215
isTelemetryLogCollectionEnabled =
12091216
instrumenterConfig.isTelemetryEnabled()
@@ -1686,16 +1693,16 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
16861693

16871694
boolean longRunningEnabled =
16881695
configProvider.getBoolean(
1689-
TracerConfig.TRACE_LONG_RUNNING_ENABLED,
1690-
ConfigDefaults.DEFAULT_TRACE_LONG_RUNNING_ENABLED);
1696+
TRACE_LONG_RUNNING_ENABLED,
1697+
DEFAULT_TRACE_LONG_RUNNING_ENABLED);
16911698
long longRunningTraceInitialFlushInterval =
16921699
configProvider.getLong(
1693-
TracerConfig.TRACE_LONG_RUNNING_INITIAL_FLUSH_INTERVAL,
1700+
TRACE_LONG_RUNNING_INITIAL_FLUSH_INTERVAL,
16941701
DEFAULT_TRACE_LONG_RUNNING_INITIAL_FLUSH_INTERVAL);
16951702
long longRunningTraceFlushInterval =
16961703
configProvider.getLong(
1697-
TracerConfig.TRACE_LONG_RUNNING_FLUSH_INTERVAL,
1698-
ConfigDefaults.DEFAULT_TRACE_LONG_RUNNING_FLUSH_INTERVAL);
1704+
TRACE_LONG_RUNNING_FLUSH_INTERVAL,
1705+
DEFAULT_TRACE_LONG_RUNNING_FLUSH_INTERVAL);
16991706

17001707
if (longRunningEnabled
17011708
&& (longRunningTraceInitialFlushInterval < 10
@@ -1722,30 +1729,30 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
17221729

17231730
this.sparkTaskHistogramEnabled =
17241731
configProvider.getBoolean(
1725-
SPARK_TASK_HISTOGRAM_ENABLED, ConfigDefaults.DEFAULT_SPARK_TASK_HISTOGRAM_ENABLED);
1732+
SPARK_TASK_HISTOGRAM_ENABLED, DEFAULT_SPARK_TASK_HISTOGRAM_ENABLED);
17261733

17271734
this.sparkAppNameAsService =
17281735
configProvider.getBoolean(
1729-
SPARK_APP_NAME_AS_SERVICE, ConfigDefaults.DEFAULT_SPARK_APP_NAME_AS_SERVICE);
1736+
SPARK_APP_NAME_AS_SERVICE, DEFAULT_SPARK_APP_NAME_AS_SERVICE);
17301737

17311738
this.jaxRsExceptionAsErrorsEnabled =
17321739
configProvider.getBoolean(
17331740
JAX_RS_EXCEPTION_AS_ERROR_ENABLED,
1734-
ConfigDefaults.DEFAULT_JAX_RS_EXCEPTION_AS_ERROR_ENABLED);
1741+
DEFAULT_JAX_RS_EXCEPTION_AS_ERROR_ENABLED);
17351742

17361743
axisPromoteResourceName = configProvider.getBoolean(AXIS_PROMOTE_RESOURCE_NAME, false);
17371744

17381745
this.traceFlushIntervalSeconds =
17391746
configProvider.getFloat(
1740-
TracerConfig.TRACE_FLUSH_INTERVAL, ConfigDefaults.DEFAULT_TRACE_FLUSH_INTERVAL);
1747+
TRACE_FLUSH_INTERVAL, DEFAULT_TRACE_FLUSH_INTERVAL);
17411748
if (profilingAgentless && apiKey == null) {
17421749
log.warn(
17431750
"Agentless profiling activated but no api key provided. Profile uploading will likely fail");
17441751
}
17451752

17461753
this.tracePostProcessingTimeout =
17471754
configProvider.getLong(
1748-
TRACE_POST_PROCESSING_TIMEOUT, ConfigDefaults.DEFAULT_TRACE_POST_PROCESSING_TIMEOUT);
1755+
TRACE_POST_PROCESSING_TIMEOUT, DEFAULT_TRACE_POST_PROCESSING_TIMEOUT);
17491756

17501757
if (isCiVisibilityEnabled()
17511758
&& ciVisibilityAgentlessEnabled
@@ -1757,36 +1764,36 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
17571764

17581765
this.telemetryDebugRequestsEnabled =
17591766
configProvider.getBoolean(
1760-
GeneralConfig.TELEMETRY_DEBUG_REQUESTS_ENABLED,
1761-
ConfigDefaults.DEFAULT_TELEMETRY_DEBUG_REQUESTS_ENABLED);
1767+
TELEMETRY_DEBUG_REQUESTS_ENABLED,
1768+
DEFAULT_TELEMETRY_DEBUG_REQUESTS_ENABLED);
17621769

17631770
this.agentlessLogSubmissionEnabled =
1764-
configProvider.getBoolean(GeneralConfig.AGENTLESS_LOG_SUBMISSION_ENABLED, false);
1771+
configProvider.getBoolean(AGENTLESS_LOG_SUBMISSION_ENABLED, false);
17651772
this.agentlessLogSubmissionQueueSize =
1766-
configProvider.getInteger(GeneralConfig.AGENTLESS_LOG_SUBMISSION_QUEUE_SIZE, 1024);
1773+
configProvider.getInteger(AGENTLESS_LOG_SUBMISSION_QUEUE_SIZE, 1024);
17671774
this.agentlessLogSubmissionLevel =
1768-
configProvider.getString(GeneralConfig.AGENTLESS_LOG_SUBMISSION_LEVEL, "INFO");
1775+
configProvider.getString(AGENTLESS_LOG_SUBMISSION_LEVEL, "INFO");
17691776
this.agentlessLogSubmissionUrl =
1770-
configProvider.getString(GeneralConfig.AGENTLESS_LOG_SUBMISSION_URL);
1777+
configProvider.getString(AGENTLESS_LOG_SUBMISSION_URL);
17711778
this.agentlessLogSubmissionProduct = isCiVisibilityEnabled() ? "citest" : "apm";
17721779

17731780
this.cloudPayloadTaggingServices =
17741781
configProvider.getSet(
1775-
TracerConfig.TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES,
1776-
ConfigDefaults.DEFAULT_TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES);
1782+
TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES,
1783+
DEFAULT_TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES);
17771784
this.cloudRequestPayloadTagging =
1778-
configProvider.getList(TracerConfig.TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING, null);
1785+
configProvider.getList(TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING, null);
17791786
this.cloudResponsePayloadTagging =
1780-
configProvider.getList(TracerConfig.TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING, null);
1787+
configProvider.getList(TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING, null);
17811788
this.cloudPayloadTaggingMaxDepth =
1782-
configProvider.getInteger(TracerConfig.TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH, 10);
1789+
configProvider.getInteger(TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH, 10);
17831790
this.cloudPayloadTaggingMaxTags =
1784-
configProvider.getInteger(TracerConfig.TRACE_CLOUD_PAYLOAD_TAGGING_MAX_TAGS, 758);
1791+
configProvider.getInteger(TRACE_CLOUD_PAYLOAD_TAGGING_MAX_TAGS, 758);
17851792

17861793
timelineEventsEnabled =
17871794
configProvider.getBoolean(
1788-
ProfilingConfig.PROFILING_TIMELINE_EVENTS_ENABLED,
1789-
ProfilingConfig.PROFILING_TIMELINE_EVENTS_ENABLED_DEFAULT);
1795+
PROFILING_TIMELINE_EVENTS_ENABLED,
1796+
PROFILING_TIMELINE_EVENTS_ENABLED_DEFAULT);
17901797

17911798
if (appSecScaEnabled != null
17921799
&& appSecScaEnabled
@@ -3717,7 +3724,7 @@ public boolean isTraceAnalyticsIntegrationEnabled(
37173724
}
37183725

37193726
public boolean isSamplingMechanismValidationDisabled() {
3720-
return configProvider.getBoolean(TracerConfig.SAMPLING_MECHANISM_VALIDATION_DISABLED, false);
3727+
return configProvider.getBoolean(SAMPLING_MECHANISM_VALIDATION_DISABLED, false);
37213728
}
37223729

37233730
public <T extends Enum<T>> T getEnumValue(

0 commit comments

Comments
 (0)