@@ -68,3 +68,51 @@ func TestWindowsProcessCollector(t *testing.T) {
6868 }
6969 }
7070}
71+
72+ func TestWindowsDescribeAndCollectAlignment (t * testing.T ) {
73+ collector := & processCollector {
74+ cpuTotal : NewDesc ("cpu_total" , "Total CPU usage" , nil , nil ),
75+ openFDs : NewDesc ("open_fds" , "Number of open file descriptors" , nil , nil ),
76+ maxFDs : NewDesc ("max_fds" , "Maximum file descriptors" , nil , nil ),
77+ vsize : NewDesc ("vsize" , "Virtual memory size" , nil , nil ),
78+ maxVsize : NewDesc ("max_vsize" , "Maximum virtual memory size" , nil , nil ),
79+ rss : NewDesc ("rss" , "Resident Set Size" , nil , nil ),
80+ startTime : NewDesc ("start_time" , "Process start time" , nil , nil ),
81+ inBytes : NewDesc ("in_bytes" , "Input bytes" , nil , nil ),
82+ outBytes : NewDesc ("out_bytes" , "Output bytes" , nil , nil ),
83+ }
84+
85+ // Collect and get descriptors
86+ descCh := make (chan * Desc , 15 )
87+ collector .describe (descCh )
88+ close (descCh )
89+
90+ definedDescs := make (map [string ]bool )
91+ for desc := range descCh {
92+ definedDescs [desc .String ()] = true
93+ }
94+
95+ // Collect and get metrics
96+ metricsCh := make (chan Metric , 15 )
97+ collector .processCollect (metricsCh )
98+ close (metricsCh )
99+
100+ collectedMetrics := make (map [string ]bool )
101+ for metric := range metricsCh {
102+ collectedMetrics [metric .Desc ().String ()] = true
103+ }
104+
105+ // Verify that all described metrics are collected
106+ for desc := range definedDescs {
107+ if ! collectedMetrics [desc ] {
108+ t .Errorf ("Metric %s described but not collected" , desc )
109+ }
110+ }
111+
112+ // Verify that no extra metrics are collected
113+ for desc := range collectedMetrics {
114+ if ! definedDescs [desc ] {
115+ t .Errorf ("Metric %s collected but not described" , desc )
116+ }
117+ }
118+ }
0 commit comments