2c6fa3c5f8
libuplink was incorrectly setting timeouts to 10 seconds still, but should have been at least 10 minutes. the order sender was setting them to 1 hour. we don't want timeouts in uplink-side logic as it establishes a minimum rate on tcp streams. instead of all of this, just use tcp keep alive. tcp keep alive packets are sent every 15 seconds and if the peer stops responding the connection dies. this is enabled by default with go. this will kill tcp connections when they stop working. Change-Id: I3d7ad49f71950b3eb43044eedf4b17993116045b
58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
// Copyright (C) 2019 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package uplink
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"storj.io/storj/internal/testcontext"
|
|
)
|
|
|
|
// TestUplinkConfigDefaults tests that the uplink configuration gets the correct defaults applied
|
|
// and that the defaults get applied all the way down to the transport layer.
|
|
func TestUplinkConfigDefaultTimeouts(t *testing.T) {
|
|
ctx := testcontext.New(t)
|
|
cfg := &Config{}
|
|
client, err := NewUplink(ctx, cfg)
|
|
|
|
assert.NoError(t, err)
|
|
assert.NotNil(t, client)
|
|
|
|
// Assert the lib uplink configuration gets the correct defaults applied.
|
|
assert.Equal(t, 20*time.Second, client.cfg.Volatile.DialTimeout)
|
|
|
|
// Assert the values propagate correctly all the way down to the transport layer.
|
|
assert.Equal(t, 20*time.Second, client.dialer.DialTimeout)
|
|
}
|
|
|
|
// TestUplinkConfigSetTimeouts tests that the uplink configuration settings properly override
|
|
// the defaults all the way down to the transport layer.
|
|
func TestUplinkConfigSetTimeouts(t *testing.T) {
|
|
ctx := testcontext.New(t)
|
|
|
|
cfg := &Config{}
|
|
cfg.Volatile.DialTimeout = 120 * time.Second
|
|
cfg.Volatile.TLS = struct {
|
|
SkipPeerCAWhitelist bool
|
|
PeerCAWhitelistPath string
|
|
}{
|
|
SkipPeerCAWhitelist: false,
|
|
PeerCAWhitelistPath: "",
|
|
}
|
|
|
|
client, err := NewUplink(ctx, cfg)
|
|
|
|
assert.NoError(t, err)
|
|
assert.NotNil(t, client)
|
|
|
|
// Assert the lib uplink configuration gets the correct values applied.
|
|
assert.Equal(t, 120*time.Second, client.cfg.Volatile.DialTimeout)
|
|
|
|
// Assert the values propagate correctly all the way down to the transport layer.
|
|
assert.Equal(t, 120*time.Second, client.dialer.DialTimeout)
|
|
}
|