merged with fixes
This commit is contained in:
parent
a9e758b712
commit
2f1818d656
176 changed files with 9000 additions and 907 deletions
72
internal/store/redisstore/redis_test.go
Normal file
72
internal/store/redisstore/redis_test.go
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
package redisstore
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestOpenBoundsStalledRedisPing(t *testing.T) {
|
||||
address, stop := startStalledRedis(t)
|
||||
defer stop()
|
||||
|
||||
started := time.Now()
|
||||
client, err := open(context.Background(), address, "", 0, 50*time.Millisecond)
|
||||
if client != nil {
|
||||
_ = client.Close()
|
||||
}
|
||||
if err == nil {
|
||||
t.Fatal("open() succeeded against a stalled Redis endpoint")
|
||||
}
|
||||
if elapsed := time.Since(started); elapsed > time.Second {
|
||||
t.Fatalf("open() took %s, want at most 1s", elapsed)
|
||||
}
|
||||
}
|
||||
|
||||
func TestOpenPreservesEarlierCallerDeadline(t *testing.T) {
|
||||
address, stop := startStalledRedis(t)
|
||||
defer stop()
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
|
||||
defer cancel()
|
||||
started := time.Now()
|
||||
client, err := open(ctx, address, "", 0, time.Second)
|
||||
if client != nil {
|
||||
_ = client.Close()
|
||||
}
|
||||
if err == nil {
|
||||
t.Fatal("open() succeeded against a stalled Redis endpoint")
|
||||
}
|
||||
if elapsed := time.Since(started); elapsed > time.Second {
|
||||
t.Fatalf("open() took %s, want at most 1s", elapsed)
|
||||
}
|
||||
}
|
||||
|
||||
func startStalledRedis(t *testing.T) (string, func()) {
|
||||
t.Helper()
|
||||
listener, err := net.Listen("tcp", "127.0.0.1:0")
|
||||
if err != nil {
|
||||
t.Fatalf("listen: %v", err)
|
||||
}
|
||||
stop := make(chan struct{})
|
||||
done := make(chan struct{})
|
||||
go func() {
|
||||
defer close(done)
|
||||
for {
|
||||
conn, err := listener.Accept()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
go func() {
|
||||
<-stop
|
||||
_ = conn.Close()
|
||||
}()
|
||||
}
|
||||
}()
|
||||
return listener.Addr().String(), func() {
|
||||
close(stop)
|
||||
_ = listener.Close()
|
||||
<-done
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue