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 }