@@ -14,6 +14,8 @@ import (
14
14
"reflect"
15
15
"sync"
16
16
"testing"
17
+
18
+ "go.mongodb.org/mongo-driver/internal/assert"
17
19
)
18
20
19
21
type mockLogSink struct {}
@@ -334,3 +336,177 @@ func TestTruncate(t *testing.T) {
334
336
}
335
337
336
338
}
339
+
340
+ func TestLogger_LevelComponentEnabled (t * testing.T ) {
341
+ t .Parallel ()
342
+
343
+ tests := []struct {
344
+ name string
345
+ logger Logger
346
+ level Level
347
+ component Component
348
+ want bool
349
+ }{
350
+ {
351
+ name : "zero" ,
352
+ logger : Logger {},
353
+ level : LevelOff ,
354
+ component : ComponentCommand ,
355
+ want : false ,
356
+ },
357
+ {
358
+ name : "empty" ,
359
+ logger : Logger {
360
+ ComponentLevels : map [Component ]Level {},
361
+ },
362
+ level : LevelOff ,
363
+ component : ComponentCommand ,
364
+ want : false , // LevelOff should never be considered enabled.
365
+ },
366
+ {
367
+ name : "one level below" ,
368
+ logger : Logger {
369
+ ComponentLevels : map [Component ]Level {
370
+ ComponentCommand : LevelDebug ,
371
+ },
372
+ },
373
+ level : LevelInfo ,
374
+ component : ComponentCommand ,
375
+ want : true ,
376
+ },
377
+ {
378
+ name : "equal levels" ,
379
+ logger : Logger {
380
+ ComponentLevels : map [Component ]Level {
381
+ ComponentCommand : LevelDebug ,
382
+ },
383
+ },
384
+ level : LevelDebug ,
385
+ component : ComponentCommand ,
386
+ want : true ,
387
+ },
388
+ {
389
+ name : "one level above" ,
390
+ logger : Logger {
391
+ ComponentLevels : map [Component ]Level {
392
+ ComponentCommand : LevelInfo ,
393
+ },
394
+ },
395
+ level : LevelDebug ,
396
+ component : ComponentCommand ,
397
+ want : false ,
398
+ },
399
+ {
400
+ name : "component mismatch" ,
401
+ logger : Logger {
402
+ ComponentLevels : map [Component ]Level {
403
+ ComponentCommand : LevelDebug ,
404
+ },
405
+ },
406
+ level : LevelDebug ,
407
+ component : ComponentTopology ,
408
+ want : false ,
409
+ },
410
+ {
411
+ name : "component all enables with topology" ,
412
+ logger : Logger {
413
+ ComponentLevels : map [Component ]Level {
414
+ ComponentAll : LevelDebug ,
415
+ },
416
+ },
417
+ level : LevelDebug ,
418
+ component : ComponentTopology ,
419
+ want : true ,
420
+ },
421
+ {
422
+ name : "component all enables with server selection" ,
423
+ logger : Logger {
424
+ ComponentLevels : map [Component ]Level {
425
+ ComponentAll : LevelDebug ,
426
+ },
427
+ },
428
+ level : LevelDebug ,
429
+ component : ComponentServerSelection ,
430
+ want : true ,
431
+ },
432
+ {
433
+ name : "component all enables with connection" ,
434
+ logger : Logger {
435
+ ComponentLevels : map [Component ]Level {
436
+ ComponentAll : LevelDebug ,
437
+ },
438
+ },
439
+ level : LevelDebug ,
440
+ component : ComponentConnection ,
441
+ want : true ,
442
+ },
443
+ {
444
+ name : "component all enables with command" ,
445
+ logger : Logger {
446
+ ComponentLevels : map [Component ]Level {
447
+ ComponentAll : LevelDebug ,
448
+ },
449
+ },
450
+ level : LevelDebug ,
451
+ component : ComponentCommand ,
452
+ want : true ,
453
+ },
454
+ {
455
+ name : "component all enables with all" ,
456
+ logger : Logger {
457
+ ComponentLevels : map [Component ]Level {
458
+ ComponentAll : LevelDebug ,
459
+ },
460
+ },
461
+ level : LevelDebug ,
462
+ component : ComponentAll ,
463
+ want : true ,
464
+ },
465
+ {
466
+ name : "component all does not enable with lower level" ,
467
+ logger : Logger {
468
+ ComponentLevels : map [Component ]Level {
469
+ ComponentAll : LevelInfo ,
470
+ },
471
+ },
472
+ level : LevelDebug ,
473
+ component : ComponentCommand ,
474
+ want : false ,
475
+ },
476
+ {
477
+ name : "component all has a lower log level than command" ,
478
+ logger : Logger {
479
+ ComponentLevels : map [Component ]Level {
480
+ ComponentAll : LevelInfo ,
481
+ ComponentCommand : LevelDebug ,
482
+ },
483
+ },
484
+ level : LevelDebug ,
485
+ component : ComponentCommand ,
486
+ want : true ,
487
+ },
488
+ {
489
+ name : "component all has a higher log level than command" ,
490
+ logger : Logger {
491
+ ComponentLevels : map [Component ]Level {
492
+ ComponentAll : LevelDebug ,
493
+ ComponentCommand : LevelInfo ,
494
+ },
495
+ },
496
+ level : LevelDebug ,
497
+ component : ComponentCommand ,
498
+ want : true ,
499
+ },
500
+ }
501
+
502
+ for _ , tcase := range tests {
503
+ tcase := tcase // Capture the range variable.
504
+
505
+ t .Run (tcase .name , func (t * testing.T ) {
506
+ t .Parallel ()
507
+
508
+ got := tcase .logger .LevelComponentEnabled (tcase .level , tcase .component )
509
+ assert .Equal (t , tcase .want , got , "unexpected result for LevelComponentEnabled" )
510
+ })
511
+ }
512
+ }
0 commit comments