mirror of
https://github.com/prometheus-community/windows_exporter
synced 2025-01-29 02:33:15 +00:00
1d3af58305
Perflib often exposes duplicate IIS entries, suffixed with '#' and a number (I.E. iis_site_name#1). These duplicate entries were causing the exporter to fail scraping due to duplicate metrics. Based on user feedback, the entry with the highest suffix value is kept, with other duplicate entries discarded. E.G. Given the following list of site names, "Site_B" would be discarded, and "Site_B#2" would be kept and presented as "Site_B" in the collector metrics. [ "Site_A", "Site_B", "Site_C", "Site_B#2" ] Signed-off-by: Ben Reedy <breed808@breed808.com>
50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package collector
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func BenchmarkIISCollector(b *testing.B) {
|
|
benchmarkCollector(b, "iis", newIISCollector)
|
|
}
|
|
|
|
func TestIISDeduplication(t *testing.T) {
|
|
start := []perflibAPP_POOL_WAS{
|
|
{
|
|
Name: "foo",
|
|
Frequency_Object: 1,
|
|
},
|
|
{
|
|
Name: "foo1#999",
|
|
Frequency_Object: 2,
|
|
},
|
|
{
|
|
Name: "foo#2",
|
|
Frequency_Object: 3,
|
|
},
|
|
{
|
|
Name: "bar$2",
|
|
Frequency_Object: 4,
|
|
},
|
|
{
|
|
Name: "bar_2",
|
|
Frequency_Object: 5,
|
|
},
|
|
}
|
|
var expected = make(map[string]perflibAPP_POOL_WAS)
|
|
// Should be deduplicated from "foo#2"
|
|
expected["foo"] = perflibAPP_POOL_WAS{Name: "foo#2", Frequency_Object: 3}
|
|
// Map key should have suffix stripped, but struct name field should be unchanged
|
|
expected["foo1"] = perflibAPP_POOL_WAS{Name: "foo1#999", Frequency_Object: 2}
|
|
// Map key and Name should be identical, as there is no suffix starting with "#"
|
|
expected["bar$2"] = perflibAPP_POOL_WAS{Name: "bar$2", Frequency_Object: 4}
|
|
// Map key and Name should be identical, as there is no suffix starting with "#"
|
|
expected["bar_2"] = perflibAPP_POOL_WAS{Name: "bar_2", Frequency_Object: 5}
|
|
|
|
deduplicated := dedupIISNames(start)
|
|
if !reflect.DeepEqual(expected, deduplicated) {
|
|
t.Errorf("Flattened values do not match!\nExpected result: %+v\nActual result: %+v", expected, deduplicated)
|
|
}
|
|
}
|