mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-08 12:27:28 -08:00
54 lines
1 KiB
Go
54 lines
1 KiB
Go
|
package metric
|
||
|
|
||
|
import (
|
||
|
"math/rand"
|
||
|
"testing"
|
||
|
|
||
|
clientmodel "github.com/prometheus/client_golang/model"
|
||
|
)
|
||
|
|
||
|
const numTestValues = 5000
|
||
|
|
||
|
func TestValuesMarshalAndUnmarshal(t *testing.T) {
|
||
|
values := randomValues(numTestValues)
|
||
|
|
||
|
marshalled := values.marshal()
|
||
|
unmarshalled := unmarshalValues(marshalled)
|
||
|
|
||
|
for i, expected := range values {
|
||
|
actual := unmarshalled[i]
|
||
|
if !actual.Equal(expected) {
|
||
|
t.Fatalf("%d. got: %v, expected: %v", i, actual, expected)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func randomValues(numSamples int) Values {
|
||
|
v := make(Values, 0, numSamples)
|
||
|
for i := 0; i < numSamples; i++ {
|
||
|
v = append(v, &SamplePair{
|
||
|
Timestamp: clientmodel.Timestamp(rand.Int63()),
|
||
|
Value: clientmodel.SampleValue(rand.NormFloat64()),
|
||
|
})
|
||
|
}
|
||
|
|
||
|
return v
|
||
|
}
|
||
|
|
||
|
func BenchmarkMarshal(b *testing.B) {
|
||
|
v := randomValues(numTestValues)
|
||
|
b.ResetTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
v.marshal()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkUnmarshal(b *testing.B) {
|
||
|
v := randomValues(numTestValues)
|
||
|
marshalled := v.marshal()
|
||
|
b.ResetTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
unmarshalValues(marshalled)
|
||
|
}
|
||
|
}
|