storj/lib/uplink/uplink_test.go
Simon Guindon 91f0adef10
Add the ability to set dial and request timeouts from the cmd/uplink CLI to libuplink. (#2439)
* Added the ability to pass timeout settings from cmd/uplink to libuplink.

* Removed commented out code.

* Updated 2min timeouts for the uplink CLI.

* Removed comment.

* Made transport defaultDialTimeout and defaultRequestTimeout public

* Added comments to describe where these defaults apply.

* Added a new defaults to libuplink and added tests.

* Added a new defaults to libuplink and added tests.
2019-07-18 11:13:59 -04:00

68 lines
2.1 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"
"storj.io/storj/pkg/transport"
)
// 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.Equal(t, 20*time.Second, client.cfg.Volatile.RequestTimeout)
// Assert the values propagate correctly all the way down to the transport layer.
trans, ok := client.tc.(*transport.Transport)
assert.Equal(t, true, ok)
assert.Equal(t, 20*time.Second, trans.Timeouts().Dial)
assert.Equal(t, 20*time.Second, trans.Timeouts().Request)
}
// 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.RequestTimeout = 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.Equal(t, 120*time.Second, client.cfg.Volatile.RequestTimeout)
// Assert the values propagate correctly all the way down to the transport layer.
trans, ok := client.tc.(*transport.Transport)
assert.Equal(t, true, ok)
assert.Equal(t, 120*time.Second, trans.Timeouts().Dial)
assert.Equal(t, 120*time.Second, trans.Timeouts().Request)
}