diff --git a/exporter/otlphttpexporter/config_test.go b/exporter/otlphttpexporter/config_test.go index a6a7e96ca8e..e10f198960d 100644 --- a/exporter/otlphttpexporter/config_test.go +++ b/exporter/otlphttpexporter/config_test.go @@ -4,6 +4,7 @@ package otlphttpexporter import ( + "net/http" "path/filepath" "testing" "time" @@ -31,6 +32,11 @@ func TestUnmarshalDefaultConfig(t *testing.T) { } func TestUnmarshalConfig(t *testing.T) { + defaultMaxIdleConns := http.DefaultTransport.(*http.Transport).MaxIdleConns + defaultMaxIdleConnsPerHost := http.DefaultTransport.(*http.Transport).MaxIdleConnsPerHost + defaultMaxConnsPerHost := http.DefaultTransport.(*http.Transport).MaxConnsPerHost + defaultIdleConnTimeout := http.DefaultTransport.(*http.Transport).IdleConnTimeout + cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml")) require.NoError(t, err) factory := NewFactory() @@ -67,10 +73,14 @@ func TestUnmarshalConfig(t *testing.T) { }, Insecure: true, }, - ReadBufferSize: 123, - WriteBufferSize: 345, - Timeout: time.Second * 10, - Compression: "gzip", + ReadBufferSize: 123, + WriteBufferSize: 345, + Timeout: time.Second * 10, + Compression: "gzip", + MaxIdleConns: &defaultMaxIdleConns, + MaxIdleConnsPerHost: &defaultMaxIdleConnsPerHost, + MaxConnsPerHost: &defaultMaxConnsPerHost, + IdleConnTimeout: &defaultIdleConnTimeout, }, }, cfg) } diff --git a/exporter/otlphttpexporter/factory.go b/exporter/otlphttpexporter/factory.go index 1417f354a70..bca64e5f548 100644 --- a/exporter/otlphttpexporter/factory.go +++ b/exporter/otlphttpexporter/factory.go @@ -38,10 +38,6 @@ func createDefaultConfig() component.Config { clientConfig.Compression = configcompression.TypeGzip // We almost read 0 bytes, so no need to tune ReadBufferSize. clientConfig.WriteBufferSize = 512 * 1024 - clientConfig.MaxIdleConns = nil - clientConfig.MaxIdleConnsPerHost = nil - clientConfig.MaxConnsPerHost = nil - clientConfig.IdleConnTimeout = nil return &Config{ RetryConfig: configretry.NewDefaultBackOffConfig(), diff --git a/exporter/otlphttpexporter/factory_test.go b/exporter/otlphttpexporter/factory_test.go index 5170e8b4500..4e83da7e3a9 100644 --- a/exporter/otlphttpexporter/factory_test.go +++ b/exporter/otlphttpexporter/factory_test.go @@ -50,7 +50,21 @@ func TestCreateMetricsExporter(t *testing.T) { require.NotNil(t, oexp) } +func clientConfig(endpoint string, headers map[string]configopaque.String, tlsSetting configtls.ClientConfig, compression configcompression.Type) confighttp.ClientConfig { + clientConfig := confighttp.NewDefaultClientConfig() + clientConfig.TLSSetting = tlsSetting + clientConfig.Compression = compression + if endpoint != "" { + clientConfig.Endpoint = endpoint + } + if headers != nil { + clientConfig.Headers = headers + } + return clientConfig +} + func TestCreateTracesExporter(t *testing.T) { + var configCompression configcompression.Type endpoint := "http://" + testutil.GetAvailableLocalAddress(t) tests := []struct { @@ -62,59 +76,46 @@ func TestCreateTracesExporter(t *testing.T) { { name: "NoEndpoint", config: &Config{ - ClientConfig: confighttp.ClientConfig{ - Endpoint: "", - }, + ClientConfig: clientConfig("", nil, configtls.ClientConfig{}, configCompression), }, mustFailOnCreate: true, }, { name: "UseSecure", config: &Config{ - ClientConfig: confighttp.ClientConfig{ - Endpoint: endpoint, - TLSSetting: configtls.ClientConfig{ - Insecure: false, - }, - }, + ClientConfig: clientConfig(endpoint, nil, configtls.ClientConfig{ + Insecure: false, + }, configCompression), }, }, { name: "Headers", config: &Config{ - ClientConfig: confighttp.ClientConfig{ - Endpoint: endpoint, - Headers: map[string]configopaque.String{ - "hdr1": "val1", - "hdr2": "val2", - }, - }, + ClientConfig: clientConfig(endpoint, map[string]configopaque.String{ + "hdr1": "val1", + "hdr2": "val2", + }, configtls.ClientConfig{}, configCompression), }, }, { name: "CaCert", config: &Config{ - ClientConfig: confighttp.ClientConfig{ - Endpoint: endpoint, - TLSSetting: configtls.ClientConfig{ - Config: configtls.Config{ - CAFile: filepath.Join("testdata", "test_cert.pem"), - }, + ClientConfig: clientConfig(endpoint, nil, configtls.ClientConfig{ + Config: configtls.Config{ + CAFile: filepath.Join("testdata", "test_cert.pem"), }, - }, + }, configCompression), }, }, { name: "CertPemFileError", config: &Config{ - ClientConfig: confighttp.ClientConfig{ - Endpoint: endpoint, - TLSSetting: configtls.ClientConfig{ - Config: configtls.Config{ - CAFile: "nosuchfile", - }, + ClientConfig: clientConfig(endpoint, nil, configtls.ClientConfig{ + Config: configtls.Config{ + CAFile: "nosuchfile", }, }, + configCompression), }, mustFailOnCreate: false, mustFailOnStart: true, @@ -122,51 +123,39 @@ func TestCreateTracesExporter(t *testing.T) { { name: "NoneCompression", config: &Config{ - ClientConfig: confighttp.ClientConfig{ - Endpoint: endpoint, - Compression: "none", - }, + ClientConfig: clientConfig(endpoint, nil, configtls.ClientConfig{}, "none"), }, }, { name: "GzipCompression", config: &Config{ - ClientConfig: confighttp.ClientConfig{ - Endpoint: endpoint, - Compression: configcompression.TypeGzip, - }, + ClientConfig: clientConfig(endpoint, nil, configtls.ClientConfig{}, configcompression.TypeGzip), }, }, { name: "SnappyCompression", config: &Config{ - ClientConfig: confighttp.ClientConfig{ - Endpoint: endpoint, - Compression: configcompression.TypeSnappy, - }, + ClientConfig: clientConfig(endpoint, nil, configtls.ClientConfig{}, configcompression.TypeSnappy), }, }, { name: "ZstdCompression", config: &Config{ - ClientConfig: confighttp.ClientConfig{ - Endpoint: endpoint, - Compression: configcompression.TypeZstd, - }, + ClientConfig: clientConfig(endpoint, nil, configtls.ClientConfig{}, configcompression.TypeZstd), }, }, { name: "ProtoEncoding", config: &Config{ Encoding: EncodingProto, - ClientConfig: confighttp.ClientConfig{Endpoint: endpoint}, + ClientConfig: clientConfig(endpoint, nil, configtls.ClientConfig{}, configCompression), }, }, { name: "JSONEncoding", config: &Config{ Encoding: EncodingJSON, - ClientConfig: confighttp.ClientConfig{Endpoint: endpoint}, + ClientConfig: clientConfig(endpoint, nil, configtls.ClientConfig{}, configCompression), }, }, }