mirror of
				https://github.com/minio/minio.git
				synced 2025-11-04 10:11:09 +01:00 
			
		
		
		
	Add a new Prometheus metric for bucket replication latency
e.g.:
minio_bucket_replication_latency_ns{
    bucket="testbucket",
    operation="upload",
    range="LESS_THAN_1_MiB",
    server="127.0.0.1:9001",
    targetArn="arn:minio:replication::45da043c-14f5-4da4-9316-aba5f77bf730:testbucket"} 2.2015663e+07
Co-authored-by: Klaus Post <klauspost@gmail.com>
		
	
			
		
			
				
	
	
		
			463 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			463 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package cmd
 | 
						|
 | 
						|
// Code generated by github.com/tinylib/msgp DO NOT EDIT.
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/tinylib/msgp/msgp"
 | 
						|
)
 | 
						|
 | 
						|
func TestMarshalUnmarshalBucketReplicationStat(t *testing.T) {
 | 
						|
	v := BucketReplicationStat{}
 | 
						|
	bts, err := v.MarshalMsg(nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	left, err := v.UnmarshalMsg(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after UnmarshalMsg(): %q", len(left), left)
 | 
						|
	}
 | 
						|
 | 
						|
	left, err = msgp.Skip(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after Skip(): %q", len(left), left)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkMarshalMsgBucketReplicationStat(b *testing.B) {
 | 
						|
	v := BucketReplicationStat{}
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.MarshalMsg(nil)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkAppendMsgBucketReplicationStat(b *testing.B) {
 | 
						|
	v := BucketReplicationStat{}
 | 
						|
	bts := make([]byte, 0, v.Msgsize())
 | 
						|
	bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkUnmarshalBucketReplicationStat(b *testing.B) {
 | 
						|
	v := BucketReplicationStat{}
 | 
						|
	bts, _ := v.MarshalMsg(nil)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		_, err := v.UnmarshalMsg(bts)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestEncodeDecodeBucketReplicationStat(t *testing.T) {
 | 
						|
	v := BucketReplicationStat{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
 | 
						|
	m := v.Msgsize()
 | 
						|
	if buf.Len() > m {
 | 
						|
		t.Log("WARNING: TestEncodeDecodeBucketReplicationStat Msgsize() is inaccurate")
 | 
						|
	}
 | 
						|
 | 
						|
	vn := BucketReplicationStat{}
 | 
						|
	err := msgp.Decode(&buf, &vn)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
 | 
						|
	buf.Reset()
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	err = msgp.NewReader(&buf).Skip()
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkEncodeBucketReplicationStat(b *testing.B) {
 | 
						|
	v := BucketReplicationStat{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	en := msgp.NewWriter(msgp.Nowhere)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.EncodeMsg(en)
 | 
						|
	}
 | 
						|
	en.Flush()
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkDecodeBucketReplicationStat(b *testing.B) {
 | 
						|
	v := BucketReplicationStat{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	rd := msgp.NewEndlessReader(buf.Bytes(), b)
 | 
						|
	dc := msgp.NewReader(rd)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		err := v.DecodeMsg(dc)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestMarshalUnmarshalBucketReplicationStats(t *testing.T) {
 | 
						|
	v := BucketReplicationStats{}
 | 
						|
	bts, err := v.MarshalMsg(nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	left, err := v.UnmarshalMsg(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after UnmarshalMsg(): %q", len(left), left)
 | 
						|
	}
 | 
						|
 | 
						|
	left, err = msgp.Skip(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after Skip(): %q", len(left), left)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkMarshalMsgBucketReplicationStats(b *testing.B) {
 | 
						|
	v := BucketReplicationStats{}
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.MarshalMsg(nil)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkAppendMsgBucketReplicationStats(b *testing.B) {
 | 
						|
	v := BucketReplicationStats{}
 | 
						|
	bts := make([]byte, 0, v.Msgsize())
 | 
						|
	bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkUnmarshalBucketReplicationStats(b *testing.B) {
 | 
						|
	v := BucketReplicationStats{}
 | 
						|
	bts, _ := v.MarshalMsg(nil)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		_, err := v.UnmarshalMsg(bts)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestEncodeDecodeBucketReplicationStats(t *testing.T) {
 | 
						|
	v := BucketReplicationStats{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
 | 
						|
	m := v.Msgsize()
 | 
						|
	if buf.Len() > m {
 | 
						|
		t.Log("WARNING: TestEncodeDecodeBucketReplicationStats Msgsize() is inaccurate")
 | 
						|
	}
 | 
						|
 | 
						|
	vn := BucketReplicationStats{}
 | 
						|
	err := msgp.Decode(&buf, &vn)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
 | 
						|
	buf.Reset()
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	err = msgp.NewReader(&buf).Skip()
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkEncodeBucketReplicationStats(b *testing.B) {
 | 
						|
	v := BucketReplicationStats{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	en := msgp.NewWriter(msgp.Nowhere)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.EncodeMsg(en)
 | 
						|
	}
 | 
						|
	en.Flush()
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkDecodeBucketReplicationStats(b *testing.B) {
 | 
						|
	v := BucketReplicationStats{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	rd := msgp.NewEndlessReader(buf.Bytes(), b)
 | 
						|
	dc := msgp.NewReader(rd)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		err := v.DecodeMsg(dc)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestMarshalUnmarshalBucketStats(t *testing.T) {
 | 
						|
	v := BucketStats{}
 | 
						|
	bts, err := v.MarshalMsg(nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	left, err := v.UnmarshalMsg(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after UnmarshalMsg(): %q", len(left), left)
 | 
						|
	}
 | 
						|
 | 
						|
	left, err = msgp.Skip(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after Skip(): %q", len(left), left)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkMarshalMsgBucketStats(b *testing.B) {
 | 
						|
	v := BucketStats{}
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.MarshalMsg(nil)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkAppendMsgBucketStats(b *testing.B) {
 | 
						|
	v := BucketStats{}
 | 
						|
	bts := make([]byte, 0, v.Msgsize())
 | 
						|
	bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkUnmarshalBucketStats(b *testing.B) {
 | 
						|
	v := BucketStats{}
 | 
						|
	bts, _ := v.MarshalMsg(nil)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		_, err := v.UnmarshalMsg(bts)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestEncodeDecodeBucketStats(t *testing.T) {
 | 
						|
	v := BucketStats{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
 | 
						|
	m := v.Msgsize()
 | 
						|
	if buf.Len() > m {
 | 
						|
		t.Log("WARNING: TestEncodeDecodeBucketStats Msgsize() is inaccurate")
 | 
						|
	}
 | 
						|
 | 
						|
	vn := BucketStats{}
 | 
						|
	err := msgp.Decode(&buf, &vn)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
 | 
						|
	buf.Reset()
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	err = msgp.NewReader(&buf).Skip()
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkEncodeBucketStats(b *testing.B) {
 | 
						|
	v := BucketStats{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	en := msgp.NewWriter(msgp.Nowhere)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.EncodeMsg(en)
 | 
						|
	}
 | 
						|
	en.Flush()
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkDecodeBucketStats(b *testing.B) {
 | 
						|
	v := BucketStats{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	rd := msgp.NewEndlessReader(buf.Bytes(), b)
 | 
						|
	dc := msgp.NewReader(rd)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		err := v.DecodeMsg(dc)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestMarshalUnmarshalReplicationLatency(t *testing.T) {
 | 
						|
	v := ReplicationLatency{}
 | 
						|
	bts, err := v.MarshalMsg(nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	left, err := v.UnmarshalMsg(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after UnmarshalMsg(): %q", len(left), left)
 | 
						|
	}
 | 
						|
 | 
						|
	left, err = msgp.Skip(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after Skip(): %q", len(left), left)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkMarshalMsgReplicationLatency(b *testing.B) {
 | 
						|
	v := ReplicationLatency{}
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.MarshalMsg(nil)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkAppendMsgReplicationLatency(b *testing.B) {
 | 
						|
	v := ReplicationLatency{}
 | 
						|
	bts := make([]byte, 0, v.Msgsize())
 | 
						|
	bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkUnmarshalReplicationLatency(b *testing.B) {
 | 
						|
	v := ReplicationLatency{}
 | 
						|
	bts, _ := v.MarshalMsg(nil)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		_, err := v.UnmarshalMsg(bts)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestEncodeDecodeReplicationLatency(t *testing.T) {
 | 
						|
	v := ReplicationLatency{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
 | 
						|
	m := v.Msgsize()
 | 
						|
	if buf.Len() > m {
 | 
						|
		t.Log("WARNING: TestEncodeDecodeReplicationLatency Msgsize() is inaccurate")
 | 
						|
	}
 | 
						|
 | 
						|
	vn := ReplicationLatency{}
 | 
						|
	err := msgp.Decode(&buf, &vn)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
 | 
						|
	buf.Reset()
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	err = msgp.NewReader(&buf).Skip()
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkEncodeReplicationLatency(b *testing.B) {
 | 
						|
	v := ReplicationLatency{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	en := msgp.NewWriter(msgp.Nowhere)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.EncodeMsg(en)
 | 
						|
	}
 | 
						|
	en.Flush()
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkDecodeReplicationLatency(b *testing.B) {
 | 
						|
	v := ReplicationLatency{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	rd := msgp.NewEndlessReader(buf.Bytes(), b)
 | 
						|
	dc := msgp.NewReader(rd)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		err := v.DecodeMsg(dc)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |