mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-21 10:27:46 +08:00
add a test case for libp2p option prioritization
This commit is contained in:
parent
ec46f1e6e4
commit
3674b662db
58
core/node/libp2p/libp2p_test.go
Normal file
58
core/node/libp2p/libp2p_test.go
Normal file
@ -0,0 +1,58 @@
|
||||
package libp2p
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"testing"
|
||||
|
||||
"github.com/libp2p/go-libp2p"
|
||||
ma "github.com/multiformats/go-multiaddr"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestPrioritize(t *testing.T) {
|
||||
// The option is encoded into the port number of a TCP multiaddr.
|
||||
// By extracting the port numbers obtained from the applied option, we can make sure that
|
||||
// prioritization sorted the options correctly.
|
||||
newOption := func(num int) libp2p.Option {
|
||||
return func(cfg *libp2p.Config) error {
|
||||
cfg.ListenAddrs = append(cfg.ListenAddrs, ma.StringCast(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", num)))
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
extractNums := func(cfg *libp2p.Config) []int {
|
||||
addrs := cfg.ListenAddrs
|
||||
nums := make([]int, 0, len(addrs))
|
||||
for _, addr := range addrs {
|
||||
_, comp := ma.SplitLast(addr)
|
||||
num, err := strconv.Atoi(comp.Value())
|
||||
require.NoError(t, err)
|
||||
nums = append(nums, num)
|
||||
}
|
||||
return nums
|
||||
}
|
||||
|
||||
t.Run("using default priorities", func(t *testing.T) {
|
||||
opts := []priorityOption{
|
||||
{defaultPriority: 200, opt: newOption(200)},
|
||||
{defaultPriority: 1, opt: newOption(1)},
|
||||
{defaultPriority: 300, opt: newOption(300)},
|
||||
}
|
||||
var cfg libp2p.Config
|
||||
require.NoError(t, prioritizeOptions(opts)(&cfg))
|
||||
require.Equal(t, extractNums(&cfg), []int{1, 200, 300})
|
||||
})
|
||||
|
||||
t.Run("using custom priorities", func(t *testing.T) {
|
||||
opts := []priorityOption{
|
||||
{defaultPriority: 200, priority: 1, opt: newOption(1)},
|
||||
{defaultPriority: 1, priority: 300, opt: newOption(300)},
|
||||
{defaultPriority: 300, priority: 20, opt: newOption(20)},
|
||||
}
|
||||
var cfg libp2p.Config
|
||||
require.NoError(t, prioritizeOptions(opts)(&cfg))
|
||||
require.Equal(t, extractNums(&cfg), []int{1, 20, 300})
|
||||
})
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user