|
@@ -30,6 +30,7 @@ import (
|
|
|
"github.com/coreos/etcd/pkg/testutil"
|
|
"github.com/coreos/etcd/pkg/testutil"
|
|
|
"golang.org/x/net/context"
|
|
"golang.org/x/net/context"
|
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc"
|
|
|
|
|
+ "google.golang.org/grpc/metadata"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
type watcherTest func(*testing.T, *watchctx)
|
|
type watcherTest func(*testing.T, *watchctx)
|
|
@@ -875,8 +876,10 @@ func TestWatchCancelOnServer(t *testing.T) {
|
|
|
|
|
|
|
|
cancels := make([]context.CancelFunc, numWatches)
|
|
cancels := make([]context.CancelFunc, numWatches)
|
|
|
for i := 0; i < numWatches; i++ {
|
|
for i := 0; i < numWatches; i++ {
|
|
|
- // use WithTimeout to force separate streams in client
|
|
|
|
|
- ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
|
|
|
|
|
|
+ // force separate streams in client
|
|
|
|
|
+ md := metadata.Pairs("some-key", fmt.Sprintf("%d", i))
|
|
|
|
|
+ mctx := metadata.NewOutgoingContext(context.Background(), md)
|
|
|
|
|
+ ctx, cancel := context.WithCancel(mctx)
|
|
|
cancels[i] = cancel
|
|
cancels[i] = cancel
|
|
|
w := client.Watch(ctx, fmt.Sprintf("%d", i), clientv3.WithCreatedNotify())
|
|
w := client.Watch(ctx, fmt.Sprintf("%d", i), clientv3.WithCreatedNotify())
|
|
|
<-w
|
|
<-w
|
|
@@ -933,12 +936,12 @@ func testWatchOverlapContextCancel(t *testing.T, f func(*integration.ClusterV3))
|
|
|
clus := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1})
|
|
clus := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1})
|
|
|
defer clus.Terminate(t)
|
|
defer clus.Terminate(t)
|
|
|
|
|
|
|
|
- // each unique context "%v" has a unique grpc stream
|
|
|
|
|
n := 100
|
|
n := 100
|
|
|
ctxs, ctxc := make([]context.Context, 5), make([]chan struct{}, 5)
|
|
ctxs, ctxc := make([]context.Context, 5), make([]chan struct{}, 5)
|
|
|
for i := range ctxs {
|
|
for i := range ctxs {
|
|
|
- // make "%v" unique
|
|
|
|
|
- ctxs[i] = context.WithValue(context.TODO(), "key", i)
|
|
|
|
|
|
|
+ // make unique stream
|
|
|
|
|
+ md := metadata.Pairs("some-key", fmt.Sprintf("%d", i))
|
|
|
|
|
+ ctxs[i] = metadata.NewOutgoingContext(context.Background(), md)
|
|
|
// limits the maximum number of outstanding watchers per stream
|
|
// limits the maximum number of outstanding watchers per stream
|
|
|
ctxc[i] = make(chan struct{}, 2)
|
|
ctxc[i] = make(chan struct{}, 2)
|
|
|
}
|
|
}
|