frostfs-node/pkg/network/group_test.go
Evgenii Stratonikov 2d1232ce6d
All checks were successful
Vulncheck / Vulncheck (push) Successful in 1m25s
Build / Build Components (push) Successful in 1m57s
Pre-commit hooks / Pre-commit (push) Successful in 1m58s
Tests and linters / Run gofumpt (push) Successful in 3m50s
Tests and linters / Staticcheck (push) Successful in 4m21s
Tests and linters / Lint (push) Successful in 4m25s
Tests and linters / gopls check (push) Successful in 4m27s
Tests and linters / Tests (push) Successful in 4m44s
OCI image / Build container images (push) Successful in 5m19s
Tests and linters / Tests with -race (push) Successful in 5m32s
[#1689] network,core/netmap: Replace Iterate*() functions with iterators
Change-Id: I4842a3160d74c56d99ea9465d4be2f0662080605
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2025-04-15 14:47:32 +00:00

69 lines
1.5 KiB
Go

package network
import (
"iter"
"slices"
"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) Addresses() iter.Seq[string] {
return slices.Values(t)
}
func (t testIterator) NumberOfAddresses() int {
return len(t)
}