@@ -458,46 +458,64 @@ func executeTestRunnerOperation(mt *mtest.T, testCase *testCase, op *operation,
458
458
459
459
var fp mtest.FailPoint
460
460
if err := bson .Unmarshal (fpDoc .Document (), & fp ); err != nil {
461
- return fmt .Errorf ("Unmarshal error: %v " , err )
461
+ return fmt .Errorf ("Unmarshal error: %w " , err )
462
462
}
463
463
464
+ if clientSession == nil {
465
+ return errors .New ("expected valid session, got nil" )
466
+ }
464
467
targetHost := clientSession .PinnedServer .Addr .String ()
465
468
opts := options .Client ().ApplyURI (mtest .ClusterURI ()).SetHosts ([]string {targetHost })
466
469
integtest .AddTestServerAPIVersion (opts )
467
470
client , err := mongo .Connect (context .Background (), opts )
468
471
if err != nil {
469
- return fmt .Errorf ("Connect error for targeted client: %v " , err )
472
+ return fmt .Errorf ("Connect error for targeted client: %w " , err )
470
473
}
471
474
defer func () { _ = client .Disconnect (context .Background ()) }()
472
475
473
476
if err = client .Database ("admin" ).RunCommand (context .Background (), fp ).Err (); err != nil {
474
- return fmt .Errorf ("error setting targeted fail point: %v " , err )
477
+ return fmt .Errorf ("error setting targeted fail point: %w " , err )
475
478
}
476
479
mt .TrackFailPoint (fp .ConfigureFailPoint )
477
480
case "configureFailPoint" :
478
481
fp , err := op .Arguments .LookupErr ("failPoint" )
479
- assert .Nil (mt , err , "failPoint not found in arguments" )
482
+ if err != nil {
483
+ return fmt .Errorf ("unable to find 'failPoint' in arguments: %w" , err )
484
+ }
480
485
mt .SetFailPointFromDocument (fp .Document ())
481
486
case "assertSessionTransactionState" :
482
487
stateVal , err := op .Arguments .LookupErr ("state" )
483
- assert .Nil (mt , err , "state not found in arguments" )
488
+ if err != nil {
489
+ return fmt .Errorf ("unable to find 'state' in arguments: %w" , err )
490
+ }
484
491
expectedState , ok := stateVal .StringValueOK ()
485
- assert .True (mt , ok , "state argument is not a string" )
492
+ if ! ok {
493
+ return errors .New ("expected 'state' argument to be string" )
494
+ }
486
495
487
- assert .NotNil (mt , clientSession , "expected valid session, got nil" )
496
+ if clientSession == nil {
497
+ return errors .New ("expected valid session, got nil" )
498
+ }
488
499
actualState := clientSession .TransactionState .String ()
489
500
490
501
// actualState should match expectedState, but "in progress" is the same as
491
502
// "in_progress".
492
503
stateMatch := actualState == expectedState ||
493
504
actualState == "in progress" && expectedState == "in_progress"
494
- assert .True (mt , stateMatch , "expected transaction state %v, got %v" ,
495
- expectedState , actualState )
505
+ if ! stateMatch {
506
+ return fmt .Errorf ("expected transaction state %v, got %v" , expectedState , actualState )
507
+ }
496
508
case "assertSessionPinned" :
509
+ if clientSession == nil {
510
+ return errors .New ("expected valid session, got nil" )
511
+ }
497
512
if clientSession .PinnedServer == nil {
498
513
return errors .New ("expected pinned server, got nil" )
499
514
}
500
515
case "assertSessionUnpinned" :
516
+ if clientSession == nil {
517
+ return errors .New ("expected valid session, got nil" )
518
+ }
501
519
// We don't use a combined helper for assertSessionPinned and assertSessionUnpinned because the unpinned
502
520
// case provides the pinned server address in the error msg for debugging.
503
521
if clientSession .PinnedServer != nil {
@@ -540,7 +558,7 @@ func executeTestRunnerOperation(mt *mtest.T, testCase *testCase, op *operation,
540
558
case "waitForThread" :
541
559
waitForThread (mt , testCase , op )
542
560
default :
543
- mt . Fatalf ("unrecognized testRunner operation %v" , op .Name )
561
+ return fmt . Errorf ("unrecognized testRunner operation %v" , op .Name )
544
562
}
545
563
546
564
return nil
@@ -567,7 +585,7 @@ func indexExists(dbName, collName, indexName string) (bool, error) {
567
585
iv := mtest .GlobalClient ().Database (dbName ).Collection (collName ).Indexes ()
568
586
cursor , err := iv .List (context .Background ())
569
587
if err != nil {
570
- return false , fmt .Errorf ("IndexView.List error: %v " , err )
588
+ return false , fmt .Errorf ("IndexView.List error: %w " , err )
571
589
}
572
590
defer cursor .Close (context .Background ())
573
591
@@ -602,7 +620,7 @@ func collectionExists(dbName, collName string) (bool, error) {
602
620
// Use global client because listCollections cannot be executed inside a transaction.
603
621
collections , err := mtest .GlobalClient ().Database (dbName ).ListCollectionNames (context .Background (), filter )
604
622
if err != nil {
605
- return false , fmt .Errorf ("ListCollectionNames error: %v " , err )
623
+ return false , fmt .Errorf ("ListCollectionNames error: %w " , err )
606
624
}
607
625
608
626
return len (collections ) > 0 , nil
@@ -632,9 +650,8 @@ func executeSessionOperation(mt *mtest.T, op *operation, sess mongo.Session) err
632
650
case "withTransaction" :
633
651
return executeWithTransaction (mt , sess , op .Arguments )
634
652
default :
635
- mt . Fatalf ("unrecognized session operation: %v" , op .Name )
653
+ return fmt . Errorf ("unrecognized session operation: %v" , op .Name )
636
654
}
637
- return nil
638
655
}
639
656
640
657
func executeCollectionOperation (mt * mtest.T , op * operation , sess mongo.Session ) error {
0 commit comments