Files
tidb/dumpling/export/status_test.go

56 lines
1.7 KiB
Go

// Copyright 2021 PingCAP, Inc. Licensed under Apache-2.0.
package export
import (
"math"
"testing"
"time"
"github.com/stretchr/testify/require"
)
func TestGetParameters(t *testing.T) {
conf := defaultConfigForTest(t)
d := &Dumper{conf: conf, speedRecorder: NewSpeedRecorder()}
d.metrics = newMetrics(conf.PromFactory, nil)
mid := d.GetStatus()
require.EqualValues(t, float64(0), mid.CompletedTables)
require.EqualValues(t, float64(0), mid.FinishedBytes)
require.EqualValues(t, float64(0), mid.FinishedRows)
require.EqualValues(t, float64(0), mid.EstimateTotalRows)
AddCounter(d.metrics.finishedTablesCounter, 10)
AddGauge(d.metrics.finishedSizeGauge, 20)
AddGauge(d.metrics.finishedRowsGauge, 30)
AddCounter(d.metrics.estimateTotalRowsCounter, 40)
mid = d.GetStatus()
require.EqualValues(t, float64(10), mid.CompletedTables)
require.EqualValues(t, float64(20), mid.FinishedBytes)
require.EqualValues(t, float64(30), mid.FinishedRows)
require.EqualValues(t, float64(40), mid.EstimateTotalRows)
}
func TestSpeedRecorder(t *testing.T) {
testCases := []struct {
spentTime int64
finished float64
expected float64
}{
{spentTime: 1, finished: 100, expected: 100},
{spentTime: 2, finished: 200, expected: 50},
// already finished, will return last speed
{spentTime: 3, finished: 200, expected: 50},
}
speedRecorder := NewSpeedRecorder()
for _, tc := range testCases {
time.Sleep(time.Duration(tc.spentTime) * time.Second)
recentSpeed := speedRecorder.GetSpeed(tc.finished)
if math.Abs(tc.expected-recentSpeed)/tc.expected > 0.1 {
require.FailNow(t, "speed is unexpected", "expected: %5.2f, recent: %5.2f", tc.expected, recentSpeed)
}
}
}