Merge pull request #162 from prometheus/fabxc/runtime-test

Turn allocation test into a benchmark.
This commit is contained in:
Fabian Reinartz 2015-08-13 23:05:05 +02:00
commit bbd006bc5e
1 changed files with 21 additions and 0 deletions

View File

@ -14,6 +14,7 @@
package model package model
import ( import (
"runtime"
"sync" "sync"
"testing" "testing"
) )
@ -246,6 +247,26 @@ func BenchmarkMetricToFastFingerprintTriple(b *testing.B) {
benchmarkMetricToFastFingerprint(b, Metric{"first-label": "first-label-value", "second-label": "second-label-value", "third-label": "third-label-value"}, 15738406913934009676) benchmarkMetricToFastFingerprint(b, Metric{"first-label": "first-label-value", "second-label": "second-label-value", "third-label": "third-label-value"}, 15738406913934009676)
} }
func BenchmarkEmptyLabelSignature(b *testing.B) {
b.StopTimer()
input := []map[string]string{nil, {}}
var ms runtime.MemStats
runtime.ReadMemStats(&ms)
alloc := ms.Alloc
for _, labels := range input {
LabelsToSignature(labels)
}
runtime.ReadMemStats(&ms)
if got := ms.Alloc; alloc != got {
b.Error("expected LabelsToSignature with empty labels not to perform allocations")
}
}
func benchmarkMetricToFastFingerprintConc(b *testing.B, m Metric, e Fingerprint, concLevel int) { func benchmarkMetricToFastFingerprintConc(b *testing.B, m Metric, e Fingerprint, concLevel int) {
var start, end sync.WaitGroup var start, end sync.WaitGroup
start.Add(1) start.Add(1)