integration/clientv3: fix 4 API misusage in test functions

release-3.5
Ziheng Liu 2020-01-30 15:17:56 -05:00
parent 53f15caf73
commit f00394e384
4 changed files with 33 additions and 13 deletions

View File

@ -16,6 +16,7 @@ package integration
import (
"context"
"fmt"
"reflect"
"sort"
"sync"
@ -392,18 +393,22 @@ func TestLeaseRevokeNewAfterClose(t *testing.T) {
t.Fatal(err)
}
donec := make(chan struct{})
errMsgCh := make(chan string, 1)
go func() {
_, err := cli.Revoke(context.TODO(), leaseID)
if !clientv3.IsConnCanceled(err) {
t.Fatalf("expected %v or server unavailable, got %v", context.Canceled, err)
errMsgCh <- fmt.Sprintf("expected %v or server unavailable, got %v", context.Canceled, err)
} else {
errMsgCh <- ""
}
close(donec)
}()
select {
case <-time.After(integration.RequestWaitTimeout):
t.Fatal("le.Revoke took too long")
case <-donec:
case errMsg := <-errMsgCh:
if errMsg != "" {
t.Fatalf(errMsg)
}
}
}

View File

@ -1575,12 +1575,16 @@ func TestLeasingTxnAtomicCache(t *testing.T) {
var wgPutters, wgGetters sync.WaitGroup
wgPutters.Add(numPutters)
wgGetters.Add(numGetters)
txnerrCh := make(chan error, 1)
f := func() {
defer wgPutters.Done()
for i := 0; i < 10; i++ {
if _, txnerr := lkv.Txn(context.TODO()).Then(puts...).Commit(); err != nil {
t.Fatal(txnerr)
if _, txnerr := lkv.Txn(context.TODO()).Then(puts...).Commit(); txnerr != nil {
select {
case txnerrCh <- txnerr:
default:
}
}
}
}
@ -1619,6 +1623,11 @@ func TestLeasingTxnAtomicCache(t *testing.T) {
}
wgPutters.Wait()
select {
case txnerr := <-txnerrCh:
t.Fatal(txnerr)
default:
}
close(donec)
wgGetters.Wait()
}

View File

@ -140,13 +140,11 @@ func TestElectionFailover(t *testing.T) {
}
// next leader
electedc := make(chan struct{})
electedErrC := make(chan error, 1)
go func() {
ee := concurrency.NewElection(ss[1], "test-election")
if eer := ee.Campaign(context.TODO(), "bar"); eer != nil {
t.Fatal(eer)
}
electedc <- struct{}{}
eer := ee.Campaign(context.TODO(), "bar")
electedErrC <- eer // If eer != nil, the test will fail by calling t.Fatal(eer)
}()
// invoke leader failover
@ -166,7 +164,10 @@ func TestElectionFailover(t *testing.T) {
}
// leader must ack election (otherwise, Campaign may see closed conn)
<-electedc
eer := <-electedErrC
if eer != nil {
t.Fatal(eer)
}
}
// TestElectionSessionRelock ensures that campaigning twice on the same election

View File

@ -456,12 +456,14 @@ func TestV3TxnCmpHeaderRev(t *testing.T) {
for i := 0; i < 10; i++ {
// Concurrently put a key with a txn comparing on it.
revc := make(chan int64, 1)
errCh := make(chan error, 1)
go func() {
defer close(revc)
pr := &pb.PutRequest{Key: []byte("k"), Value: []byte("v")}
presp, err := kvc.Put(context.TODO(), pr)
errCh <- err
if err != nil {
t.Fatal(err)
return
}
revc <- presp.Header.Revision
}()
@ -485,6 +487,9 @@ func TestV3TxnCmpHeaderRev(t *testing.T) {
}
prev := <-revc
if err := <-errCh; err != nil {
t.Fatal(err)
}
// put followed txn; should eval to false
if prev > tresp.Header.Revision && !tresp.Succeeded {
t.Errorf("#%d: got else but put rev %d followed txn rev (%+v)", i, prev, tresp)