From 628c206245123b816608c094577aeed84f880271 Mon Sep 17 00:00:00 2001 From: Nicholas Shaddox Date: Fri, 29 Sep 2023 15:37:01 -0700 Subject: [PATCH 1/5] chore: added test --- .../gitproviderreceiver/config_test.go | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pkg/receiver/gitproviderreceiver/config_test.go b/pkg/receiver/gitproviderreceiver/config_test.go index b4a1a1e6..16b1eaa1 100644 --- a/pkg/receiver/gitproviderreceiver/config_test.go +++ b/pkg/receiver/gitproviderreceiver/config_test.go @@ -10,6 +10,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/otelcol/otelcoltest" "go.opentelemetry.io/collector/receiver/scraperhelper" @@ -53,6 +54,26 @@ func TestLoadConfig(t *testing.T) { assert.Equal(t, expectedConfig, r1) } +func TestLoadConfig_CompnentParcerNil(t *testing.T) { + factories, err := otelcoltest.NopFactories() + require.NoError(t, err) + + factory := NewFactory() + factories.Receivers[metadata.Type] = factory + + // p := confmap.New() + p := (*confmap.Conf)(nil) + var cfg = (*Config)(nil) + err = cfg.Unmarshal(p) + + // cfg, err := otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config-nilconfig.yaml"), factories) + + require.NoError(t, err) + require.NotNil(t, cfg) + + // assert.Equal(t, len(cfg.Receivers), 2) +} + func TestLoadInvalidConfig_NoScrapers(t *testing.T) { factories, err := otelcoltest.NopFactories() require.NoError(t, err) From 2a0eb5f61b67ffa6825e132ccd044e0be06a984f Mon Sep 17 00:00:00 2001 From: Nicholas Shaddox Date: Wed, 4 Oct 2023 11:22:58 -0700 Subject: [PATCH 2/5] everyhting is shit --- .../gitproviderreceiver/config_test.go | 114 +++++++++++++++--- .../testdata/config-nilconfig.yaml | 21 ++++ 2 files changed, 116 insertions(+), 19 deletions(-) create mode 100644 pkg/receiver/gitproviderreceiver/testdata/config-nilconfig.yaml diff --git a/pkg/receiver/gitproviderreceiver/config_test.go b/pkg/receiver/gitproviderreceiver/config_test.go index 16b1eaa1..446c069c 100644 --- a/pkg/receiver/gitproviderreceiver/config_test.go +++ b/pkg/receiver/gitproviderreceiver/config_test.go @@ -7,16 +7,14 @@ import ( "testing" "time" + "github.com/liatrio/liatrio-otel-collector/pkg/receiver/gitproviderreceiver/internal" + "github.com/liatrio/liatrio-otel-collector/pkg/receiver/gitproviderreceiver/internal/metadata" + "github.com/liatrio/liatrio-otel-collector/pkg/receiver/gitproviderreceiver/internal/scraper/githubscraper" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/otelcol/otelcoltest" "go.opentelemetry.io/collector/receiver/scraperhelper" - - "github.com/liatrio/liatrio-otel-collector/pkg/receiver/gitproviderreceiver/internal" - "github.com/liatrio/liatrio-otel-collector/pkg/receiver/gitproviderreceiver/internal/metadata" - "github.com/liatrio/liatrio-otel-collector/pkg/receiver/gitproviderreceiver/internal/scraper/githubscraper" ) func TestLoadConfig(t *testing.T) { @@ -52,27 +50,59 @@ func TestLoadConfig(t *testing.T) { } assert.Equal(t, expectedConfig, r1) + + // p := (*confmap.Conf)(nil) + // r2 := cfg.Unmarshal(p) + // expected := nil + // expectedConfig := &Config{ + // ScraperControllerSettings: scraperhelper.ScraperControllerSettings{ + // CollectionInterval: 30 * time.Second, + // InitialDelay: 1 * time.Second, + // }, + // Scrapers: map[string]internal.Config{ + // githubscraper.TypeStr: (&githubscraper.Factory{}).CreateDefaultConfig(), + // }, + // } + + // assert.Equal(t, expectedConfig, r1) } -func TestLoadConfig_CompnentParcerNil(t *testing.T) { - factories, err := otelcoltest.NopFactories() - require.NoError(t, err) +// func TestLoadConfig_CompnentParcerNil(t *testing.T) { +// factories, err := otelcoltest.NopFactories() +// require.NoError(t, err) - factory := NewFactory() - factories.Receivers[metadata.Type] = factory +// factory := NewFactory() +// factories.Receivers[metadata.Type] = factory - // p := confmap.New() - p := (*confmap.Conf)(nil) - var cfg = (*Config)(nil) - err = cfg.Unmarshal(p) +// // Is this mocking? +// p := (*confmap.Conf)(nil) +// cfg := (*Config)(nil) +// err = cfg.Unmarshal(p) - // cfg, err := otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config-nilconfig.yaml"), factories) +// require.NoError(t, err) - require.NoError(t, err) - require.NotNil(t, cfg) +// // assert.Equal(t, len(cfg.Receivers), 2) +// } - // assert.Equal(t, len(cfg.Receivers), 2) -} +// // Mock componentParser.Unmarshal() +// func TestLoadConfig_CompnentParcerError(t *testing.T) { +// factories, err := otelcoltest.NopFactories() +// require.NoError(t, err) + +// factory := NewFactory() +// factories.Receivers[metadata.Type] = factory + +// // cfg, err := otelcoltest.LoadConfig(filepath.Join("testdata", "config-nilconfig.yaml"), factories) +// componentParser := (*confmap.Conf) +// cfg := (*Config)(nil) + +// err = cfg.Unmarshal(componentParser) + +// // require.Error(t, err) +// // require.NotNil(t, cfg) + +// // assert.Equal(t, len(cfg.Receivers), 2) +// } func TestLoadInvalidConfig_NoScrapers(t *testing.T) { factories, err := otelcoltest.NopFactories() @@ -84,3 +114,49 @@ func TestLoadInvalidConfig_NoScrapers(t *testing.T) { require.Contains(t, err.Error(), "must specify at least one scraper") } + +// func TestConfig_Unmarshal(t *testing.T) { +// factories, err := otelcoltest.NopFactories() +// require.NoError(t, err) + +// factory := NewFactory() +// factories.Receivers[metadata.Type] = factory +// cfg, err := otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config.yaml"), factories) + +// type fields struct { +// ScraperControllerSettings scraperhelper.ScraperControllerSettings +// Scrapers map[string]internal.Config +// MetricsBuilderConfig metadata.MetricsBuilderConfig +// } + +// type args struct { +// componentParser *confmap.Conf +// } + +// tests := []struct { +// name string +// fields fields +// args args +// wantErr bool +// }{ +// { +// name: "Empty Component Parser", +// fields: fields{}, +// args: args{componentParser: nil}, +// wantErr: false, +// }, +// // { +// // name: "valid Compenent Parser", +// // fields: fields{}, +// // args: args{ componentParser: notnil }, +// // wantErr: false, +// // }, +// } +// for _, test := range tests { +// t.Run(test.name, func(t *testing.T) { +// if err := cfg.Unmarshal(test.args.componentParser); (err != nil) != test.wantErr { +// t.Errorf("Config.Unmarshal() error = %v, wantErr %v", err, test.wantErr) +// } +// }) +// } +// } diff --git a/pkg/receiver/gitproviderreceiver/testdata/config-nilconfig.yaml b/pkg/receiver/gitproviderreceiver/testdata/config-nilconfig.yaml new file mode 100644 index 00000000..fbb14853 --- /dev/null +++ b/pkg/receiver/gitproviderreceiver/testdata/config-nilconfig.yaml @@ -0,0 +1,21 @@ +--- +foobar: + morefoobar: + +receivers: + gitprovider: + nomeaning: + +processors: + nop: + +exporters: + nop: + +service: + pipelines: + metrics: + receivers: [gitprovider, gitprovider/customname] + processors: [nop] + exporters: [nop] + From d28d831535657c99602e9bc4610b5932913a594a Mon Sep 17 00:00:00 2001 From: Nicholas Shaddox Date: Wed, 4 Oct 2023 13:08:18 -0700 Subject: [PATCH 3/5] everyhting is shit --- .../gitproviderreceiver/config_test.go | 121 ++++++++---------- 1 file changed, 56 insertions(+), 65 deletions(-) diff --git a/pkg/receiver/gitproviderreceiver/config_test.go b/pkg/receiver/gitproviderreceiver/config_test.go index 446c069c..842e7225 100644 --- a/pkg/receiver/gitproviderreceiver/config_test.go +++ b/pkg/receiver/gitproviderreceiver/config_test.go @@ -13,6 +13,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/otelcol/otelcoltest" "go.opentelemetry.io/collector/receiver/scraperhelper" ) @@ -50,21 +51,6 @@ func TestLoadConfig(t *testing.T) { } assert.Equal(t, expectedConfig, r1) - - // p := (*confmap.Conf)(nil) - // r2 := cfg.Unmarshal(p) - // expected := nil - // expectedConfig := &Config{ - // ScraperControllerSettings: scraperhelper.ScraperControllerSettings{ - // CollectionInterval: 30 * time.Second, - // InitialDelay: 1 * time.Second, - // }, - // Scrapers: map[string]internal.Config{ - // githubscraper.TypeStr: (&githubscraper.Factory{}).CreateDefaultConfig(), - // }, - // } - - // assert.Equal(t, expectedConfig, r1) } // func TestLoadConfig_CompnentParcerNil(t *testing.T) { @@ -104,59 +90,64 @@ func TestLoadConfig(t *testing.T) { // // assert.Equal(t, len(cfg.Receivers), 2) // } -func TestLoadInvalidConfig_NoScrapers(t *testing.T) { - factories, err := otelcoltest.NopFactories() - require.NoError(t, err) - - factory := NewFactory() - factories.Receivers[metadata.Type] = factory - _, err = otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config-noscrapers.yaml"), factories) - - require.Contains(t, err.Error(), "must specify at least one scraper") -} - -// func TestConfig_Unmarshal(t *testing.T) { +// func TestLoadInvalidConfig_NoScrapers(t *testing.T) { // factories, err := otelcoltest.NopFactories() // require.NoError(t, err) // factory := NewFactory() // factories.Receivers[metadata.Type] = factory -// cfg, err := otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config.yaml"), factories) - -// type fields struct { -// ScraperControllerSettings scraperhelper.ScraperControllerSettings -// Scrapers map[string]internal.Config -// MetricsBuilderConfig metadata.MetricsBuilderConfig -// } - -// type args struct { -// componentParser *confmap.Conf -// } - -// tests := []struct { -// name string -// fields fields -// args args -// wantErr bool -// }{ -// { -// name: "Empty Component Parser", -// fields: fields{}, -// args: args{componentParser: nil}, -// wantErr: false, -// }, -// // { -// // name: "valid Compenent Parser", -// // fields: fields{}, -// // args: args{ componentParser: notnil }, -// // wantErr: false, -// // }, -// } -// for _, test := range tests { -// t.Run(test.name, func(t *testing.T) { -// if err := cfg.Unmarshal(test.args.componentParser); (err != nil) != test.wantErr { -// t.Errorf("Config.Unmarshal() error = %v, wantErr %v", err, test.wantErr) -// } -// }) -// } +// _, err = otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config-noscrapers.yaml"), factories) + +// require.Contains(t, err.Error(), "must specify at least one scraper") // } + +func TestConfig_Unmarshal(t *testing.T) { + // factories, err := otelcoltest.NopFactories() + // require.NoError(t, err) + + // factory := NewFactory() + // factories.Receivers[metadata.Type] = factory + // cfg, err := otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config.yaml"), factories) + + type fields struct { + ScraperControllerSettings scraperhelper.ScraperControllerSettings + Scrapers map[string]internal.Config + MetricsBuilderConfig metadata.MetricsBuilderConfig + } + + type args struct { + componentParser *confmap.Conf + } + + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + { + name: "Empty Component Parser", + fields: fields{}, + args: args{componentParser: nil}, + wantErr: false, + }, + // { + // name: "valid Compenent Parser", + // fields: fields{}, + // args: args{ componentParser: notnil }, + // wantErr: false, + // }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + cfg := &Config{ + ScraperControllerSettings: test.fields.ScraperControllerSettings, + Scrapers: test.fields.Scrapers, + MetricsBuilderConfig: test.fields.MetricsBuilderConfig, + } + if err := cfg.Unmarshal(test.args.componentParser); (err != nil) != test.wantErr { + t.Errorf("Config.Unmarshal() error = %v, wantErr %v", err, test.wantErr) + } + }) + } +} From f3955d1c247f630ef2072b83c2ba36cabb7954a3 Mon Sep 17 00:00:00 2001 From: Nicholas Shaddox Date: Tue, 10 Oct 2023 09:43:28 -0700 Subject: [PATCH 4/5] add: coverage for config.go --- .../gitproviderreceiver/config_test.go | 65 +++++-------------- .../testdata/config-invalidscraperkey.yaml | 27 ++++++++ .../testdata/config-nilconfig.yaml | 21 ------ 3 files changed, 43 insertions(+), 70 deletions(-) create mode 100644 pkg/receiver/gitproviderreceiver/testdata/config-invalidscraperkey.yaml delete mode 100644 pkg/receiver/gitproviderreceiver/testdata/config-nilconfig.yaml diff --git a/pkg/receiver/gitproviderreceiver/config_test.go b/pkg/receiver/gitproviderreceiver/config_test.go index 842e7225..90ab1616 100644 --- a/pkg/receiver/gitproviderreceiver/config_test.go +++ b/pkg/receiver/gitproviderreceiver/config_test.go @@ -53,62 +53,29 @@ func TestLoadConfig(t *testing.T) { assert.Equal(t, expectedConfig, r1) } -// func TestLoadConfig_CompnentParcerNil(t *testing.T) { -// factories, err := otelcoltest.NopFactories() -// require.NoError(t, err) - -// factory := NewFactory() -// factories.Receivers[metadata.Type] = factory - -// // Is this mocking? -// p := (*confmap.Conf)(nil) -// cfg := (*Config)(nil) -// err = cfg.Unmarshal(p) - -// require.NoError(t, err) - -// // assert.Equal(t, len(cfg.Receivers), 2) -// } - -// // Mock componentParser.Unmarshal() -// func TestLoadConfig_CompnentParcerError(t *testing.T) { -// factories, err := otelcoltest.NopFactories() -// require.NoError(t, err) - -// factory := NewFactory() -// factories.Receivers[metadata.Type] = factory - -// // cfg, err := otelcoltest.LoadConfig(filepath.Join("testdata", "config-nilconfig.yaml"), factories) -// componentParser := (*confmap.Conf) -// cfg := (*Config)(nil) - -// err = cfg.Unmarshal(componentParser) +func TestLoadInvalidConfig_NoScrapers(t *testing.T) { + factories, err := otelcoltest.NopFactories() + require.NoError(t, err) -// // require.Error(t, err) -// // require.NotNil(t, cfg) + factory := NewFactory() + factories.Receivers[metadata.Type] = factory + _, err = otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config-noscrapers.yaml"), factories) -// // assert.Equal(t, len(cfg.Receivers), 2) -// } + require.Contains(t, err.Error(), "must specify at least one scraper") +} -// func TestLoadInvalidConfig_NoScrapers(t *testing.T) { -// factories, err := otelcoltest.NopFactories() -// require.NoError(t, err) +func TestLoadInvalidConfig_InvalidScraperKey(t *testing.T) { + factories, err := otelcoltest.NopFactories() + require.NoError(t, err) -// factory := NewFactory() -// factories.Receivers[metadata.Type] = factory -// _, err = otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config-noscrapers.yaml"), factories) + factory := NewFactory() + factories.Receivers[metadata.Type] = factory + _, err = otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config-invalidscraperkey.yaml"), factories) -// require.Contains(t, err.Error(), "must specify at least one scraper") -// } + require.Contains(t, err.Error(), "error reading configuration for \"gitprovider/customname\": invalid scraper key: invalidscraperkey2") +} func TestConfig_Unmarshal(t *testing.T) { - // factories, err := otelcoltest.NopFactories() - // require.NoError(t, err) - - // factory := NewFactory() - // factories.Receivers[metadata.Type] = factory - // cfg, err := otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config.yaml"), factories) - type fields struct { ScraperControllerSettings scraperhelper.ScraperControllerSettings Scrapers map[string]internal.Config diff --git a/pkg/receiver/gitproviderreceiver/testdata/config-invalidscraperkey.yaml b/pkg/receiver/gitproviderreceiver/testdata/config-invalidscraperkey.yaml new file mode 100644 index 00000000..f7b8c85d --- /dev/null +++ b/pkg/receiver/gitproviderreceiver/testdata/config-invalidscraperkey.yaml @@ -0,0 +1,27 @@ +--- +receivers: + gitprovider: + initial_delay: 1s + collection_interval: 60s + scrapers: + invalidscraperkey: + + gitprovider/customname: + initial_delay: 1s + collection_interval: 30s + scrapers: + invalidscraperkey2: + + +processors: + nop: + +exporters: + nop: + +service: + pipelines: + metrics: + receivers: [gitprovider, gitprovider/customname] + processors: [nop] + exporters: [nop] diff --git a/pkg/receiver/gitproviderreceiver/testdata/config-nilconfig.yaml b/pkg/receiver/gitproviderreceiver/testdata/config-nilconfig.yaml deleted file mode 100644 index fbb14853..00000000 --- a/pkg/receiver/gitproviderreceiver/testdata/config-nilconfig.yaml +++ /dev/null @@ -1,21 +0,0 @@ ---- -foobar: - morefoobar: - -receivers: - gitprovider: - nomeaning: - -processors: - nop: - -exporters: - nop: - -service: - pipelines: - metrics: - receivers: [gitprovider, gitprovider/customname] - processors: [nop] - exporters: [nop] - From 0005b4757c300efcee2499ac51692ca8d57f9bd8 Mon Sep 17 00:00:00 2001 From: Nicholas Shaddox Date: Tue, 10 Oct 2023 10:33:11 -0700 Subject: [PATCH 5/5] fix: narrowed the invalidscraperkey test --- pkg/receiver/gitproviderreceiver/config_test.go | 2 +- .../testdata/config-invalidscraperkey.yaml | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/pkg/receiver/gitproviderreceiver/config_test.go b/pkg/receiver/gitproviderreceiver/config_test.go index 90ab1616..e4f8694d 100644 --- a/pkg/receiver/gitproviderreceiver/config_test.go +++ b/pkg/receiver/gitproviderreceiver/config_test.go @@ -72,7 +72,7 @@ func TestLoadInvalidConfig_InvalidScraperKey(t *testing.T) { factories.Receivers[metadata.Type] = factory _, err = otelcoltest.LoadConfigAndValidate(filepath.Join("testdata", "config-invalidscraperkey.yaml"), factories) - require.Contains(t, err.Error(), "error reading configuration for \"gitprovider/customname\": invalid scraper key: invalidscraperkey2") + require.Contains(t, err.Error(), "error reading configuration for \"gitprovider\": invalid scraper key: invalidscraperkey") } func TestConfig_Unmarshal(t *testing.T) { diff --git a/pkg/receiver/gitproviderreceiver/testdata/config-invalidscraperkey.yaml b/pkg/receiver/gitproviderreceiver/testdata/config-invalidscraperkey.yaml index f7b8c85d..077ccef6 100644 --- a/pkg/receiver/gitproviderreceiver/testdata/config-invalidscraperkey.yaml +++ b/pkg/receiver/gitproviderreceiver/testdata/config-invalidscraperkey.yaml @@ -6,13 +6,6 @@ receivers: scrapers: invalidscraperkey: - gitprovider/customname: - initial_delay: 1s - collection_interval: 30s - scrapers: - invalidscraperkey2: - - processors: nop: @@ -22,6 +15,6 @@ exporters: service: pipelines: metrics: - receivers: [gitprovider, gitprovider/customname] + receivers: [gitprovider] processors: [nop] exporters: [nop]