@@ -128,9 +128,10 @@ type T struct {
128
128
succeeded []* event.CommandSucceededEvent
129
129
failed []* event.CommandFailedEvent
130
130
131
- Client * mongo.Client
132
- DB * mongo.Database
133
- Coll * mongo.Collection
131
+ Client * mongo.Client
132
+ fpClient * mongo.Client
133
+ DB * mongo.Database
134
+ Coll * mongo.Collection
134
135
}
135
136
136
137
func newT (wrapped * testing.T , opts ... * Options ) * T {
@@ -405,7 +406,9 @@ func (t *T) ResetClient(opts *options.ClientOptions) {
405
406
t .clientOpts = opts
406
407
}
407
408
408
- _ = t .Client .Disconnect (context .Background ())
409
+ if len (t .failPointNames ) == 0 {
410
+ _ = t .Client .Disconnect (context .Background ())
411
+ }
409
412
t .createTestClient ()
410
413
t .DB = t .Client .Database (t .dbName )
411
414
t .Coll = t .DB .Collection (t .collName , t .collOpts )
@@ -559,7 +562,10 @@ func (t *T) SetFailPoint(fp FailPoint) {
559
562
}
560
563
}
561
564
562
- if err := SetFailPoint (fp , t .Client ); err != nil {
565
+ if t .fpClient == nil {
566
+ t .fpClient = t .Client
567
+ }
568
+ if err := SetFailPoint (fp , t .fpClient ); err != nil {
563
569
t .Fatal (err )
564
570
}
565
571
t .failPointNames = append (t .failPointNames , fp .ConfigureFailPoint )
@@ -570,7 +576,10 @@ func (t *T) SetFailPoint(fp FailPoint) {
570
576
// the failpoint will appear in command monitoring channels. The fail point will be automatically disabled after this
571
577
// test has run.
572
578
func (t * T ) SetFailPointFromDocument (fp bson.Raw ) {
573
- if err := SetRawFailPoint (fp , t .Client ); err != nil {
579
+ if t .fpClient == nil {
580
+ t .fpClient = t .Client
581
+ }
582
+ if err := SetRawFailPoint (fp , t .fpClient ); err != nil {
574
583
t .Fatal (err )
575
584
}
576
585
@@ -586,7 +595,16 @@ func (t *T) TrackFailPoint(fpName string) {
586
595
587
596
// ClearFailPoints disables all previously set failpoints for this test.
588
597
func (t * T ) ClearFailPoints () {
589
- db := t .Client .Database ("admin" )
598
+ client := t .fpClient
599
+ if client == nil {
600
+ client = t .Client
601
+ } else {
602
+ defer func () {
603
+ // _ = t.fpClient.Disconnect(context.Background())
604
+ t .fpClient = nil
605
+ }()
606
+ }
607
+ db := client .Database ("admin" )
590
608
for _ , fp := range t .failPointNames {
591
609
cmd := bson.D {
592
610
{"configureFailPoint" , fp },
0 commit comments