storj/lib/uplink/uplink_test.go
JT Olio 2c6fa3c5f8
pkg/rpc: remove read/write deadlines as a mechanism for request timeouts (#3335)
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
2019-10-22 17:57:24 -06:00

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)
}