frostfs-node/pkg/network/group_test.go

70 lines
1.5 KiB
Go

package network
import (
"sort"
"testing"
"github.com/stretchr/testify/require"
)
func TestAddressGroup_FromStringSlice(t *testing.T) {
addrs := []string{
"/dns4/node1.frostfs/tcp/8080",
"/dns4/node2.frostfs/tcp/1234/tls",
}
expected := make(AddressGroup, len(addrs))
for i := range addrs {
expected[i] = Address{buildMultiaddr(addrs[i], t)}
}
var ag AddressGroup
t.Run("empty", func(t *testing.T) {
require.Error(t, ag.FromStringSlice(nil))
})
require.NoError(t, ag.FromStringSlice(addrs))
require.Equal(t, expected, ag)
t.Run("error is returned, group is unchanged", func(t *testing.T) {
require.Error(t, ag.FromStringSlice([]string{"invalid"}))
require.Equal(t, expected, ag)
})
}
func TestAddressGroup_FromIterator(t *testing.T) {
addrs := testIterator{
"/dns4/node1.frostfs/tcp/8080",
"/dns4/node2.frostfs/tcp/1234/tls",
}
expected := make(AddressGroup, len(addrs))
for i := range addrs {
expected[i] = Address{buildMultiaddr(addrs[i], t)}
}
sort.Sort(expected)
var ag AddressGroup
t.Run("empty", func(t *testing.T) {
require.Error(t, ag.FromIterator(testIterator{}))
})
require.NoError(t, ag.FromIterator(addrs))
require.Equal(t, expected, ag)
t.Run("error is returned, group is unchanged", func(t *testing.T) {
require.Error(t, ag.FromIterator(testIterator{"invalid"}))
require.Equal(t, expected, ag)
})
}
type testIterator []string
func (t testIterator) IterateAddresses(f func(string) bool) {
for i := range t {
f(t[i])
}
}
func (t testIterator) NumberOfAddresses() int {
return len(t)
}