56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
package monitor_test
|
|
|
|
import (
|
|
"os"
|
|
"reflect"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/influxdata/influxdb/v2/v1/monitor"
|
|
)
|
|
|
|
func TestDiagnostics_System(t *testing.T) {
|
|
s := monitor.New(nil, monitor.Config{})
|
|
if err := s.Open(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
defer s.Close()
|
|
|
|
d, err := s.Diagnostics()
|
|
if err != nil {
|
|
t.Errorf("unexpected error: %s", err)
|
|
return
|
|
}
|
|
|
|
diags, ok := d["system"]
|
|
if !ok {
|
|
t.Fatal("no diagnostics found for 'system'")
|
|
}
|
|
|
|
if got, exp := diags.Columns, []string{"PID", "currentTime", "started", "uptime"}; !reflect.DeepEqual(got, exp) {
|
|
t.Errorf("unexpected columns: got=%v exp=%v", got, exp)
|
|
}
|
|
|
|
// So this next part is nearly impossible to match, so just check if they look correct.
|
|
if exp, got := 1, len(diags.Rows); exp != got {
|
|
t.Fatalf("expected exactly %d row, got %d", exp, got)
|
|
}
|
|
|
|
if got, exp := diags.Rows[0][0].(int), os.Getpid(); got != exp {
|
|
t.Errorf("unexpected pid: got=%v exp=%v", got, exp)
|
|
}
|
|
|
|
currentTime := diags.Rows[0][1].(time.Time)
|
|
startTime := diags.Rows[0][2].(time.Time)
|
|
if !startTime.Before(currentTime) {
|
|
t.Errorf("start time is not before the current time: %s (start), %s (current)", startTime, currentTime)
|
|
}
|
|
|
|
uptime, err := time.ParseDuration(diags.Rows[0][3].(string))
|
|
if err != nil {
|
|
t.Errorf("unable to parse uptime duration: %s: %s", diags.Rows[0][3], err)
|
|
} else if got, exp := uptime, currentTime.Sub(startTime); got != exp {
|
|
t.Errorf("uptime does not match the difference between start time and current time: got=%v exp=%v", got, exp)
|
|
}
|
|
}
|