git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/netmap/node_info_test.go (about)

     1  package netmap
     2  
     3  import (
     4  	"testing"
     5  
     6  	"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestNodeInfo_SetAttribute(t *testing.T) {
    11  	var n NodeInfo
    12  
    13  	const key = "some key"
    14  	val := "some value"
    15  
    16  	require.Zero(t, n.Attribute(val))
    17  
    18  	n.SetAttribute(key, val)
    19  	require.Equal(t, val, n.Attribute(key))
    20  
    21  	val = "some other value"
    22  
    23  	n.SetAttribute(key, val)
    24  	require.Equal(t, val, n.Attribute(key))
    25  }
    26  
    27  func TestNodeState(t *testing.T) {
    28  	m := map[NodeState]netmap.NodeState{
    29  		UnspecifiedState: netmap.UnspecifiedState,
    30  		Online:           netmap.Online,
    31  		Offline:          netmap.Offline,
    32  		Maintenance:      netmap.Maintenance,
    33  	}
    34  
    35  	t.Run("from sdk to v2", func(t *testing.T) {
    36  		for stateSDK, stateV2 := range m {
    37  			require.Equal(t, stateV2, stateSDK.ToV2())
    38  		}
    39  	})
    40  
    41  	t.Run("from v2 to sdk", func(t *testing.T) {
    42  		for stateSDK, stateV2 := range m {
    43  			var state NodeState
    44  			state.FromV2(stateV2)
    45  			require.Equal(t, stateSDK, state)
    46  		}
    47  	})
    48  }
    49  
    50  func TestNodeInfo_Status(t *testing.T) {
    51  	t.Run("deprecated getters/setters", func(t *testing.T) {
    52  		var n NodeInfo
    53  
    54  		require.False(t, n.IsOnline())
    55  		require.False(t, n.IsOffline())
    56  		require.False(t, n.IsMaintenance())
    57  
    58  		n.SetOnline()
    59  		require.True(t, n.IsOnline())
    60  		require.False(t, n.IsOffline())
    61  		require.False(t, n.IsMaintenance())
    62  
    63  		n.SetOffline()
    64  		require.True(t, n.IsOffline())
    65  		require.False(t, n.IsOnline())
    66  		require.False(t, n.IsMaintenance())
    67  
    68  		n.SetMaintenance()
    69  		require.True(t, n.IsMaintenance())
    70  		require.False(t, n.IsOnline())
    71  		require.False(t, n.IsOffline())
    72  	})
    73  
    74  	t.Run("brand new getters/setters", func(t *testing.T) {
    75  		var n NodeInfo
    76  
    77  		require.False(t, n.Status().IsOnline())
    78  		require.False(t, n.Status().IsOffline())
    79  		require.False(t, n.Status().IsMaintenance())
    80  
    81  		n.SetStatus(Online)
    82  		require.True(t, n.Status().IsOnline())
    83  		require.False(t, n.Status().IsOffline())
    84  		require.False(t, n.Status().IsMaintenance())
    85  
    86  		n.SetStatus(Offline)
    87  		require.False(t, n.Status().IsOnline())
    88  		require.True(t, n.Status().IsOffline())
    89  		require.False(t, n.Status().IsMaintenance())
    90  
    91  		n.SetStatus(Maintenance)
    92  		require.False(t, n.Status().IsOnline())
    93  		require.False(t, n.Status().IsOffline())
    94  		require.True(t, n.Status().IsMaintenance())
    95  	})
    96  }
    97  
    98  func TestNodeInfo_ExternalAddr(t *testing.T) {
    99  	var n NodeInfo
   100  
   101  	require.Empty(t, n.ExternalAddresses())
   102  	require.Panics(t, func() { n.SetExternalAddresses() })
   103  
   104  	addr := []string{"1", "2", "3"}
   105  	n.SetExternalAddresses(addr[0])
   106  	require.Equal(t, addr[:1], n.ExternalAddresses())
   107  
   108  	n.SetExternalAddresses(addr[1:]...)
   109  	require.Equal(t, addr[1:], n.ExternalAddresses())
   110  }