mukan-ignite/ignite/pkg/availableport/availableport_test.go
Mukan Erkin Törük c32551b6f7
Some checks failed
Docs Deploy / build_and_deploy (push) Has been cancelled
Generate Docs / cli (push) Has been cancelled
Generate Config Doc / cli (push) Has been cancelled
Go formatting / go-formatting (push) Has been cancelled
Check links / markdown-link-check (push) Has been cancelled
Integration / pre-test (push) Has been cancelled
Integration / test on (push) Has been cancelled
Integration / status (push) Has been cancelled
Lint / Lint Go code (push) Has been cancelled
Test / test (ubuntu-latest) (push) Has been cancelled
refactor: replace all github.com upstream refs with git.cw.tr/mukan-network
2026-05-11 03:36:24 +03:00

77 lines
1.7 KiB
Go

package availableport_test
import (
"testing"
"github.com/stretchr/testify/require"
"git.cw.tr/mukan-network/mukan-ignite/ignite/pkg/availableport"
"git.cw.tr/mukan-network/mukan-ignite/ignite/pkg/errors"
)
func TestFind(t *testing.T) {
tests := []struct {
name string
n uint
options []availableport.Options
err error
}{
{
name: "test 10 ports",
n: 10,
},
{
name: "invalid port range",
n: 10,
options: []availableport.Options{
availableport.WithMinPort(5),
availableport.WithMaxPort(1),
},
err: errors.Errorf("invalid ports range: max < min (1 < 5)"),
},
{
name: "invalid maximum port range",
n: 10,
options: []availableport.Options{
availableport.WithMinPort(55001),
availableport.WithMaxPort(1),
},
err: errors.Errorf("invalid ports range: max < min (1 < 55001)"),
},
{
name: "only invalid maximum port range",
n: 10,
options: []availableport.Options{
availableport.WithMaxPort(43999),
},
err: errors.Errorf("invalid ports range: max < min (43999 < 44000)"),
},
{
name: "with randomizer",
n: 100,
options: []availableport.Options{
availableport.WithMinPort(100),
availableport.WithMaxPort(200),
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := availableport.Find(tt.n, tt.options...)
if tt.err != nil {
require.Error(t, err)
require.True(t, errors.Is(tt.err, err))
return
}
require.NoError(t, err)
require.Len(t, got, int(tt.n))
seen := make(map[uint]struct{})
for _, val := range got {
_, ok := seen[val]
require.Falsef(t, ok, "duplicated port %d", val)
seen[val] = struct{}{}
}
})
}
}