mirror of
https://github.com/tendermint/tendermint.git
synced 2026-02-04 02:52:07 +00:00
The main (and minor) win of this PR is that the transport is fully the responsibility of the router and the node doesn't need to be responsible for its lifecylce.
56 lines
1.7 KiB
Go
56 lines
1.7 KiB
Go
package p2p
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/tendermint/tendermint/libs/log"
|
|
"github.com/tendermint/tendermint/types"
|
|
)
|
|
|
|
func TestRouter_ConstructQueueFactory(t *testing.T) {
|
|
t.Run("ValidateOptionsPopulatesDefaultQueue", func(t *testing.T) {
|
|
opts := RouterOptions{}
|
|
require.NoError(t, opts.Validate())
|
|
require.Equal(t, "fifo", opts.QueueType)
|
|
})
|
|
t.Run("Default", func(t *testing.T) {
|
|
require.Zero(t, os.Getenv("TM_P2P_QUEUE"))
|
|
opts := RouterOptions{}
|
|
r, err := NewRouter(log.NewNopLogger(), nil, types.NodeInfo{}, nil, nil, nil, nil, opts)
|
|
require.NoError(t, err)
|
|
_, ok := r.queueFactory(1).(*fifoQueue)
|
|
require.True(t, ok)
|
|
})
|
|
t.Run("Fifo", func(t *testing.T) {
|
|
opts := RouterOptions{QueueType: queueTypeFifo}
|
|
r, err := NewRouter(log.NewNopLogger(), nil, types.NodeInfo{}, nil, nil, nil, nil, opts)
|
|
require.NoError(t, err)
|
|
_, ok := r.queueFactory(1).(*fifoQueue)
|
|
require.True(t, ok)
|
|
})
|
|
t.Run("Priority", func(t *testing.T) {
|
|
opts := RouterOptions{QueueType: queueTypePriority}
|
|
r, err := NewRouter(log.NewNopLogger(), nil, types.NodeInfo{}, nil, nil, nil, nil, opts)
|
|
require.NoError(t, err)
|
|
q, ok := r.queueFactory(1).(*pqScheduler)
|
|
require.True(t, ok)
|
|
defer q.close()
|
|
})
|
|
t.Run("NonExistant", func(t *testing.T) {
|
|
opts := RouterOptions{QueueType: "fast"}
|
|
_, err := NewRouter(log.NewNopLogger(), nil, types.NodeInfo{}, nil, nil, nil, nil, opts)
|
|
require.Error(t, err)
|
|
require.Contains(t, err.Error(), "fast")
|
|
})
|
|
t.Run("InternalsSafeWhenUnspecified", func(t *testing.T) {
|
|
r := &Router{}
|
|
require.Zero(t, r.options.QueueType)
|
|
|
|
fn, err := r.createQueueFactory()
|
|
require.Error(t, err)
|
|
require.Nil(t, fn)
|
|
})
|
|
}
|