mirror of
https://github.com/luxfi/cli.git
synced 2026-10-30 17:01:20 +00:00
97 lines
2.6 KiB
Go
97 lines
2.6 KiB
Go
// Copyright (C) 2022, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
package subnetcmd
|
|
|
|
import (
|
|
"io"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/luxfi/cli/v2/internal/mocks"
|
|
"github.com/luxfi/cli/v2/pkg/ux"
|
|
"github.com/luxfi/node/v2/v2/api/info"
|
|
"github.com/luxfi/ids"
|
|
"github.com/luxfi/node/v2/v2/utils/json"
|
|
luxlog "github.com/luxfi/log"
|
|
"github.com/luxfi/node/v2/v2/vms/platformvm"
|
|
"github.com/luxfi/node/v2/v2/vms/platformvm/api"
|
|
"github.com/olekukonko/tablewriter"
|
|
"github.com/stretchr/testify/mock"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestStats(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
ux.NewUserLog(luxlog.NewNoOpLogger(), io.Discard)
|
|
|
|
pClient := &mocks.PClient{}
|
|
iClient := &mocks.InfoClient{}
|
|
|
|
localNodeID := ids.GenerateTestNodeID()
|
|
subnetID := ids.GenerateTestID()
|
|
|
|
startTime := time.Now()
|
|
endTime := time.Now()
|
|
weight := uint64(42)
|
|
conn := true
|
|
|
|
remaining := ux.FormatDuration(endTime.Sub(startTime))
|
|
|
|
reply := []platformvm.ClientPermissionlessValidator{
|
|
{
|
|
ClientStaker: platformvm.ClientStaker{
|
|
StartTime: uint64(startTime.Unix()),
|
|
EndTime: uint64(endTime.Unix()),
|
|
NodeID: localNodeID,
|
|
Weight: weight,
|
|
},
|
|
Connected: &conn,
|
|
},
|
|
}
|
|
|
|
pClient.On("GetCurrentValidators", mock.Anything, mock.Anything, mock.Anything).Return(reply, nil)
|
|
iClient.On("GetNodeID", mock.Anything).Return(localNodeID, nil, nil)
|
|
iClient.On("GetNodeVersion", mock.Anything).Return(&info.GetNodeVersionReply{
|
|
VMVersions: map[string]string{
|
|
subnetID.String(): "0.1.23",
|
|
},
|
|
}, nil)
|
|
|
|
table := tablewriter.NewWriter(io.Discard)
|
|
|
|
expectedVerStr := subnetID.String() + ": 0.1.23\n"
|
|
|
|
rows, err := buildCurrentValidatorStats(pClient, iClient, table, subnetID)
|
|
table.Append(rows[0])
|
|
|
|
require.NoError(err)
|
|
require.Equal(1, table.NumLines())
|
|
require.Equal(localNodeID.String(), rows[0][0])
|
|
require.Equal("true", rows[0][1])
|
|
require.Equal("42", rows[0][2])
|
|
require.Equal(remaining, rows[0][3])
|
|
require.Equal(expectedVerStr, rows[0][4])
|
|
|
|
pendingV := make([]interface{}, 1)
|
|
|
|
jweight := json.Uint64(weight)
|
|
|
|
pendingV[0] = api.PermissionlessValidator{
|
|
Staker: api.Staker{
|
|
StartTime: json.Uint64(uint64(startTime.Unix())),
|
|
EndTime: json.Uint64(uint64(endTime.Unix())),
|
|
NodeID: localNodeID,
|
|
Weight: jweight,
|
|
},
|
|
}
|
|
|
|
// GetPendingValidators is not currently implemented in platformvm client
|
|
// So this test will return empty results
|
|
table = tablewriter.NewWriter(io.Discard)
|
|
rows, err = buildPendingValidatorStats(pClient, iClient, table, subnetID)
|
|
|
|
require.NoError(err)
|
|
require.Equal(0, len(rows)) // No pending validators returned since API is not implemented
|
|
}
|