forked from TrueCloudLab/frostfs-node
70 lines
1.5 KiB
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)
|
|
}
|