Skip to content

Commit

Permalink
Merge pull request #39733 from brunobat/fix-proxy-flag
Browse files Browse the repository at this point in the history
Fix for proxy flag on OTel
  • Loading branch information
gsmet authored Mar 29, 2024
2 parents 5b05e4c + ad05fa2 commit 451e7a8
Show file tree
Hide file tree
Showing 4 changed files with 159 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,13 @@ interface TrustCert {
}

interface ProxyConfig {

/**
* If proxy connection must be used.
*/
@WithDefault("false")
boolean enabled();

/**
* Set proxy username.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ private static boolean excludeDefaultEndpoint(String endpoint) {
return !DEFAULT_GRPC_BASE_URI.equals(endpoint);
}

private static class HttpClientOptionsConsumer implements Consumer<HttpClientOptions> {
static class HttpClientOptionsConsumer implements Consumer<HttpClientOptions> {
private final OtlpExporterTracesConfig tracesConfig;
private final URI baseUri;
private final TlsConfig tlsConfig;
Expand All @@ -203,7 +203,9 @@ public HttpClientOptionsConsumer(OtlpExporterTracesConfig tracesConfig, URI base
@Override
public void accept(HttpClientOptions options) {
configureTLS(options);
configureProxyOptions(options);
if (tracesConfig.proxyOptions().enabled()) {
configureProxyOptions(options);
}
}

private void configureTLS(HttpClientOptions options) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
package io.quarkus.opentelemetry.runtime.exporter.otlp;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;

import java.net.URI;
import java.time.Duration;
import java.util.List;
import java.util.Optional;
import java.util.OptionalInt;

import org.junit.jupiter.api.Test;

import io.quarkus.opentelemetry.runtime.config.runtime.exporter.CompressionType;
import io.quarkus.opentelemetry.runtime.config.runtime.exporter.OtlpExporterTracesConfig;
import io.quarkus.runtime.TlsConfig;
import io.vertx.core.http.HttpClientOptions;

class HttpClientOptionsConsumerTest {

@Test
void testNoProxy() {
OTelExporterRecorder.HttpClientOptionsConsumer consumer = new OTelExporterRecorder.HttpClientOptionsConsumer(
createExporterConfig(false),
URI.create("http://localhost:4317"),
createTLSConfig());

HttpClientOptions httpClientOptions = new HttpClientOptions();
consumer.accept(httpClientOptions);
assertThat(httpClientOptions.getProxyOptions(), nullValue());
}

@Test
void testWithProxy() {
OTelExporterRecorder.HttpClientOptionsConsumer consumer = new OTelExporterRecorder.HttpClientOptionsConsumer(
createExporterConfig(true),
URI.create("http://localhost:4317"),
createTLSConfig());

HttpClientOptions httpClientOptions = new HttpClientOptions();
consumer.accept(httpClientOptions);
assertThat(httpClientOptions.getProxyOptions(), notNullValue());
assertThat(httpClientOptions.getProxyOptions().getHost(), is("proxy-address"));
assertThat(httpClientOptions.getProxyOptions().getPort(), is(9999));
assertThat(httpClientOptions.getProxyOptions().getUsername(), is("proxy-username"));
assertThat(httpClientOptions.getProxyOptions().getPassword(), is("proxy-password"));
}

private TlsConfig createTLSConfig() {
return new TlsConfig();
}

private OtlpExporterTracesConfig createExporterConfig(final boolean isEnabled) {
return new OtlpExporterTracesConfig() {
@Override
public Optional<String> endpoint() {
return Optional.of("http://localhost:4317");
}

@Override
public Optional<String> legacyEndpoint() {
return Optional.empty();
}

@Override
public Optional<List<String>> headers() {
return Optional.empty();
}

@Override
public Optional<CompressionType> compression() {
return Optional.empty();
}

@Override
public Duration timeout() {
return Duration.ofMillis(100);
}

@Override
public Optional<String> protocol() {
return Optional.empty();
}

@Override
public KeyCert keyCert() {
return new KeyCert() {
@Override
public Optional<List<String>> keys() {
return Optional.empty();
}

@Override
public Optional<List<String>> certs() {
return Optional.empty();
}
};
}

@Override
public TrustCert trustCert() {
return new TrustCert() {
@Override
public Optional<List<String>> certs() {
return Optional.empty();
}
};
}

@Override
public ProxyConfig proxyOptions() {
return new ProxyConfig() {
@Override
public boolean enabled() {
return isEnabled;
}

@Override
public Optional<String> username() {
return Optional.of("proxy-username");
}

@Override
public Optional<String> password() {
return Optional.of("proxy-password");
}

@Override
public OptionalInt port() {
return OptionalInt.of(9999);
}

@Override
public Optional<String> host() {
return Optional.of("proxy-address");
}
};
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,11 @@ public Optional<List<String>> certs() {
@Override
public ProxyConfig proxyOptions() {
return new ProxyConfig() {
@Override
public boolean enabled() {
return false;
}

@Override
public Optional<String> username() {
return Optional.empty();
Expand Down

0 comments on commit 451e7a8

Please sign in to comment.