diff --git a/receiver/prometheusreceiver/config.go b/receiver/prometheusreceiver/config.go index a7778812f5fd..6dbb03615db9 100644 --- a/receiver/prometheusreceiver/config.go +++ b/receiver/prometheusreceiver/config.go @@ -25,7 +25,7 @@ import ( "strings" "time" - config_util "github.com/prometheus/common/config" + commonconfig "github.com/prometheus/common/config" promconfig "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/discovery/file" "github.com/prometheus/prometheus/discovery/kubernetes" @@ -58,7 +58,7 @@ type Config struct { var _ config.Receiver = (*Config)(nil) var _ config.Unmarshallable = (*Config)(nil) -func checkFileExists(fn string) error { +func checkFile(fn string) error { // Nothing set, nothing to error on. if fn == "" { return nil @@ -67,11 +67,11 @@ func checkFileExists(fn string) error { return err } -func checkTLSConfig(tlsConfig config_util.TLSConfig) error { - if err := checkFileExists(tlsConfig.CertFile); err != nil { +func checkTLSConfig(tlsConfig commonconfig.TLSConfig) error { + if err := checkFile(tlsConfig.CertFile); err != nil { return fmt.Errorf("error checking client cert file %q - %v", tlsConfig.CertFile, err) } - if err := checkFileExists(tlsConfig.KeyFile); err != nil { + if err := checkFile(tlsConfig.KeyFile); err != nil { return fmt.Errorf("error checking client key file %q - %v", tlsConfig.KeyFile, err) } if len(tlsConfig.CertFile) > 0 && len(tlsConfig.KeyFile) == 0 { @@ -83,6 +83,8 @@ func checkTLSConfig(tlsConfig config_util.TLSConfig) error { return nil } +// Method to exercise the prometheus file discovery behaviour to ensure there are no errors +// - reference https://github.com/prometheus/prometheus/blob/c0c22ed04200a8d24d1d5719f605c85710f0d008/discovery/file/file.go#L372 func checkSDFile(filename string) error { fd, err := os.Open(filename) if err != nil { @@ -163,7 +165,7 @@ func (cfg *Config) Validate() error { } if sc.HTTPClientConfig.Authorization != nil { - if err := checkFileExists(sc.HTTPClientConfig.Authorization.CredentialsFile); err != nil { + if err := checkFile(sc.HTTPClientConfig.Authorization.CredentialsFile); err != nil { return fmt.Errorf("error checking authorization credentials file %q - %s", sc.HTTPClientConfig.Authorization.CredentialsFile, err) } } diff --git a/receiver/prometheusreceiver/config_test.go b/receiver/prometheusreceiver/config_test.go index 19bf9c0ab4c8..6ef48a1f47ad 100644 --- a/receiver/prometheusreceiver/config_test.go +++ b/receiver/prometheusreceiver/config_test.go @@ -180,7 +180,7 @@ func TestNonExistentAuthCredentialsFile(t *testing.T) { require.Equal(t, wantErrMsg, gotErrMsg) } -func TestTLSConfigCertFileExists(t *testing.T) { +func TestTLSConfigNonExistentCertFile(t *testing.T) { factories, err := componenttest.NopFactories() assert.NoError(t, err) @@ -198,7 +198,7 @@ func TestTLSConfigCertFileExists(t *testing.T) { require.Equal(t, wantErrMsg, gotErrMsg) } -func TestTLSConfigKeyFileExists(t *testing.T) { +func TestTLSConfigNonExistentKeyFile(t *testing.T) { factories, err := componenttest.NopFactories() assert.NoError(t, err) @@ -216,7 +216,7 @@ func TestTLSConfigKeyFileExists(t *testing.T) { require.Equal(t, wantErrMsg, gotErrMsg) } -func TestTLSConfigCertFileWithNoKeyFile(t *testing.T) { +func TestTLSConfigCertFileWithoutKeyFile(t *testing.T) { factories, err := componenttest.NopFactories() assert.NoError(t, err) @@ -234,7 +234,7 @@ func TestTLSConfigCertFileWithNoKeyFile(t *testing.T) { require.Equal(t, wantErrMsg, gotErrMsg) } -func TestTLSConfigKeyFileWithNoCertFile(t *testing.T) { +func TestTLSConfigKeyFileWithoutCertFile(t *testing.T) { factories, err := componenttest.NopFactories() assert.NoError(t, err) @@ -252,7 +252,7 @@ func TestTLSConfigKeyFileWithNoCertFile(t *testing.T) { require.Equal(t, wantErrMsg, gotErrMsg) } -func TestKubernetesSDConfig(t *testing.T) { +func TestKubernetesSDConfigWithoutKeyFile(t *testing.T) { factories, err := componenttest.NopFactories() assert.NoError(t, err) @@ -282,7 +282,7 @@ func TestFileSDConfigJsonNilTargetGroup(t *testing.T) { err = cfg.Validate() require.NotNil(t, err, "Expected a non-nil error") - wantErrMsg := `receiver "prometheus" has invalid configuration: checking SD file "./testdata/dummy-sd-config.json": nil target group item found (index 1)` + wantErrMsg := `receiver "prometheus" has invalid configuration: checking SD file "./testdata/sd-config-with-null-target-group.json": nil target group item found (index 1)` gotErrMsg := err.Error() require.Equal(t, wantErrMsg, gotErrMsg) @@ -300,7 +300,7 @@ func TestFileSDConfigYamlNilTargetGroup(t *testing.T) { err = cfg.Validate() require.NotNil(t, err, "Expected a non-nil error") - wantErrMsg := `receiver "prometheus" has invalid configuration: checking SD file "./testdata/dummy-sd-config.yaml": nil target group item found (index 1)` + wantErrMsg := `receiver "prometheus" has invalid configuration: checking SD file "./testdata/sd-config-with-null-target-group.yaml": nil target group item found (index 1)` gotErrMsg := err.Error() require.Equal(t, wantErrMsg, gotErrMsg) diff --git a/receiver/prometheusreceiver/testdata/invalid-config-prometheus-file-sd-config-json.yaml b/receiver/prometheusreceiver/testdata/invalid-config-prometheus-file-sd-config-json.yaml index ef7555d5c98d..81a084717f5b 100644 --- a/receiver/prometheusreceiver/testdata/invalid-config-prometheus-file-sd-config-json.yaml +++ b/receiver/prometheusreceiver/testdata/invalid-config-prometheus-file-sd-config-json.yaml @@ -5,7 +5,7 @@ receivers: - job_name: 'demo' scrape_interval: 5s file_sd_configs: - - files: ["./testdata/dummy-sd-config.json"] + - files: ["./testdata/sd-config-with-null-target-group.json"] processors: nop: diff --git a/receiver/prometheusreceiver/testdata/invalid-config-prometheus-file-sd-config-yaml.yaml b/receiver/prometheusreceiver/testdata/invalid-config-prometheus-file-sd-config-yaml.yaml index 5c2d8d6c7680..57e0db083876 100644 --- a/receiver/prometheusreceiver/testdata/invalid-config-prometheus-file-sd-config-yaml.yaml +++ b/receiver/prometheusreceiver/testdata/invalid-config-prometheus-file-sd-config-yaml.yaml @@ -5,7 +5,7 @@ receivers: - job_name: 'demo' scrape_interval: 5s file_sd_configs: - - files: ["./testdata/dummy-sd-config.yaml"] + - files: ["./testdata/sd-config-with-null-target-group.yaml"] processors: nop: diff --git a/receiver/prometheusreceiver/testdata/dummy-sd-config.json b/receiver/prometheusreceiver/testdata/sd-config-with-null-target-group.json similarity index 100% rename from receiver/prometheusreceiver/testdata/dummy-sd-config.json rename to receiver/prometheusreceiver/testdata/sd-config-with-null-target-group.json diff --git a/receiver/prometheusreceiver/testdata/dummy-sd-config.yaml b/receiver/prometheusreceiver/testdata/sd-config-with-null-target-group.yaml similarity index 100% rename from receiver/prometheusreceiver/testdata/dummy-sd-config.yaml rename to receiver/prometheusreceiver/testdata/sd-config-with-null-target-group.yaml