Add test for read timeout option (#877)

Add test for ReadTimeout option
This commit is contained in:
andriikushch 2018-10-05 08:46:29 +02:00 committed by Vladimir Mihailenco
parent ae8fdc56f3
commit b834145dc7
2 changed files with 26 additions and 1 deletions

View File

@ -48,7 +48,7 @@ type Options struct {
// Default is 5 seconds. // Default is 5 seconds.
DialTimeout time.Duration DialTimeout time.Duration
// Timeout for socket reads. If reached, commands will fail // Timeout for socket reads. If reached, commands will fail
// with a timeout instead of blocking. // with a timeout instead of blocking. Use value -1 for no timeout and 0 for default.
// Default is 3 seconds. // Default is 3 seconds.
ReadTimeout time.Duration ReadTimeout time.Duration
// Timeout for socket writes. If reached, commands will fail // Timeout for socket writes. If reached, commands will fail

View File

@ -5,6 +5,7 @@ package redis
import ( import (
"errors" "errors"
"testing" "testing"
"time"
) )
func TestParseURL(t *testing.T) { func TestParseURL(t *testing.T) {
@ -92,3 +93,27 @@ func TestParseURL(t *testing.T) {
}) })
} }
} }
// Test ReadTimeout option initialization, including special values -1 and 0.
// And also test behaviour of WriteTimeout option, when it is not explicitly set and use
// ReadTimeout value.
func TestReadTimeoutOptions(t *testing.T) {
testDataInputOutputMap := map[time.Duration]time.Duration{
-1: 0 * time.Second,
0: 3 * time.Second,
1: 1 * time.Nanosecond,
3: 3 * time.Nanosecond,
}
for in, out := range testDataInputOutputMap {
o := &Options{ReadTimeout: in}
o.init()
if o.ReadTimeout != out {
t.Errorf("got %d instead of %d as ReadTimeout option", o.ReadTimeout, out)
}
if o.WriteTimeout != o.ReadTimeout {
t.Errorf("got %d instead of %d as WriteTimeout option", o.WriteTimeout, o.ReadTimeout)
}
}
}