utils: share the include/exclude regexp flag handling (#2737)

Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de>
This commit is contained in:
Jan-Otto Kröpke
2026-10-16 00:07:30 +02:00
committed by GitHub
parent 34738679a1
commit 81ce8ef79d
18 changed files with 422 additions and 224 deletions
+7 -22
View File
@@ -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
}
+1 -7
View File
@@ -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) {