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