@@ -22,6 +22,7 @@ import (
2222 "time"
2323
2424 "github.com/stretchr/testify/assert"
25+ "github.com/stretchr/testify/mock"
2526 "github.com/stretchr/testify/require"
2627 "go.uber.org/zap"
2728
@@ -103,10 +104,13 @@ func TestGatherMetrics_EndToEnd(t *testing.T) {
103104 networkscraper .TypeStr : & networkscraper.Config {},
104105 processesscraper .TypeStr : & processesscraper.Config {},
105106 swapscraper .TypeStr : & swapscraper.Config {},
106- processscraper .TypeStr : & processscraper.Config {},
107107 },
108108 }
109109
110+ if runtime .GOOS == "linux" || runtime .GOOS == "windows" {
111+ config .Scrapers [processscraper .TypeStr ] = & processscraper.Config {}
112+ }
113+
110114 receiver , err := newHostMetricsReceiver (context .Background (), zap .NewNop (), config , factories , resourceFactories , sink )
111115
112116 require .NoError (t , err , "Failed to create metrics receiver: %v" , err )
@@ -120,7 +124,7 @@ func TestGatherMetrics_EndToEnd(t *testing.T) {
120124 cancelFn ()
121125
122126 const tick = 50 * time .Millisecond
123- const waitFor = 5 * time .Second
127+ const waitFor = time .Second
124128 require .Eventuallyf (t , func () bool {
125129 got := sink .AllMetrics ()
126130 if len (got ) == 0 {
@@ -154,6 +158,10 @@ func assertIncludesStandardMetrics(t *testing.T, got pdata.Metrics) {
154158}
155159
156160func assertIncludesResourceMetrics (t * testing.T , got pdata.Metrics ) {
161+ if runtime .GOOS != "linux" && runtime .GOOS != "windows" {
162+ return
163+ }
164+
157165 md := pdatautil .MetricsToInternalMetrics (got )
158166
159167 // get the superset of metrics returned by all resource metrics (excluding the first)
@@ -197,31 +205,33 @@ const mockResourceTypeStr = "mockresource"
197205
198206type mockConfig struct {}
199207
200- type mockFactory struct {}
201- type mockScraper struct {}
208+ type mockFactory struct { mock. Mock }
209+ type mockScraper struct { mock. Mock }
202210
203- func (* mockFactory ) CreateDefaultConfig () internal.Config { return & mockConfig {} }
204- func (* mockFactory ) CreateMetricsScraper (ctx context.Context , logger * zap.Logger , cfg internal.Config ) (internal.Scraper , error ) {
205- return & mockScraper {}, nil
211+ func (m * mockFactory ) CreateDefaultConfig () internal.Config { return & mockConfig {} }
212+ func (m * mockFactory ) CreateMetricsScraper (ctx context.Context , logger * zap.Logger , cfg internal.Config ) (internal.Scraper , error ) {
213+ args := m .MethodCalled ("CreateMetricsScraper" )
214+ return args .Get (0 ).(internal.Scraper ), args .Error (1 )
206215}
207216
208- func (* mockScraper ) Initialize (ctx context.Context ) error { return nil }
209- func (* mockScraper ) Close (ctx context.Context ) error { return nil }
210- func (* mockScraper ) ScrapeMetrics (ctx context.Context ) (pdata.MetricSlice , error ) {
217+ func (m * mockScraper ) Initialize (ctx context.Context ) error { return nil }
218+ func (m * mockScraper ) Close (ctx context.Context ) error { return nil }
219+ func (m * mockScraper ) ScrapeMetrics (ctx context.Context ) (pdata.MetricSlice , error ) {
211220 return pdata .NewMetricSlice (), errors .New ("err1" )
212221}
213222
214- type mockResourceFactory struct {}
215- type mockResourceScraper struct {}
223+ type mockResourceFactory struct { mock. Mock }
224+ type mockResourceScraper struct { mock. Mock }
216225
217- func (* mockResourceFactory ) CreateDefaultConfig () internal.Config { return & mockConfig {} }
218- func (* mockResourceFactory ) CreateMetricsScraper (ctx context.Context , logger * zap.Logger , cfg internal.Config ) (internal.ResourceScraper , error ) {
219- return & mockResourceScraper {}, nil
226+ func (m * mockResourceFactory ) CreateDefaultConfig () internal.Config { return & mockConfig {} }
227+ func (m * mockResourceFactory ) CreateMetricsScraper (ctx context.Context , logger * zap.Logger , cfg internal.Config ) (internal.ResourceScraper , error ) {
228+ args := m .MethodCalled ("CreateMetricsScraper" )
229+ return args .Get (0 ).(internal.ResourceScraper ), args .Error (1 )
220230}
221231
222- func (* mockResourceScraper ) Initialize (ctx context.Context ) error { return nil }
223- func (* mockResourceScraper ) Close (ctx context.Context ) error { return nil }
224- func (* mockResourceScraper ) ScrapeMetrics (ctx context.Context ) (pdata.ResourceMetricsSlice , error ) {
232+ func (m * mockResourceScraper ) Initialize (ctx context.Context ) error { return nil }
233+ func (m * mockResourceScraper ) Close (ctx context.Context ) error { return nil }
234+ func (m * mockResourceScraper ) ScrapeMetrics (ctx context.Context ) (pdata.ResourceMetricsSlice , error ) {
225235 return pdata .NewResourceMetricsSlice (), errors .New ("err2" )
226236}
227237
@@ -236,9 +246,38 @@ func TestGatherMetrics_ScraperKeyConfigError(t *testing.T) {
236246 require .Error (t , err )
237247}
238248
249+ func TestGatherMetrics_CreateMetricsScraperError (t * testing.T ) {
250+ mFactory := & mockFactory {}
251+ mFactory .On ("CreateMetricsScraper" ).Return (& mockScraper {}, errors .New ("err1" ))
252+ var mockFactories = map [string ]internal.ScraperFactory {mockTypeStr : mFactory }
253+ var mockResourceFactories = map [string ]internal.ResourceScraperFactory {}
254+
255+ sink := & exportertest.SinkMetricsExporter {}
256+ config := & Config {Scrapers : map [string ]internal.Config {mockTypeStr : & mockConfig {}}}
257+ _ , err := newHostMetricsReceiver (context .Background (), zap .NewNop (), config , mockFactories , mockResourceFactories , sink )
258+ require .Error (t , err )
259+ }
260+
261+ func TestGatherMetrics_CreateMetricsResourceScraperError (t * testing.T ) {
262+ mResourceFactory := & mockResourceFactory {}
263+ mResourceFactory .On ("CreateMetricsScraper" ).Return (& mockResourceScraper {}, errors .New ("err1" ))
264+ var mockFactories = map [string ]internal.ScraperFactory {}
265+ var mockResourceFactories = map [string ]internal.ResourceScraperFactory {mockTypeStr : mResourceFactory }
266+
267+ sink := & exportertest.SinkMetricsExporter {}
268+ config := & Config {Scrapers : map [string ]internal.Config {mockTypeStr : & mockConfig {}}}
269+ _ , err := newHostMetricsReceiver (context .Background (), zap .NewNop (), config , mockFactories , mockResourceFactories , sink )
270+ require .Error (t , err )
271+ }
272+
239273func TestGatherMetrics_Error (t * testing.T ) {
240- var mockFactories = map [string ]internal.ScraperFactory {mockTypeStr : & mockFactory {}}
241- var mockResourceFactories = map [string ]internal.ResourceScraperFactory {mockResourceTypeStr : & mockResourceFactory {}}
274+ mFactory := & mockFactory {}
275+ mFactory .On ("CreateMetricsScraper" ).Return (& mockScraper {}, nil )
276+ mResourceFactory := & mockResourceFactory {}
277+ mResourceFactory .On ("CreateMetricsScraper" ).Return (& mockResourceScraper {}, nil )
278+
279+ var mockFactories = map [string ]internal.ScraperFactory {mockTypeStr : mFactory }
280+ var mockResourceFactories = map [string ]internal.ResourceScraperFactory {mockResourceTypeStr : mResourceFactory }
242281
243282 sink := & exportertest.SinkMetricsExporter {}
244283
@@ -313,8 +352,8 @@ func Benchmark_ScrapeNetworkMetrics(b *testing.B) {
313352 benchmarkScrapeMetrics (b , cfg )
314353}
315354
316- func Benchmark_ScrapeProcessMetrics (b * testing.B ) {
317- cfg := & Config {Scrapers : map [string ]internal.Config {processscraper .TypeStr : (& processscraper .Factory {}).CreateDefaultConfig ()}}
355+ func Benchmark_ScrapeProcessesMetrics (b * testing.B ) {
356+ cfg := & Config {Scrapers : map [string ]internal.Config {processesscraper .TypeStr : (& processesscraper .Factory {}).CreateDefaultConfig ()}}
318357 benchmarkScrapeMetrics (b , cfg )
319358}
320359
@@ -323,6 +362,15 @@ func Benchmark_ScrapeSwapMetrics(b *testing.B) {
323362 benchmarkScrapeMetrics (b , cfg )
324363}
325364
365+ func Benchmark_ScrapeProcessMetrics (b * testing.B ) {
366+ if runtime .GOOS != "linux" && runtime .GOOS != "windows" {
367+ b .Skip ("skipping test on non linux/windows" )
368+ }
369+
370+ cfg := & Config {Scrapers : map [string ]internal.Config {processscraper .TypeStr : (& processscraper.Factory {}).CreateDefaultConfig ()}}
371+ benchmarkScrapeMetrics (b , cfg )
372+ }
373+
326374func Benchmark_ScrapeSystemMetrics (b * testing.B ) {
327375 cfg := & Config {
328376 Scrapers : map [string ]internal.Config {
@@ -351,9 +399,12 @@ func Benchmark_ScrapeSystemAndProcessMetrics(b *testing.B) {
351399 networkscraper .TypeStr : & networkscraper.Config {},
352400 processesscraper .TypeStr : & processesscraper.Config {},
353401 swapscraper .TypeStr : & swapscraper.Config {},
354- processscraper .TypeStr : & processscraper.Config {},
355402 },
356403 }
357404
405+ if runtime .GOOS == "linux" || runtime .GOOS == "windows" {
406+ cfg .Scrapers [processscraper .TypeStr ] = & processscraper.Config {}
407+ }
408+
358409 benchmarkScrapeMetrics (b , cfg )
359410}
0 commit comments