rpc: improve cancel test (#20752)

This is supposed to fix the occasional failures in 
TestCancel* on Travis CI.
This commit is contained in:
Felix Lange 2020-03-12 11:24:36 +01:00 committed by GitHub
parent 0bdb21f0cb
commit b1efff659e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 8 deletions

View File

@ -179,7 +179,7 @@ func testClientCancel(transport string, t *testing.T) {
var ( var (
wg sync.WaitGroup wg sync.WaitGroup
nreqs = 10 nreqs = 10
ncallers = 6 ncallers = 10
) )
caller := func(index int) { caller := func(index int) {
defer wg.Done() defer wg.Done()
@ -200,14 +200,16 @@ func testClientCancel(transport string, t *testing.T) {
// deadline. // deadline.
ctx, cancel = context.WithTimeout(context.Background(), timeout) ctx, cancel = context.WithTimeout(context.Background(), timeout)
} }
// Now perform a call with the context. // Now perform a call with the context.
// The key thing here is that no call will ever complete successfully. // The key thing here is that no call will ever complete successfully.
sleepTime := maxContextCancelTimeout + 20*time.Millisecond err := client.CallContext(ctx, nil, "test_block")
err := client.CallContext(ctx, nil, "test_sleep", sleepTime) switch {
if err != nil { case err == nil:
log.Debug(fmt.Sprint("got expected error:", err)) _, hasDeadline := ctx.Deadline()
} else { t.Errorf("no error for call with %v wait time (deadline: %v)", timeout, hasDeadline)
t.Errorf("no error for call with %v wait time", timeout) // default:
// t.Logf("got expected error with %v wait time: %v", timeout, err)
} }
cancel() cancel()
} }

View File

@ -45,7 +45,7 @@ func TestServerRegisterName(t *testing.T) {
t.Fatalf("Expected service calc to be registered") t.Fatalf("Expected service calc to be registered")
} }
wantCallbacks := 7 wantCallbacks := 8
if len(svc.callbacks) != wantCallbacks { if len(svc.callbacks) != wantCallbacks {
t.Errorf("Expected %d callbacks for service 'service', got %d", wantCallbacks, len(svc.callbacks)) t.Errorf("Expected %d callbacks for service 'service', got %d", wantCallbacks, len(svc.callbacks))
} }

View File

@ -77,6 +77,11 @@ func (s *testService) Sleep(ctx context.Context, duration time.Duration) {
time.Sleep(duration) time.Sleep(duration)
} }
func (s *testService) Block(ctx context.Context) error {
<-ctx.Done()
return errors.New("context canceled in testservice_block")
}
func (s *testService) Rets() (string, error) { func (s *testService) Rets() (string, error) {
return "", nil return "", nil
} }