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