mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-10-26 13:39:03 +01:00
utils: share the include/exclude regexp flag handling (#2737)
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de>
This commit is contained in:
@@ -29,6 +29,7 @@ import (
|
||||
"github.com/prometheus-community/windows_exporter/internal/metriccache"
|
||||
"github.com/prometheus-community/windows_exporter/internal/mi"
|
||||
"github.com/prometheus-community/windows_exporter/internal/types"
|
||||
"github.com/prometheus-community/windows_exporter/internal/utils"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"golang.org/x/sys/windows"
|
||||
)
|
||||
@@ -112,33 +113,17 @@ func NewWithFlags(app *kingpin.Application) *Collector {
|
||||
config: ConfigDefaults,
|
||||
}
|
||||
|
||||
var printerInclude, printerExclude string
|
||||
|
||||
app.Flag(
|
||||
utils.RegexpFlag(app,
|
||||
"collector.printer.include",
|
||||
"Regular expression to match printers to collect metrics for",
|
||||
).Default(".+").StringVar(&printerInclude)
|
||||
".+", &c.config.PrinterInclude,
|
||||
)
|
||||
|
||||
app.Flag(
|
||||
utils.RegexpFlag(app,
|
||||
"collector.printer.exclude",
|
||||
"Regular expression to match printers to exclude",
|
||||
).Default("").StringVar(&printerExclude)
|
||||
|
||||
app.Action(func(*kingpin.ParseContext) error {
|
||||
var err error
|
||||
|
||||
c.config.PrinterInclude, err = regexp.Compile(fmt.Sprintf("^(?:%s)$", printerInclude))
|
||||
if err != nil {
|
||||
return fmt.Errorf("collector.printer.include: %w", err)
|
||||
}
|
||||
|
||||
c.config.PrinterExclude, err = regexp.Compile(fmt.Sprintf("^(?:%s)$", printerExclude))
|
||||
if err != nil {
|
||||
return fmt.Errorf("collector.printer.exclude: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
"", &c.config.PrinterExclude,
|
||||
)
|
||||
|
||||
return c
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/alecthomas/kingpin/v2"
|
||||
"github.com/prometheus-community/windows_exporter/internal/collector/printer"
|
||||
"github.com/prometheus-community/windows_exporter/internal/utils/testutils"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
@@ -31,12 +30,7 @@ import (
|
||||
)
|
||||
|
||||
func BenchmarkCollector(b *testing.B) {
|
||||
// Whitelist is not set in testing context (kingpin flags not parsed), causing the collector to skip all printers.
|
||||
printersInclude := ".+"
|
||||
|
||||
testutils.FuncBenchmarkCollector(b, "printer", printer.NewWithFlags, func(app *kingpin.Application) {
|
||||
app.GetFlag("collector.printer.include").StringVar(&printersInclude)
|
||||
})
|
||||
testutils.FuncBenchmarkCollector(b, "printer", printer.NewWithFlags)
|
||||
}
|
||||
|
||||
func TestCollector(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user