github.com/MetalBlockchain/metalgo@v1.11.9/node/overridden_manager_test.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package node
     5  
     6  import (
     7  	"math"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/MetalBlockchain/metalgo/ids"
    13  	"github.com/MetalBlockchain/metalgo/snow/validators"
    14  )
    15  
    16  func TestOverriddenManager(t *testing.T) {
    17  	require := require.New(t)
    18  
    19  	nodeID0 := ids.GenerateTestNodeID()
    20  	nodeID1 := ids.GenerateTestNodeID()
    21  	subnetID0 := ids.GenerateTestID()
    22  	subnetID1 := ids.GenerateTestID()
    23  
    24  	m := validators.NewManager()
    25  	require.NoError(m.AddStaker(subnetID0, nodeID0, nil, ids.Empty, 1))
    26  	require.NoError(m.AddStaker(subnetID1, nodeID1, nil, ids.Empty, 1))
    27  
    28  	om := newOverriddenManager(subnetID0, m)
    29  	_, ok := om.GetValidator(subnetID0, nodeID0)
    30  	require.True(ok)
    31  	_, ok = om.GetValidator(subnetID0, nodeID1)
    32  	require.False(ok)
    33  	_, ok = om.GetValidator(subnetID1, nodeID0)
    34  	require.True(ok)
    35  	_, ok = om.GetValidator(subnetID1, nodeID1)
    36  	require.False(ok)
    37  
    38  	require.NoError(om.RemoveWeight(subnetID1, nodeID0, 1))
    39  	_, ok = om.GetValidator(subnetID0, nodeID0)
    40  	require.False(ok)
    41  	_, ok = om.GetValidator(subnetID0, nodeID1)
    42  	require.False(ok)
    43  	_, ok = om.GetValidator(subnetID1, nodeID0)
    44  	require.False(ok)
    45  	_, ok = om.GetValidator(subnetID1, nodeID1)
    46  	require.False(ok)
    47  }
    48  
    49  func TestOverriddenString(t *testing.T) {
    50  	require := require.New(t)
    51  
    52  	nodeID0 := ids.EmptyNodeID
    53  	nodeID1, err := ids.NodeIDFromString("NodeID-QLbz7JHiBTspS962RLKV8GndWFwdYhk6V")
    54  	require.NoError(err)
    55  
    56  	subnetID0, err := ids.FromString("TtF4d2QWbk5vzQGTEPrN48x6vwgAoAmKQ9cbp79inpQmcRKES")
    57  	require.NoError(err)
    58  	subnetID1, err := ids.FromString("2mcwQKiD8VEspmMJpL1dc7okQQ5dDVAWeCBZ7FWBFAbxpv3t7w")
    59  	require.NoError(err)
    60  
    61  	m := validators.NewManager()
    62  	require.NoError(m.AddStaker(subnetID0, nodeID0, nil, ids.Empty, 1))
    63  	require.NoError(m.AddStaker(subnetID0, nodeID1, nil, ids.Empty, math.MaxInt64-1))
    64  	require.NoError(m.AddStaker(subnetID1, nodeID1, nil, ids.Empty, 1))
    65  
    66  	om := newOverriddenManager(subnetID0, m)
    67  	expected := `Overridden Validator Manager (SubnetID = TtF4d2QWbk5vzQGTEPrN48x6vwgAoAmKQ9cbp79inpQmcRKES): Validator Manager: (Size = 2)
    68      Subnet[TtF4d2QWbk5vzQGTEPrN48x6vwgAoAmKQ9cbp79inpQmcRKES]: Validator Set: (Size = 2, Weight = 9223372036854775807)
    69          Validator[0]: NodeID-111111111111111111116DBWJs, 1
    70          Validator[1]: NodeID-QLbz7JHiBTspS962RLKV8GndWFwdYhk6V, 9223372036854775806
    71      Subnet[2mcwQKiD8VEspmMJpL1dc7okQQ5dDVAWeCBZ7FWBFAbxpv3t7w]: Validator Set: (Size = 1, Weight = 1)
    72          Validator[0]: NodeID-QLbz7JHiBTspS962RLKV8GndWFwdYhk6V, 1`
    73  	result := om.String()
    74  	require.Equal(expected, result)
    75  }