mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 03:07:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2022 The LevelDB-Go and Pebble Authors. All rights reserved. Use
 | 
						|
// of this source code is governed by a BSD-style license that can be found in
 | 
						|
// the LICENSE file.
 | 
						|
 | 
						|
package base
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
	"time"
 | 
						|
 | 
						|
	"github.com/stretchr/testify/require"
 | 
						|
)
 | 
						|
 | 
						|
func TestThroughputMetric(t *testing.T) {
 | 
						|
	m1 := ThroughputMetric{
 | 
						|
		Bytes:        10,
 | 
						|
		WorkDuration: time.Millisecond,
 | 
						|
		IdleDuration: 9 * time.Millisecond,
 | 
						|
	}
 | 
						|
	var m2 ThroughputMetric
 | 
						|
	m2.Merge(m1)
 | 
						|
	require.Equal(t, m1, m2)
 | 
						|
	m2.Merge(m1)
 | 
						|
	doubleM1 := ThroughputMetric{
 | 
						|
		Bytes:        2 * m1.Bytes,
 | 
						|
		WorkDuration: 2 * m1.WorkDuration,
 | 
						|
		IdleDuration: 2 * m1.IdleDuration,
 | 
						|
	}
 | 
						|
	require.Equal(t, doubleM1, m2)
 | 
						|
	require.EqualValues(t, 10*100, m1.Rate())
 | 
						|
	require.EqualValues(t, 10*1000, m1.PeakRate())
 | 
						|
}
 | 
						|
 | 
						|
func TestThroughputMetric_Subtract(t *testing.T) {
 | 
						|
	m1 := ThroughputMetric{
 | 
						|
		Bytes:        10,
 | 
						|
		WorkDuration: time.Millisecond,
 | 
						|
		IdleDuration: 9 * time.Millisecond,
 | 
						|
	}
 | 
						|
	m2 := ThroughputMetric{
 | 
						|
		Bytes:        100,
 | 
						|
		WorkDuration: time.Millisecond,
 | 
						|
		IdleDuration: 90 * time.Millisecond,
 | 
						|
	}
 | 
						|
 | 
						|
	m2.Subtract(m1)
 | 
						|
	require.Equal(t, int64(90), m2.Bytes)
 | 
						|
	require.Equal(t, 0*time.Millisecond, m2.WorkDuration)
 | 
						|
	require.Equal(t, 81*time.Millisecond, m2.IdleDuration)
 | 
						|
}
 | 
						|
 | 
						|
func TestGaugeSampleMetric(t *testing.T) {
 | 
						|
	g1 := GaugeSampleMetric{}
 | 
						|
	g1.AddSample(10)
 | 
						|
	g1.AddSample(20)
 | 
						|
	g2 := GaugeSampleMetric{}
 | 
						|
	g2.Merge(g1)
 | 
						|
	g2.AddSample(60)
 | 
						|
	require.EqualValues(t, 30, g2.Mean())
 | 
						|
	require.EqualValues(t, 3, g2.count)
 | 
						|
	require.EqualValues(t, 15, g1.Mean())
 | 
						|
	require.EqualValues(t, 2, g1.count)
 | 
						|
}
 | 
						|
 | 
						|
func TestGaugeSampleMetricSubtract(t *testing.T) {
 | 
						|
	g1 := GaugeSampleMetric{}
 | 
						|
	g2 := GaugeSampleMetric{}
 | 
						|
	g1.AddSample(10)
 | 
						|
	g1.AddSample(20)
 | 
						|
	g1.AddSample(0)
 | 
						|
 | 
						|
	g2.AddSample(10)
 | 
						|
 | 
						|
	g1.Subtract(g2)
 | 
						|
 | 
						|
	require.Equal(t, int64(20), g1.sampleSum)
 | 
						|
	require.Equal(t, int64(2), g1.count)
 | 
						|
 | 
						|
}
 |