mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-03-21 18:06:35 +00:00
Co-authored-by: Kayla Ondracek <112117836+kondracek-nr@users.noreply.github.com>
This commit is contained in:
@@ -53,7 +53,7 @@ func NewCollector[T any](object string, _ []string) (*Collector, error) {
|
|||||||
counters: make(map[string]Counter),
|
counters: make(map[string]Counter),
|
||||||
}
|
}
|
||||||
|
|
||||||
valueType := reflect.TypeFor[T]().Elem()
|
valueType := reflect.TypeFor[T]()
|
||||||
|
|
||||||
if f, ok := valueType.FieldByName("Name"); ok {
|
if f, ok := valueType.FieldByName("Name"); ok {
|
||||||
if f.Type.Kind() == reflect.String {
|
if f.Type.Kind() == reflect.String {
|
||||||
|
|||||||
@@ -21,6 +21,22 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TestNewCollectorStructTypeParam guards against a regression where
|
||||||
|
// reflect.TypeFor[T]().Elem() panicked when T is a plain struct (not a pointer).
|
||||||
|
// See https://github.com/prometheus-community/windows_exporter/issues/2365
|
||||||
|
func TestNewCollectorStructTypeParam(t *testing.T) {
|
||||||
|
type systemCounterValues struct {
|
||||||
|
Name string
|
||||||
|
|
||||||
|
ProcessorQueueLength float64 `perfdata:"Processor Queue Length"`
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := NewCollector[systemCounterValues]("System", nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Skipf("skipping: failed to create collector: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func BenchmarkQueryPerformanceData(b *testing.B) {
|
func BenchmarkQueryPerformanceData(b *testing.B) {
|
||||||
for b.Loop() {
|
for b.Loop() {
|
||||||
_, _ = QueryPerformanceData("Global", "")
|
_, _ = QueryPerformanceData("Global", "")
|
||||||
|
|||||||
Reference in New Issue
Block a user