github.com/MetalBlockchain/metalgo@v1.11.9/snow/engine/common/tracker/peers_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 tracker
     5  
     6  import (
     7  	"context"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/MetalBlockchain/metalgo/ids"
    13  	"github.com/MetalBlockchain/metalgo/version"
    14  )
    15  
    16  func TestPeers(t *testing.T) {
    17  	require := require.New(t)
    18  
    19  	nodeID := ids.GenerateTestNodeID()
    20  
    21  	p := NewPeers()
    22  
    23  	require.Zero(p.ConnectedWeight())
    24  
    25  	p.OnValidatorAdded(nodeID, nil, ids.Empty, 5)
    26  	require.Zero(p.ConnectedWeight())
    27  
    28  	require.NoError(p.Connected(context.Background(), nodeID, version.CurrentApp))
    29  	require.Equal(uint64(5), p.ConnectedWeight())
    30  
    31  	p.OnValidatorWeightChanged(nodeID, 5, 10)
    32  	require.Equal(uint64(10), p.ConnectedWeight())
    33  
    34  	p.OnValidatorRemoved(nodeID, 10)
    35  	require.Zero(p.ConnectedWeight())
    36  
    37  	p.OnValidatorAdded(nodeID, nil, ids.Empty, 5)
    38  	require.Equal(uint64(5), p.ConnectedWeight())
    39  
    40  	require.NoError(p.Disconnected(context.Background(), nodeID))
    41  	require.Zero(p.ConnectedWeight())
    42  }