Skip to content

Commit

Permalink
add/update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
SpencerTorres committed Nov 27, 2024
1 parent 963b388 commit c7f424d
Showing 1 changed file with 49 additions and 29 deletions.
78 changes: 49 additions & 29 deletions exporter/clickhouseexporter/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ func TestLoadConfig(t *testing.T) {
require.NoError(t, err)

defaultCfg := createDefaultConfig()
defaultCfg.(*Config).collectorVersionResolver = NewDefaultTestCollectorVersionResolver()
defaultCfg.(*Config).Endpoint = defaultEndpoint

storageID := component.MustNewIDWithName("file_storage", "clickhouse")
Expand All @@ -47,14 +48,15 @@ func TestLoadConfig(t *testing.T) {
{
id: component.NewIDWithName(metadata.Type, "full"),
expected: &Config{
Endpoint: defaultEndpoint,
Database: "otel",
Username: "foo",
Password: "bar",
TTL: 72 * time.Hour,
LogsTableName: "otel_logs",
TracesTableName: "otel_traces",
CreateSchema: true,
collectorVersionResolver: NewDefaultTestCollectorVersionResolver(),
Endpoint: defaultEndpoint,
Database: "otel",
Username: "foo",
Password: "bar",
TTL: 72 * time.Hour,
LogsTableName: "otel_logs",
TracesTableName: "otel_traces",
CreateSchema: true,
TimeoutSettings: exporterhelper.TimeoutConfig{
Timeout: 5 * time.Second,
},
Expand Down Expand Up @@ -89,6 +91,7 @@ func TestLoadConfig(t *testing.T) {
t.Run(tt.id.String(), func(t *testing.T) {
factory := NewFactory()
cfg := factory.CreateDefaultConfig()
cfg.(*Config).collectorVersionResolver = NewDefaultTestCollectorVersionResolver()

sub, err := cm.Sub(tt.id.String())
require.NoError(t, err)
Expand Down Expand Up @@ -282,7 +285,7 @@ func TestConfig_buildDSN(t *testing.T) {
wantChOptions: ChOptions{
Secure: false,
},
want: "clickhouse://127.0.0.1:9000/default?async_insert=true&compress=lz4",
want: "clickhouse://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "Support tcp scheme",
Expand All @@ -292,7 +295,7 @@ func TestConfig_buildDSN(t *testing.T) {
wantChOptions: ChOptions{
Secure: false,
},
want: "tcp://127.0.0.1:9000/default?async_insert=true&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "prefers database name from config over from DSN",
Expand All @@ -305,7 +308,7 @@ func TestConfig_buildDSN(t *testing.T) {
wantChOptions: ChOptions{
Secure: false,
},
want: "clickhouse://foo:[email protected]:9000/otel?async_insert=true&compress=lz4",
want: "clickhouse://foo:[email protected]:9000/otel?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "use database name from DSN if not set in config",
Expand All @@ -317,7 +320,7 @@ func TestConfig_buildDSN(t *testing.T) {
wantChOptions: ChOptions{
Secure: false,
},
want: "clickhouse://foo:[email protected]:9000/otel?async_insert=true&compress=lz4",
want: "clickhouse://foo:[email protected]:9000/otel?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "invalid config",
Expand All @@ -337,7 +340,7 @@ func TestConfig_buildDSN(t *testing.T) {
wantChOptions: ChOptions{
Secure: true,
},
want: "https://127.0.0.1:9000/default?async_insert=true&compress=lz4&secure=true",
want: "https://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4&secure=true",
},
{
name: "Preserve query parameters",
Expand All @@ -347,7 +350,7 @@ func TestConfig_buildDSN(t *testing.T) {
wantChOptions: ChOptions{
Secure: true,
},
want: "clickhouse://127.0.0.1:9000/default?async_insert=true&compress=lz4&foo=bar&secure=true",
want: "clickhouse://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4&foo=bar&secure=true",
},
{
name: "Parse clickhouse settings",
Expand All @@ -359,7 +362,7 @@ func TestConfig_buildDSN(t *testing.T) {
DialTimeout: 30 * time.Second,
Compress: clickhouse.CompressionBrotli,
},
want: "https://127.0.0.1:9000/default?async_insert=true&compress=br&dial_timeout=30s&secure=true",
want: "https://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=br&dial_timeout=30s&secure=true",
},
{
name: "Should respect connection parameters",
Expand All @@ -370,29 +373,29 @@ func TestConfig_buildDSN(t *testing.T) {
wantChOptions: ChOptions{
Secure: true,
},
want: "clickhouse://127.0.0.1:9000/default?async_insert=true&compress=lz4&foo=bar&secure=true",
want: "clickhouse://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4&foo=bar&secure=true",
},
{
name: "support replace database in DSN with config to override database",
fields: fields{
Endpoint: "tcp://127.0.0.1:9000/otel",
Database: "override",
},
want: "tcp://127.0.0.1:9000/override?async_insert=true&compress=lz4",
want: "tcp://127.0.0.1:9000/override?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "when config option is missing, preserve async_insert false in DSN",
fields: fields{
Endpoint: "tcp://127.0.0.1:9000?async_insert=false",
},
want: "tcp://127.0.0.1:9000/default?async_insert=false&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=false&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "when config option is missing, preserve async_insert true in DSN",
fields: fields{
Endpoint: "tcp://127.0.0.1:9000?async_insert=true",
},
want: "tcp://127.0.0.1:9000/default?async_insert=true&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "ignore config option when async_insert is present in connection params as false",
Expand All @@ -402,7 +405,7 @@ func TestConfig_buildDSN(t *testing.T) {
AsyncInsert: &configTrue,
},

want: "tcp://127.0.0.1:9000/default?async_insert=false&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=false&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "ignore config option when async_insert is present in connection params as true",
Expand All @@ -412,7 +415,7 @@ func TestConfig_buildDSN(t *testing.T) {
AsyncInsert: &configFalse,
},

want: "tcp://127.0.0.1:9000/default?async_insert=true&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "ignore config option when async_insert is present in DSN as false",
Expand All @@ -421,7 +424,7 @@ func TestConfig_buildDSN(t *testing.T) {
AsyncInsert: &configTrue,
},

want: "tcp://127.0.0.1:9000/default?async_insert=false&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=false&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "use async_insert true config option when it is not present in DSN",
Expand All @@ -430,7 +433,7 @@ func TestConfig_buildDSN(t *testing.T) {
AsyncInsert: &configTrue,
},

want: "tcp://127.0.0.1:9000/default?async_insert=true&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "use async_insert false config option when it is not present in DSN",
Expand All @@ -439,15 +442,15 @@ func TestConfig_buildDSN(t *testing.T) {
AsyncInsert: &configFalse,
},

want: "tcp://127.0.0.1:9000/default?async_insert=false&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=false&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "set async_insert to true when not present in config or DSN",
fields: fields{
Endpoint: "tcp://127.0.0.1:9000",
},

want: "tcp://127.0.0.1:9000/default?async_insert=true&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "connection_params takes priority over endpoint and async_insert option.",
Expand All @@ -457,7 +460,7 @@ func TestConfig_buildDSN(t *testing.T) {
AsyncInsert: &configFalse,
},

want: "tcp://127.0.0.1:9000/default?async_insert=true&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "use compress br config option when it is not present in DSN",
Expand All @@ -466,15 +469,15 @@ func TestConfig_buildDSN(t *testing.T) {
Compress: "br",
},

want: "tcp://127.0.0.1:9000/default?async_insert=true&compress=br",
want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=br",
},
{
name: "set compress to lz4 when not present in config or DSN",
fields: fields{
Endpoint: "tcp://127.0.0.1:9000",
},

want: "tcp://127.0.0.1:9000/default?async_insert=true&compress=lz4",
want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "connection_params takes priority over endpoint and compress option.",
Expand All @@ -483,12 +486,29 @@ func TestConfig_buildDSN(t *testing.T) {
ConnectionParams: map[string]string{"compress": "br"},
Compress: "lz4",
},
want: "tcp://127.0.0.1:9000/default?async_insert=true&compress=br",
want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=br",
},
{
name: "include default otel product info in DSN",
fields: fields{
Endpoint: "tcp://127.0.0.1:9000",
},

want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=otelcol%2Ftest&compress=lz4",
},
{
name: "correctly append default product info when value is included in DSN",
fields: fields{
Endpoint: "tcp://127.0.0.1:9000?client_info_product=customProductInfo%2Fv1.2.3",
},

want: "tcp://127.0.0.1:9000/default?async_insert=true&client_info_product=customProductInfo%2Fv1.2.3%2Cotelcol%2Ftest&compress=lz4",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
cfg := createDefaultConfig().(*Config)
cfg.collectorVersionResolver = NewDefaultTestCollectorVersionResolver()
mergeConfigWithFields(cfg, tt.fields)
dsn, err := cfg.buildDSN()

Expand Down

0 comments on commit c7f424d

Please sign in to comment.