1
1
'use strict' ;
2
- var test = require ( './shared' ) . assert ;
3
- var setupDatabase = require ( './shared' ) . setupDatabase ;
2
+
3
+ const test = require ( './shared' ) . assert ;
4
+ const setupDatabase = require ( './shared' ) . setupDatabase ;
5
+ const withMonitoredClient = require ( './shared' ) . withMonitoredClient ;
4
6
const expect = require ( 'chai' ) . expect ;
5
7
const { ReadPreference } = require ( '../..' ) ;
6
8
@@ -81,7 +83,7 @@ describe('ReadPreference', function() {
81
83
var client = configuration . newClient ( configuration . writeConcernMax ( ) , { poolSize : 1 } ) ;
82
84
client . connect ( function ( err , client ) {
83
85
var db = client . db ( configuration . db ) ;
84
- test . equal ( null , err ) ;
86
+ expect ( err ) . to . not . exist ;
85
87
// Set read preference
86
88
var collection = db . collection ( 'read_pref_1' , {
87
89
readPreference : ReadPreference . SECONDARY_PREFERRED
@@ -100,7 +102,7 @@ describe('ReadPreference', function() {
100
102
101
103
// Execute count
102
104
collection . count ( function ( err ) {
103
- test . equal ( null , err ) ;
105
+ expect ( err ) . to . not . exist ;
104
106
client . topology . command = command ;
105
107
106
108
client . close ( done ) ;
@@ -117,7 +119,7 @@ describe('ReadPreference', function() {
117
119
var client = configuration . newClient ( configuration . writeConcernMax ( ) , { poolSize : 1 } ) ;
118
120
client . connect ( function ( err , client ) {
119
121
var db = client . db ( configuration . db ) ;
120
- test . equal ( null , err ) ;
122
+ expect ( err ) . to . not . exist ;
121
123
// Set read preference
122
124
var collection = db . collection ( 'read_pref_1' , {
123
125
readPreference : ReadPreference . SECONDARY_PREFERRED
@@ -139,7 +141,7 @@ describe('ReadPreference', function() {
139
141
collection . group ( [ ] , { } , { count : 0 } , 'function (obj, prev) { prev.count++; }' , function (
140
142
err
141
143
) {
142
- test . equal ( null , err ) ;
144
+ expect ( err ) . to . not . exist ;
143
145
client . topology . command = command ;
144
146
145
147
client . close ( done ) ;
@@ -156,7 +158,7 @@ describe('ReadPreference', function() {
156
158
var client = configuration . newClient ( configuration . writeConcernMax ( ) , { poolSize : 1 } ) ;
157
159
client . connect ( function ( err , client ) {
158
160
var db = client . db ( configuration . db ) ;
159
- test . equal ( null , err ) ;
161
+ expect ( err ) . to . not . exist ;
160
162
// Set read preference
161
163
var collection = db . collection ( 'read_pref_1' , {
162
164
readPreference : ReadPreference . SECONDARY_PREFERRED
@@ -184,7 +186,7 @@ describe('ReadPreference', function() {
184
186
185
187
// Perform the map reduce
186
188
collection . mapReduce ( map , reduce , { out : { inline : 1 } } , function ( /* err */ ) {
187
- // test.equal(null, err);
189
+ // expect( err).to.not.exist ;
188
190
189
191
// eslint-disable-line
190
192
client . topology . command = command ;
@@ -205,7 +207,7 @@ describe('ReadPreference', function() {
205
207
var client = configuration . newClient ( configuration . writeConcernMax ( ) , { poolSize : 1 } ) ;
206
208
client . connect ( function ( err , client ) {
207
209
var db = client . db ( configuration . db ) ;
208
- test . equal ( null , err ) ;
210
+ expect ( err ) . to . not . exist ;
209
211
// Set read preference
210
212
var collection = db . collection ( 'read_pref_1' , {
211
213
readPreference : ReadPreference . SECONDARY_PREFERRED
@@ -234,7 +236,7 @@ describe('ReadPreference', function() {
234
236
235
237
// Perform the map reduce
236
238
collection . mapReduce ( map , reduce , { out : 'inline' } , function ( /* err */ ) {
237
- // test.equal(null, err);
239
+ // expect( err).to.not.exist ;
238
240
client . topology . command = command ;
239
241
client . close ( done ) ;
240
242
} ) ;
@@ -251,7 +253,7 @@ describe('ReadPreference', function() {
251
253
var client = configuration . newClient ( configuration . writeConcernMax ( ) , { poolSize : 1 } ) ;
252
254
client . connect ( function ( err , client ) {
253
255
var db = client . db ( configuration . db ) ;
254
- test . equal ( null , err ) ;
256
+ expect ( err ) . to . not . exist ;
255
257
// Set read preference
256
258
var collection = db . collection ( 'read_pref_1' , {
257
259
readPreference : ReadPreference . SECONDARY_PREFERRED
@@ -283,7 +285,7 @@ describe('ReadPreference', function() {
283
285
var client = configuration . newClient ( configuration . writeConcernMax ( ) , { poolSize : 1 } ) ;
284
286
client . connect ( function ( err , client ) {
285
287
var db = client . db ( configuration . db ) ;
286
- test . equal ( null , err ) ;
288
+ expect ( err ) . to . not . exist ;
287
289
// Set read preference
288
290
var collection = db . collection ( 'read_pref_1' , {
289
291
readPreference : ReadPreference . SECONDARY_PREFERRED
@@ -334,7 +336,7 @@ describe('ReadPreference', function() {
334
336
var client = configuration . newClient ( configuration . writeConcernMax ( ) , { poolSize : 1 } ) ;
335
337
client . connect ( function ( err , client ) {
336
338
var db = client . db ( configuration . db ) ;
337
- test . equal ( null , err ) ;
339
+ expect ( err ) . to . not . exist ;
338
340
// Set read preference
339
341
var collection = db . collection ( 'read_pref_1' , {
340
342
readPreference : ReadPreference . SECONDARY_PREFERRED
@@ -353,7 +355,7 @@ describe('ReadPreference', function() {
353
355
354
356
// Perform the map reduce
355
357
collection . stats ( function ( /* err */ ) {
356
- // test.equal(null, err);
358
+ // expect( err).to.not.exist ;
357
359
client . topology . command = command ;
358
360
client . close ( done ) ;
359
361
} ) ;
@@ -382,7 +384,7 @@ describe('ReadPreference', function() {
382
384
} ;
383
385
384
386
db . command ( { dbStats : true } , function ( err ) {
385
- test . equal ( null , err ) ;
387
+ expect ( err ) . to . not . exist ;
386
388
387
389
client . topology . command = function ( ) {
388
390
var args = Array . prototype . slice . call ( arguments , 0 ) ;
@@ -394,7 +396,7 @@ describe('ReadPreference', function() {
394
396
} ;
395
397
396
398
db . command ( { dbStats : true } , { readPreference : 'secondaryPreferred' } , function ( err ) {
397
- test . equal ( null , err ) ;
399
+ expect ( err ) . to . not . exist ;
398
400
client . topology . command = command ;
399
401
client . close ( done ) ;
400
402
} ) ;
@@ -411,11 +413,11 @@ describe('ReadPreference', function() {
411
413
var client = configuration . newClient ( configuration . writeConcernMax ( ) , { poolSize : 1 } ) ;
412
414
client . connect ( function ( err , client ) {
413
415
var db = client . db ( configuration . db ) ;
414
- test . equal ( null , err ) ;
416
+ expect ( err ) . to . not . exist ;
415
417
// Create read preference object.
416
418
var mySecondaryPreferred = { mode : 'secondaryPreferred' , tags : [ ] } ;
417
419
db . command ( { dbStats : true } , { readPreference : mySecondaryPreferred } , function ( err ) {
418
- test . equal ( null , err ) ;
420
+ expect ( err ) . to . not . exist ;
419
421
client . close ( done ) ;
420
422
} ) ;
421
423
} ) ;
@@ -430,11 +432,11 @@ describe('ReadPreference', function() {
430
432
var client = configuration . newClient ( configuration . writeConcernMax ( ) , { poolSize : 1 } ) ;
431
433
client . connect ( function ( err , client ) {
432
434
var db = client . db ( configuration . db ) ;
433
- test . equal ( null , err ) ;
435
+ expect ( err ) . to . not . exist ;
434
436
// Create read preference object.
435
437
var mySecondaryPreferred = { mode : 'secondaryPreferred' , tags : [ ] } ;
436
438
db . listCollections ( { } , { readPreference : mySecondaryPreferred } ) . toArray ( function ( err ) {
437
- test . equal ( null , err ) ;
439
+ expect ( err ) . to . not . exist ;
438
440
client . close ( done ) ;
439
441
} ) ;
440
442
} ) ;
@@ -449,12 +451,12 @@ describe('ReadPreference', function() {
449
451
var client = configuration . newClient ( configuration . writeConcernMax ( ) , { poolSize : 1 } ) ;
450
452
client . connect ( function ( err , client ) {
451
453
var db = client . db ( configuration . db ) ;
452
- test . equal ( null , err ) ;
454
+ expect ( err ) . to . not . exist ;
453
455
// Create read preference object.
454
456
var mySecondaryPreferred = { mode : 'secondaryPreferred' , tags : [ ] } ;
455
457
var cursor = db . collection ( 'test' ) . find ( { } , { readPreference : mySecondaryPreferred } ) ;
456
458
cursor . toArray ( function ( err ) {
457
- test . equal ( null , err ) ;
459
+ expect ( err ) . to . not . exist ;
458
460
client . close ( done ) ;
459
461
} ) ;
460
462
} ) ;
@@ -492,4 +494,107 @@ describe('ReadPreference', function() {
492
494
client . close ( done ) ;
493
495
} ) ;
494
496
} ) ;
497
+
498
+ context ( 'hedge' , function ( ) {
499
+ it ( 'should set hedge using [find option & empty hedge]' , {
500
+ metadata : { requires : { mongodb : '>=3.6.0' } } ,
501
+ test : withMonitoredClient ( [ 'find' ] , function ( client , events , done ) {
502
+ const rp = new ReadPreference ( ReadPreference . SECONDARY , null , { hedge : { } } ) ;
503
+ client
504
+ . db ( this . configuration . db )
505
+ . collection ( 'test' )
506
+ . find ( { } , { readPreference : rp } )
507
+ . toArray ( err => {
508
+ expect ( err ) . to . not . exist ;
509
+ const expected = { mode : ReadPreference . SECONDARY , hedge : { } } ;
510
+ expect ( events [ 0 ] )
511
+ . nested . property ( 'command.$readPreference' )
512
+ . to . deep . equal ( expected ) ;
513
+ done ( ) ;
514
+ } ) ;
515
+ } )
516
+ } ) ;
517
+
518
+ it ( 'should set hedge using [.setReadPreference & empty hedge] ' , {
519
+ metadata : { requires : { mongodb : '>=3.6.0' } } ,
520
+ test : withMonitoredClient ( [ 'find' ] , function ( client , events , done ) {
521
+ const rp = new ReadPreference ( ReadPreference . SECONDARY , null , { hedge : { } } ) ;
522
+ client
523
+ . db ( this . configuration . db )
524
+ . collection ( 'test' )
525
+ . find ( { } )
526
+ . setReadPreference ( rp )
527
+ . toArray ( err => {
528
+ expect ( err ) . to . not . exist ;
529
+ const expected = { mode : ReadPreference . SECONDARY , hedge : { } } ;
530
+ expect ( events [ 0 ] )
531
+ . nested . property ( 'command.$readPreference' )
532
+ . to . deep . equal ( expected ) ;
533
+ done ( ) ;
534
+ } ) ;
535
+ } )
536
+ } ) ;
537
+
538
+ it ( 'should set hedge using [.setReadPreference & enabled hedge] ' , {
539
+ metadata : { requires : { mongodb : '>=3.6.0' } } ,
540
+ test : withMonitoredClient ( [ 'find' ] , function ( client , events , done ) {
541
+ const rp = new ReadPreference ( ReadPreference . SECONDARY , null , { hedge : { enabled : true } } ) ;
542
+ client
543
+ . db ( this . configuration . db )
544
+ . collection ( 'test' )
545
+ . find ( { } )
546
+ . setReadPreference ( rp )
547
+ . toArray ( err => {
548
+ expect ( err ) . to . not . exist ;
549
+ const expected = { mode : ReadPreference . SECONDARY , hedge : { enabled : true } } ;
550
+ expect ( events [ 0 ] )
551
+ . nested . property ( 'command.$readPreference' )
552
+ . to . deep . equal ( expected ) ;
553
+ done ( ) ;
554
+ } ) ;
555
+ } )
556
+ } ) ;
557
+
558
+ it ( 'should set hedge using [.setReadPreference & disabled hedge] ' , {
559
+ metadata : { requires : { mongodb : '>=3.6.0' } } ,
560
+ test : withMonitoredClient ( [ 'find' ] , function ( client , events , done ) {
561
+ const rp = new ReadPreference ( ReadPreference . SECONDARY , null , {
562
+ hedge : { enabled : false }
563
+ } ) ;
564
+ client
565
+ . db ( this . configuration . db )
566
+ . collection ( 'test' )
567
+ . find ( { } )
568
+ . setReadPreference ( rp )
569
+ . toArray ( err => {
570
+ expect ( err ) . to . not . exist ;
571
+ const expected = { mode : ReadPreference . SECONDARY , hedge : { enabled : false } } ;
572
+ expect ( events [ 0 ] )
573
+ . nested . property ( 'command.$readPreference' )
574
+ . to . deep . equal ( expected ) ;
575
+ done ( ) ;
576
+ } ) ;
577
+ } )
578
+ } ) ;
579
+
580
+ it ( 'should set hedge using [.setReadPreference & undefined hedge] ' , {
581
+ metadata : { requires : { mongodb : '>=3.6.0' } } ,
582
+ test : withMonitoredClient ( [ 'find' ] , function ( client , events , done ) {
583
+ const rp = new ReadPreference ( ReadPreference . SECONDARY , null ) ;
584
+ client
585
+ . db ( this . configuration . db )
586
+ . collection ( 'test' )
587
+ . find ( { } )
588
+ . setReadPreference ( rp )
589
+ . toArray ( err => {
590
+ expect ( err ) . to . not . exist ;
591
+ const expected = { mode : ReadPreference . SECONDARY } ;
592
+ expect ( events [ 0 ] )
593
+ . nested . property ( 'command.$readPreference' )
594
+ . to . deep . equal ( expected ) ;
595
+ done ( ) ;
596
+ } ) ;
597
+ } )
598
+ } ) ;
599
+ } ) ;
495
600
} ) ;
0 commit comments