@@ -604,6 +604,7 @@ typedef struct
604
604
bool parses ;
605
605
mongoc_read_mode_t mode ;
606
606
bson_t * tags ;
607
+ const char * log_msg ;
607
608
} read_prefs_test ;
608
609
609
610
@@ -631,6 +632,8 @@ test_mongoc_uri_read_prefs (void)
631
632
"0" , "{" , "}"
632
633
);
633
634
635
+ const char * conflicts = "Primary read preference mode conflicts with tags" ;
636
+
634
637
const read_prefs_test tests [] = {
635
638
{ "mongodb://localhost/" , true, MONGOC_READ_PRIMARY , NULL },
636
639
{ "mongodb://localhost/?slaveOk=false" , true, MONGOC_READ_PRIMARY , NULL },
@@ -643,13 +646,19 @@ test_mongoc_uri_read_prefs (void)
643
646
/* readPreference should take priority over slaveOk */
644
647
{ "mongodb://localhost/?slaveOk=false&readPreference=secondary" , true, MONGOC_READ_SECONDARY , NULL },
645
648
/* readPreferenceTags conflict with primary mode */
646
- { "mongodb://localhost/?readPreferenceTags=" , false },
647
- { "mongodb://localhost/?readPreference=primary&readPreferenceTags=" , false },
648
- { "mongodb://localhost/?slaveOk=false&readPreferenceTags=" , false },
649
+ { "mongodb://localhost/?readPreferenceTags=" , NULL , MONGOC_READ_PRIMARY , NULL , conflicts },
650
+ { "mongodb://localhost/?readPreference=primary&readPreferenceTags=" , NULL , MONGOC_READ_PRIMARY , NULL , conflicts },
651
+ { "mongodb://localhost/?slaveOk=false&readPreferenceTags=" , NULL , MONGOC_READ_PRIMARY , NULL , conflicts },
649
652
{ "mongodb://localhost/?readPreference=secondaryPreferred&readPreferenceTags=" , true, MONGOC_READ_SECONDARY_PREFERRED , tags_empty },
650
653
{ "mongodb://localhost/?readPreference=secondaryPreferred&readPreferenceTags=dc:ny" , true, MONGOC_READ_SECONDARY_PREFERRED , tags_dcny },
651
654
{ "mongodb://localhost/?readPreference=nearest&readPreferenceTags=dc:ny&readPreferenceTags=" , true, MONGOC_READ_NEAREST , tags_dcny_empty },
652
655
{ "mongodb://localhost/?readPreference=nearest&readPreferenceTags=dc:ny,use:ssd&readPreferenceTags=dc:sf&readPreferenceTags=" , true, MONGOC_READ_NEAREST , tags_dcnyusessd_dcsf_empty },
656
+ { "mongodb://localhost/?readPreference=nearest&readPreferenceTags=foo" , false, MONGOC_READ_NEAREST , NULL ,
657
+ "invalid readPreferenceTags: \"foo\"" },
658
+ { "mongodb://localhost/?readPreference=nearest&readPreferenceTags=foo,bar" , false, MONGOC_READ_NEAREST , NULL ,
659
+ "invalid readPreferenceTags: \"foo,bar\"" },
660
+ { "mongodb://localhost/?readPreference=nearest&readPreferenceTags=1" , false, MONGOC_READ_NEAREST , NULL ,
661
+ "invalid readPreferenceTags: \"1\"" },
653
662
{ NULL }
654
663
};
655
664
@@ -663,9 +672,10 @@ test_mongoc_uri_read_prefs (void)
663
672
ASSERT_NO_CAPTURED_LOGS (t -> uri );
664
673
} else {
665
674
assert (!uri );
666
- ASSERT_CAPTURED_LOG (
667
- t -> uri , MONGOC_LOG_LEVEL_WARNING ,
668
- "Primary read preference mode conflicts with tags" );
675
+ if (t -> log_msg ) {
676
+ ASSERT_CAPTURED_LOG (t -> uri , MONGOC_LOG_LEVEL_WARNING , t -> log_msg );
677
+ }
678
+
669
679
continue ;
670
680
}
671
681
0 commit comments