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
Change-Id: I4842a3160d74c56d99ea9465d4be2f0662080605 Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
69 lines
1.5 KiB
Go
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)
|
|
}
|