frostfs-sdk-go/netmap/netmap_test.go

74 lines
1.5 KiB
Go
Raw Normal View History

package netmap_test
import (
"bytes"
"testing"
v2netmap "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/api/netmap"
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/netmap"
netmaptest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/netmap/test"
"github.com/stretchr/testify/require"
)
func TestNetMapNodes(t *testing.T) {
var nm netmap.NetMap
require.Empty(t, nm.Nodes())
nodes := []netmap.NodeInfo{netmaptest.NodeInfo(), netmaptest.NodeInfo()}
nm.SetNodes(nodes)
require.ElementsMatch(t, nodes, nm.Nodes())
nodesV2 := make([]v2netmap.NodeInfo, len(nodes))
for i := range nodes {
nodes[i].WriteToV2(&nodesV2[i])
}
var m v2netmap.NetMap
nm.WriteToV2(&m)
require.ElementsMatch(t, nodesV2, m.Nodes())
}
func TestNetMap_SetEpoch(t *testing.T) {
var nm netmap.NetMap
require.Zero(t, nm.Epoch())
const e = 158
nm.SetEpoch(e)
require.EqualValues(t, e, nm.Epoch())
var m v2netmap.NetMap
nm.WriteToV2(&m)
require.EqualValues(t, e, m.Epoch())
}
func TestNetMap_Clone(t *testing.T) {
nm := new(netmap.NetMap)
nm.SetEpoch(1)
var ni netmap.NodeInfo
ni.SetPublicKey([]byte{1, 2, 3})
nm.SetNodes([]netmap.NodeInfo{ni})
clone := nm.Clone()
require.True(t, clone != nm)
require.True(t, &(clone.Nodes()[0]) != &(nm.Nodes()[0]))
var clonev2 v2netmap.NetMap
clone.WriteToV2(&clonev2)
var bufClone []byte
bufClone = clonev2.StableMarshal(bufClone)
var nmv2 v2netmap.NetMap
nm.WriteToV2(&nmv2)
var bufNM []byte
bufNM = nmv2.StableMarshal(bufNM)
require.True(t, bytes.Equal(bufClone, bufNM))
}