mongo 2.7.0 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +39 -14
  5. data/Rakefile +1 -0
  6. data/lib/mongo/auth.rb +4 -1
  7. data/lib/mongo/client.rb +4 -3
  8. data/lib/mongo/cluster.rb +1 -1
  9. data/lib/mongo/collection/view/readable.rb +5 -2
  10. data/lib/mongo/database.rb +1 -0
  11. data/lib/mongo/error/invalid_server_preference.rb +1 -0
  12. data/lib/mongo/error/operation_failure.rb +10 -0
  13. data/lib/mongo/error/parser.rb +10 -0
  14. data/lib/mongo/event.rb +1 -2
  15. data/lib/mongo/operation/result.rb +4 -1
  16. data/lib/mongo/operation/shared/executable_transaction_label.rb +3 -1
  17. data/lib/mongo/operation/shared/sessions_supported.rb +1 -1
  18. data/lib/mongo/protocol/msg.rb +1 -1
  19. data/lib/mongo/protocol/query.rb +2 -2
  20. data/lib/mongo/retryable.rb +20 -6
  21. data/lib/mongo/server.rb +6 -0
  22. data/lib/mongo/server/connection.rb +4 -4
  23. data/lib/mongo/server/monitor/connection.rb +9 -5
  24. data/lib/mongo/server_selector/selectable.rb +86 -32
  25. data/lib/mongo/session.rb +98 -15
  26. data/lib/mongo/version.rb +1 -1
  27. data/spec/README.md +85 -0
  28. data/spec/integration/bulk_insert_spec.rb +1 -1
  29. data/spec/integration/change_stream_examples_spec.rb +3 -1
  30. data/spec/integration/change_stream_spec.rb +10 -14
  31. data/spec/integration/client_construction_spec.rb +1 -0
  32. data/spec/integration/command_monitoring_spec.rb +37 -1
  33. data/spec/integration/command_spec.rb +141 -0
  34. data/spec/integration/connection_spec.rb +4 -2
  35. data/spec/integration/cursor_reaping_spec.rb +1 -1
  36. data/spec/integration/docs_examples_spec.rb +1 -1
  37. data/spec/integration/retryable_writes_spec.rb +33 -42
  38. data/spec/integration/server_description_spec.rb +3 -3
  39. data/spec/integration/server_selector_spec.rb +79 -0
  40. data/spec/lite_spec_helper.rb +4 -2
  41. data/spec/mongo/address_spec.rb +8 -0
  42. data/spec/mongo/auth/cr_spec.rb +5 -2
  43. data/spec/mongo/auth/invalid_mechanism_spec.rb +11 -0
  44. data/spec/mongo/auth/scram/conversation_spec.rb +3 -2
  45. data/spec/mongo/auth/scram/negotiation_spec.rb +1 -2
  46. data/spec/mongo/auth/scram_spec.rb +11 -6
  47. data/spec/mongo/auth/user/view_spec.rb +13 -6
  48. data/spec/mongo/bulk_write_spec.rb +81 -104
  49. data/spec/mongo/client_construction_spec.rb +18 -7
  50. data/spec/mongo/client_spec.rb +11 -7
  51. data/spec/mongo/cluster_spec.rb +30 -1
  52. data/spec/mongo/collection/view/aggregation_spec.rb +18 -10
  53. data/spec/mongo/collection/view/change_stream_spec.rb +28 -8
  54. data/spec/mongo/collection/view/map_reduce_spec.rb +24 -10
  55. data/spec/mongo/collection/view/readable_spec.rb +37 -19
  56. data/spec/mongo/collection/view/writable_spec.rb +64 -32
  57. data/spec/mongo/collection/view_spec.rb +4 -2
  58. data/spec/mongo/collection_spec.rb +163 -73
  59. data/spec/mongo/cursor_spec.rb +5 -2
  60. data/spec/mongo/database_spec.rb +41 -19
  61. data/spec/mongo/error/no_server_available_spec.rb +1 -1
  62. data/spec/mongo/error/parser_spec.rb +29 -0
  63. data/spec/mongo/grid/stream/write_spec.rb +2 -1
  64. data/spec/mongo/index/view_spec.rb +42 -24
  65. data/spec/mongo/operation/delete/op_msg_spec.rb +11 -7
  66. data/spec/mongo/operation/insert/op_msg_spec.rb +10 -6
  67. data/spec/mongo/operation/update/op_msg_spec.rb +10 -6
  68. data/spec/mongo/protocol/compressed_spec.rb +1 -1
  69. data/spec/mongo/protocol/msg_spec.rb +1 -1
  70. data/spec/mongo/server/app_metadata_spec.rb +2 -1
  71. data/spec/mongo/server/connection_auth_spec.rb +1 -1
  72. data/spec/mongo/server/monitor/connection_spec.rb +42 -0
  73. data/spec/mongo/server_selector_spec.rb +17 -0
  74. data/spec/mongo/server_spec.rb +110 -0
  75. data/spec/mongo/session/session_pool_spec.rb +1 -1
  76. data/spec/mongo/session_spec.rb +1 -1
  77. data/spec/mongo/session_transaction_spec.rb +162 -1
  78. data/spec/mongo/socket/ssl_spec.rb +14 -7
  79. data/spec/mongo/uri/srv_protocol_spec.rb +41 -34
  80. data/spec/spec_helper.rb +3 -191
  81. data/spec/spec_tests/change_streams_spec.rb +3 -6
  82. data/spec/spec_tests/data/transactions/abort.yml +3 -1
  83. data/spec/spec_tests/data/transactions/commit.yml +4 -3
  84. data/spec/spec_tests/data/transactions/error-labels.yml +17 -13
  85. data/spec/spec_tests/data/transactions/read-concern.yml +611 -0
  86. data/spec/spec_tests/data/transactions/retryable-commit.yml +126 -21
  87. data/spec/spec_tests/data/transactions_api/callback-aborts.yml +42 -39
  88. data/spec/spec_tests/data/transactions_api/callback-commits.yml +52 -50
  89. data/spec/spec_tests/data/transactions_api/callback-retry.yml +33 -31
  90. data/spec/spec_tests/data/transactions_api/commit-retry.yml +42 -39
  91. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror-4.2.yml +13 -12
  92. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror.yml +15 -26
  93. data/spec/spec_tests/data/transactions_api/commit-writeconcernerror.yml +25 -33
  94. data/spec/spec_tests/data/transactions_api/commit.yml +44 -42
  95. data/spec/spec_tests/data/transactions_api/transaction-options.yml +25 -23
  96. data/spec/spec_tests/max_staleness_spec.rb +2 -0
  97. data/spec/spec_tests/retryable_writes_spec.rb +2 -6
  98. data/spec/spec_tests/sdam_spec.rb +2 -0
  99. data/spec/spec_tests/server_selection_spec.rb +3 -0
  100. data/spec/spec_tests/transactions_api_spec.rb +7 -1
  101. data/spec/spec_tests/transactions_spec.rb +6 -0
  102. data/spec/spec_tests/uri_options_spec.rb +4 -26
  103. data/spec/support/certificates/ca.pem +21 -16
  104. data/spec/support/certificates/client.pem +90 -90
  105. data/spec/support/certificates/client_cert.pem +21 -20
  106. data/spec/support/certificates/client_key.pem +27 -28
  107. data/spec/support/certificates/client_key_encrypted.pem +26 -26
  108. data/spec/support/certificates/crl.pem +10 -8
  109. data/spec/support/certificates/crl_client_revoked.pem +11 -10
  110. data/spec/support/certificates/server.pem +48 -33
  111. data/spec/support/change_streams.rb +12 -32
  112. data/spec/support/client_registry.rb +12 -1
  113. data/spec/support/cluster_config.rb +48 -2
  114. data/spec/support/common_shortcuts.rb +73 -7
  115. data/spec/support/connection_string.rb +0 -3
  116. data/spec/support/constraints.rb +87 -22
  117. data/spec/support/crud.rb +2 -1
  118. data/spec/support/shared/server_selector.rb +0 -28
  119. data/spec/support/shared/session.rb +25 -14
  120. data/spec/support/transactions.rb +4 -8
  121. data/spec/support/transactions/operation.rb +26 -4
  122. data/spec/support/transactions/verifier.rb +5 -2
  123. metadata +496 -488
  124. metadata.gz.sig +5 -2
  125. data/spec/support/certificates/password_protected.pem +0 -51
@@ -1,21 +1,22 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIDdjCCAt+gAwIBAgIBBzANBgkqhkiG9w0BAQUFADCBkjELMAkGA1UEBhMCVVMx
3
- ETAPBgNVBAgMCE5ldyBZb3JrMRYwFAYDVQQHDA1OZXcgWW9yayBDaXR5MQ4wDAYD
4
- VQQKDAUxMEdlbjEPMA0GA1UECwwGS2VybmVsMRowGAYDVQQDDBFNeSBDZXJ0IEF1
5
- dGhvcml0eTEbMBkGCSqGSIb3DQEJARYMcm9vdEBsYXphcnVzMB4XDTEzMDgyMzE0
6
- NTUzMloXDTQxMDEwNzE0NTUzMlowbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5l
7
- dyBZb3JrMRYwFAYDVQQHDA1OZXcgWW9yayBDaXR5MQ4wDAYDVQQKDAUxMEdlbjET
8
- MBEGA1UECwwKa2VybmVsdXNlcjEPMA0GA1UEAwwGY2xpZW50MIIBIjANBgkqhkiG
9
- 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuhZC1Is9XopnnqfAzUqcnP2VuYO/9M8DjC7b
10
- qcE1WID24umHKITj0JtoYFEOQoTYb+g0zBiXedON2C8jESVvaXo4u4yyKemRvnmM
11
- zBtWmJjTgyrF+ZyGDCwkDlxGO6mVRGzF4HydA64NI5lJpEjdDjWi5bSLhr3AyM7V
12
- rMQ2855fFwAjjVOhQxujYZY2gE01ULWLaTE5tGOLlllc0eqS6+v6GzVkRLP286ad
13
- STpZ5eHCy5i+KbMi3TOX11BP28JYZBi1jDxrLSH2vY3l0tqNef6ngHWoFbnueX8B
14
- MR3l5xV2U2X2/vCTfSA9zP+byrJQLBs6adXmcM+svn5cM8RupwIDAQABo3sweTAJ
15
- BgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0
16
- aWZpY2F0ZTAdBgNVHQ4EFgQUSovuIkLm+GJMhjiNxXiVmMEQBXwwHwYDVR0jBBgw
17
- FoAUB0EZOp9+xbciTre81d/k/Am4ZBYwDQYJKoZIhvcNAQEFBQADgYEAExOo8N54
18
- xrHghcwn5gQoRJMd8f9egWkzH/N24EnK2a2q2/Wl+KZQu6GnQBTkL424IX81BGDb
19
- r/Ce3aHKC38DLi8ZHjJuHi2HaOM3R6hbk9GIQXPaiCFZJ9Q1HGontcDGF7rzh8jh
20
- 9I9DErz6jZDVhoPfUaXJ4JLwZtA3YW+FJBg=
21
- -----END CERTIFICATE-----
2
+ MIIDkjCCAnqgAwIBAgIDATMhMA0GCSqGSIb3DQEBCwUAMHUxFzAVBgNVBAMTDlJ1
3
+ YnkgRHJpdmVyIENBMRAwDgYDVQQLEwdEcml2ZXJzMRAwDgYDVQQKEwdNb25nb0RC
4
+ MRYwFAYDVQQHEw1OZXcgWW9yayBDaXR5MREwDwYDVQQIEwhOZXcgWW9yazELMAkG
5
+ A1UEBhMCVVMwHhcNMTkwMjE0MjA1NzU4WhcNMzkwMjE0MjA1NzU4WjBwMRIwEAYD
6
+ VQQDEwlsb2NhbGhvc3QxEDAOBgNVBAsTB0RyaXZlcnMxEDAOBgNVBAoTB01vbmdv
7
+ REIxFjAUBgNVBAcTDU5ldyBZb3JrIENpdHkxETAPBgNVBAgTCE5ldyBZb3JrMQsw
8
+ CQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJYtU6kN
9
+ 9v48NFxgh1bIadqF5xCWxjluXAnzQuCnuzg376ZjbCiLHRpSAFIZlGP5WE6c0sqr
10
+ LiBmw337pFLmfFu/tAYf5J5rd/E4FLJWr3fdI5kcuAfleca5EBjqRwy139CmFRQJ
11
+ N1Ge8nwrZvjpWfZR6VDiEVLZzwAMnhVVUeHYlp0VVJx4218u8pFfVTw/GG8yFoJ2
12
+ noNsJSKxJ3BpzaqhUmRg5bMk7invLK3eCVMCCDkQT0r8iyEYzvH8VAx/puyysdbH
13
+ Ybu7P34xgPE5+E3owkUR4ayQl+VKWKYHG39hxKryZmYGsscbcd/cP1P+heSLlxHC
14
+ 0H4QNSuj533Ha/cCAwEAAaMwMC4wLAYDVR0RBCUwI4IJbG9jYWxob3N0hwR/AAAB
15
+ hxAAAAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEBCwUAA4IBAQBIQV57/fW/MlLN
16
+ vPhxfg0NIgV9pRHthqwCnMPh9PQ20kiNpFtK0XaPJRdyB5lJLwnwJfkKpwaZq+j3
17
+ SMdM8aFO9GQ62CXkdjAq9rhx7gXNsnp/5sd6w6/x0RZzpb/bFHHE2PfnzoJIL87l
18
+ /Y+JS6YMHmtCnWRzfjcAB7XmubmJOATWZ93hJpjkSQaOLNPuwe4JuZU6vWphwtIZ
19
+ bOWGSWOu5JOSAUjSMpQsYv0ELn+iJoXdmXjamwyEGSmyxlXhTZfVmmPgjfhnTD8O
20
+ a2cTWLoo7EDmZcEYI64WHPt72bzChHH79ahxzKUvKDtFl9YVnuhE7J4FcrIKrDH+
21
+ qQ7hzoJf
22
+ -----END CERTIFICATE-----
@@ -1,28 +1,27 @@
1
- -----BEGIN PRIVATE KEY-----
2
- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6FkLUiz1eimee
3
- p8DNSpyc/ZW5g7/0zwOMLtupwTVYgPbi6YcohOPQm2hgUQ5ChNhv6DTMGJd5043Y
4
- LyMRJW9peji7jLIp6ZG+eYzMG1aYmNODKsX5nIYMLCQOXEY7qZVEbMXgfJ0Drg0j
5
- mUmkSN0ONaLltIuGvcDIztWsxDbznl8XACONU6FDG6NhljaATTVQtYtpMTm0Y4uW
6
- WVzR6pLr6/obNWREs/bzpp1JOlnl4cLLmL4psyLdM5fXUE/bwlhkGLWMPGstIfa9
7
- jeXS2o15/qeAdagVue55fwExHeXnFXZTZfb+8JN9ID3M/5vKslAsGzpp1eZwz6y+
8
- flwzxG6nAgMBAAECggEBALYw92urjAFVFxCiA8W7aEzYhtAkaztft4R3mD/C19z4
9
- H0CZDeig+3+RuIactY5xDIu8WHz/EseHVlg0BmxSL5ugu4z8uq8IbNaFoVFw7r7m
10
- 2ieRKFY0ZpXiXcbllynw5iEhMjeRKhWhQmH5Qb2kTTINV5j4xKa+f9Lblx7Y2Uh4
11
- tsaOtlMwb98D2/KYJdTv5Nj1nyuSqRVhECsd00Cb6JUBGQBx8Ja0wFy9gEygq6kU
12
- w3s1XNOSnYNEo4FaVZwp5KZyCyBENcKpNUq4nXt/7ncEfVYdJck0Li3wN4Jr2J9S
13
- eHqRzh8QkHxc1Ro8ktcXaUSs9kFuwvVvb4rcGUpOMWkCgYEA9xxp8yDtFVgzMtc/
14
- vS8xgM1Wj4SrgKKYhE2wS05BJh/41oFMzfH1FpZ1GCM983r4QgYWoT71XsBgiOMC
15
- yN2p2IbV4V44bMGKJqaVMkB91CVCUWI6piaCQb/1CJTwaXE7zPim6dlUSxxBBnRn
16
- LP50NTscRLFcCZELD3Yl7jR8XFUCgYEAwMfkNFmGtBKAwlHZ3Y3XOwPWg+jCll7s
17
- 9nhv8TU2IB9pcCRGqyOT7k1YymvYkDT2Je4JUPWEBs4cW7yD61LrQ8w8+DrE9dGo
18
- czzGPyjOAANSX0asG74UjkNIQThmyEOltVHIxYMaSqowjHRSPdA+R4Od9EdcDdfS
19
- q5SfSVFxmwsCgYBtl1thqUOcCL7EGHQ7KdfxgJ+YDMWmyfWMD4xVCYKZLurD7xop
20
- 59nDR7zslIygE/RQC7Uzk+FsQTNO4ibVAIGX9syaI5gwm3DyjURzwehMEq4ju8W4
21
- 9DEmicRZJvysNrzHvasA4RKiMQihnTQ43yyYgvuZd3MTBxF5rPNLfll89QKBgQC9
22
- SsmiOZIR+OUjaTmS2bbQBNm7Fm8TNcxZyzKn1wb5jb57VbNqUfnskVgxEqpIFyjn
23
- X48YRqtH/1RLI5UpGXdXUBFB8Hr7oM1VsgQ7ejakPp7AXOWcLA2FDz3AhMAvvnTU
24
- 0KRihHPpgqk/EOy8M2Ej2XHcrcEO+q+quLmbRXRWtwKBgHacQiwci/2J+v0e9i52
25
- re/2AJHKP5MwNHFe1e01iNc5EEN0G+/Ut8XW19DWf6bsxqie0ChC+xN8TUst8alT
26
- F+tXTsHHmt/lRcjTROjT5XVuoqjtU2Q0QeVeGLgvObso+fZy3ZNeQuSJjWukdMZ3
27
- 57rGT6p0OuM8qbrTzpv3JMrm
28
- -----END PRIVATE KEY-----
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEAli1TqQ32/jw0XGCHVshp2oXnEJbGOW5cCfNC4Ke7ODfvpmNs
3
+ KIsdGlIAUhmUY/lYTpzSyqsuIGbDffukUuZ8W7+0Bh/knmt38TgUslavd90jmRy4
4
+ B+V5xrkQGOpHDLXf0KYVFAk3UZ7yfCtm+OlZ9lHpUOIRUtnPAAyeFVVR4diWnRVU
5
+ nHjbXy7ykV9VPD8YbzIWgnaeg2wlIrEncGnNqqFSZGDlsyTuKe8srd4JUwIIORBP
6
+ SvyLIRjO8fxUDH+m7LKx1sdhu7s/fjGA8Tn4TejCRRHhrJCX5UpYpgcbf2HEqvJm
7
+ Zgayxxtx39w/U/6F5IuXEcLQfhA1K6Pnfcdr9wIDAQABAoIBAClvRB/mrHkk30WF
8
+ lJHLJfmW7FPVZce+vUI5jgAyByPRuxtrXxIon9T9Pv1n9VtIFqdJ+ZbVeBqUf+eo
9
+ oIQG99TQpbjy378d46/4Sy2RYURvDT1XgSccl2bO9LQLH6NQIvqMeFBY4pxwgHLl
10
+ /rk6mQmvO/KHDUSQt95JnOxB6B+plv1prpQVGHVqzre8LAZdJdv/8wVqFHbrAGoU
11
+ 62wUQ66y5oSxLN9YUzTQNb8ECBRTfmF9WCF9aXx4TJyX0+WkyiztUx0ArBm/ANGv
12
+ k5GzPoL0UFRjVr+ObM755SHrJQ9pIOjJnZAA0DW8fHAQcV8XcA2UcqrA+jw/XX9Q
13
+ ku4cz5ECgYEA5iopSEu8WLEkCmVAYVurd1gQSlJQ6aYrcMas+p2kqW1p/hkDvREO
14
+ dt55evAKIENgVo9N4daN4K5ijftxxTQyX0HlO/0eeC6LpWIPjkkJ02H5htKvvIhw
15
+ zxJd7XTKyQA1/wOc/Ooo5MfGO44eBVVBzErX6rGzc/PFfLzlGDa567sCgYEApwiz
16
+ h9SppQwsbjXDjcOfJoZbmnJjzdMJ1rDUnLY7iCaVdf7cIaHCY72xSlgtruVkGQ6m
17
+ vYwjh/YnwU3qoBi1tbu+ByHWxImLwsLZMA4ct4IF5Qvi2d2v4GtOq/sQcqB+35d/
18
+ dJ4CcR1sHe6R5H0uvDDmNoJiJFESbtTD0Wt4VvUCgYAehOSoc3JsCEERJ8/bmP4p
19
+ ewHd+QBFmwUTlSSGrrSQyrNNQB/gyAw08tcE2CNfl8+EasgW9A4oBreGwBqb3Yn4
20
+ W5J729pYcUOPEGujoEevQcSGfhVTWHws2PCfdecVs/N09xOv7ZSykVLVvsh4SI/K
21
+ +PmcYye6bk53dcyi407P1QKBgAUbiwHYSue1G5azJiurk65F5X8viEW+8koSVi4E
22
+ lIVxSJi3Flwg6iTKpCU11Q/IC+uIOykIo/2AVW7fxxDmMIhCGWl2a27PFer6slF5
23
+ 3P7vhuaeGm23Da27GkjAAJzAs6B6rXcPbduvnqK7rNJj0Y4HoMKB8iZSJFInR2Wb
24
+ 964RAoGBAIvzvWDusSLOmkAN7KKwbmVdrKLgKPGtyNjJyKdp0zUxslOQsSraOq/K
25
+ hsBgotDdq8igR6iUHfmcSs7FVU1QBBMfqe5XVJhj4GWMe2VzRIvBcuvaMLyUuZ61
26
+ TwPjfJRUCACo4MSQHEBlbWq9ZYzO8nZ+FyCldN/n5Uevp84BOyBO
27
+ -----END RSA PRIVATE KEY-----
@@ -1,30 +1,30 @@
1
1
  -----BEGIN RSA PRIVATE KEY-----
2
2
  Proc-Type: 4,ENCRYPTED
3
- DEK-Info: DES-EDE3-CBC,10EC04AAF2B5AC93
3
+ DEK-Info: AES-256-CBC,1F48315ACA40642785914C510FCE7477
4
4
 
5
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- dnZheTNH7UW+O4nLwpZ8WI+IYqIOh6s5Aj9ZQpuPfhgFOOqqwrEbCh88W6q5Qz82
25
- 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
- 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
- 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
- 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
- 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
30
30
  -----END RSA PRIVATE KEY-----
@@ -1,10 +1,12 @@
1
1
  -----BEGIN X509 CRL-----
2
- MIIBazCB1QIBATANBgkqhkiG9w0BAQUFADCBkjELMAkGA1UEBhMCVVMxETAPBgNV
3
- BAgMCE5ldyBZb3JrMRYwFAYDVQQHDA1OZXcgWW9yayBDaXR5MQ4wDAYDVQQKDAUx
4
- MEdlbjEPMA0GA1UECwwGS2VybmVsMRowGAYDVQQDDBFNeSBDZXJ0IEF1dGhvcml0
5
- eTEbMBkGCSqGSIb3DQEJARYMcm9vdEBsYXphcnVzFw0xMjEyMTIxODQ3NDFaFw00
6
- MDA0MjgxODQ3NDFaoA4wDDAKBgNVHRQEAwIBCzANBgkqhkiG9w0BAQUFAAOBgQAu
7
- PlPDGei2q6kdkoHe8vmDuts7Hm/o9LFbBmn0XUcfHisCJCPsJTyGCsgnfIiBcXJY
8
- 1LMKsQFnYGv28rE2ZPpFg2qNxL+6qUEzCvqaHLX9q1V0F+f8hHDxucNYu52oo/h0
9
- uNZxB1KPFI2PReG5d3oUYqJ2+EctKkrGtxSPzbN0gg==
2
+ MIIBzzCBuAIBATANBgkqhkiG9w0BAQsFADB1MRcwFQYDVQQDEw5SdWJ5IERyaXZl
3
+ ciBDQTEQMA4GA1UECxMHRHJpdmVyczEQMA4GA1UEChMHTW9uZ29EQjEWMBQGA1UE
4
+ BxMNTmV3IFlvcmsgQ2l0eTERMA8GA1UECBMITmV3IFlvcmsxCzAJBgNVBAYTAlVT
5
+ Fw0xOTAyMTQyMjE2NDJaFw0zOTAyMTQyMjE2NDJaoA8wDTALBgNVHRQEBAICEAEw
6
+ DQYJKoZIhvcNAQELBQADggEBAAZlakGW3JKfp6ZfMZqlyDvZZwXMYP4YEFT8ML81
7
+ vtOGyvDGqYVUCFSiXQK+pUaf9/TRijI5PH772hrD75/4n3t7tTLIvisJZTAFRXTd
8
+ UFM1jAvxPBaQ7/GIQIYOgsE5d5g9LIM4S9J2h3tUWMJOk2FR9a5J3BMfSHCl3OdQ
9
+ L7PXLq5EXc9NB871BQLB/O5IQyrDQUrB0gksFAryYGErZG39WrflB9Wdi5g5Vi4U
10
+ JcH7QQ3M7EnsWPHjO1qCUl1Q0B6aAtQRi+R8DDgWeAi7I77xIU/FcK8W2f1C5pjA
11
+ wLqusCP+pwuVidi9Rpsb687GnTEczdsdLn5RPWCQ0NT9lYY=
10
12
  -----END X509 CRL-----
@@ -1,12 +1,13 @@
1
1
  -----BEGIN X509 CRL-----
2
- MIIBujCCASMCAQEwDQYJKoZIhvcNAQEFBQAwgZIxCzAJBgNVBAYTAlVTMREwDwYD
3
- VQQIDAhOZXcgWW9yazEWMBQGA1UEBwwNTmV3IFlvcmsgQ2l0eTEOMAwGA1UECgwF
4
- MTBHZW4xDzANBgNVBAsMBktlcm5lbDEaMBgGA1UEAwwRTXkgQ2VydCBBdXRob3Jp
5
- dHkxGzAZBgkqhkiG9w0BCQEWDHJvb3RAbGF6YXJ1cxcNMTMxMjA2MTUzMzUwWhcN
6
- MTQwMTA1MTUzMzUwWjBMMBICAQwXDTEzMTIwNjE1MjczMFowGgIJAJGUg/wuW1KD
7
- Fw0xMjEyMTIxODQ4MjJaMBoCCQCRlIP8LltShRcNMTIxMjEyMTg0ODUyWqAOMAww
8
- CgYDVR0UBAMCAQ4wDQYJKoZIhvcNAQEFBQADgYEAERPfPdQnIafo1lYbFEx2ojrb
9
- eYqvWN9ykTyUGq2bKv+STYiuaKUz6daGVjELjn/safn5wHkYr9+C/kRRoCor5HYw
10
- N3uxHnkMpl6Xn7kgXL2b0jbdvfa44faOXdH2gbhzd8bFsOMra4QJHT6CgpYb3ei1
11
- +ePhAd1KS7tS/dyyP4c=
2
+ MIIB5zCB0AIBATANBgkqhkiG9w0BAQsFADB1MRcwFQYDVQQDEw5SdWJ5IERyaXZl
3
+ ciBDQTEQMA4GA1UECxMHRHJpdmVyczEQMA4GA1UEChMHTW9uZ29EQjEWMBQGA1UE
4
+ BxMNTmV3IFlvcmsgQ2l0eTERMA8GA1UECBMITmV3IFlvcmsxCzAJBgNVBAYTAlVT
5
+ Fw0xOTAyMTQyMjE4MjJaFw0zOTAyMTQyMjE4MjJaMBYwFAIDATMhFw0xOTAyMTQy
6
+ MjE3NDBaoA8wDTALBgNVHRQEBAICEAIwDQYJKoZIhvcNAQELBQADggEBABXDRWzZ
7
+ lkzXwgISQbBeg5+6hX9C3oPRXu83bVgs96tpR0H9Eb69cbDOAucPuZdwhwL4SOqO
8
+ 1dNAjjpQt+yCvzkLKLVtXHe7ElFWDQkJKG22vUJ+fXGt9Yz+IhXW40wa+eZrHZ1n
9
+ BWl6AXx62cXQnTqmhEP0pz8YaVQXUpzqaCAg3CKzINllpIg5C5c380Hu4bZgWeIC
10
+ VtJtO+jYsYz2I9nd2Gqn+8l/1Py6a2Ju08RAW6EvQ1DRYjde/bDf06t5gdlAgfsC
11
+ n+NpGFfQNahgaMnZ02d9RG/1oUt2sx/wihXfepG2WXZG31WGurHAsEuF8Xy+41hw
12
+ s8Cbtws19Tn+YxU=
12
13
  -----END X509 CRL-----
@@ -1,34 +1,49 @@
1
- -----BEGIN PRIVATE KEY-----
2
- MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAK53miP9GczBWXnq
3
- NxHwQkgVqsDuesjwJbWilMK4gf3fjnf2PN3qDpnGbZbPD0ij8975pIKtSPoDycFm
4
- A8Mogip0yU2Lv2lL56CWthSBftOFDL2CWIsmuuURFXZPiVLtLytfI9oLASZFlywW
5
- Cs83qEDTvdW8VoVhVsxV1JFDnpXLAgMBAAECgYBoGBgxrMt97UazhNkCrPT/CV5t
6
- 6lv8E7yMGMrlOyzkCkR4ssQyK3o2qbutJTGbR6czvIM5LKbD9Qqlh3ZrNHokWmTR
7
- VQQpJxt8HwP5boQvwRHg9+KSGr4JvRko1qxFs9C7Bzjt4r9VxdjhwZPdy0McGI/z
8
- yPXyQHjqBayrHV1EwQJBANorfCKeIxLhH3LAeUZuRS8ACldJ2N1kL6Ov43/v+0S/
9
- OprQeBTODuTds3sv7FCT1aYDTOe6JLNOwN2i4YVOMBsCQQDMuCozrwqftD17D06P
10
- 9+lRXUekY5kFBs5j28Xnl8t8jnuxsXtQUTru660LD0QrmDNSauhpEmlpJknicnGt
11
- hmwRAkEA12MI6bBPlir0/jgxQqxI1w7mJqj8Vg27zpEuO7dzzLoyJHddpcSNBbwu
12
- npaAakiZK42klj26T9+XHvjYRuAbMwJBAJ5WnwWEkGH/pUHGEAyYQdSVojDKe/MA
13
- Vae0tzguFswK5C8GyArSGRPsItYYA7D4MlG/sGx8Oh2C6MiFndkJzBECQDcP1y4r
14
- Qsek151t1zArLKH4gG5dQAeZ0Lc2VeC4nLMUqVwrHcZDdd1RzLlSaH3j1MekFVfT
15
- 6v6rrcNLEVbeuk4=
16
- -----END PRIVATE KEY-----
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEA0ylwgeFBksDMm5IMqRcClS5VDYDzLl0nJNtPpmqpzma9Tnzr
3
+ AQQoaBFAOQ7/Z7pM/gV/y+E3MzYepO5iAmum0bMk3qUfNByy8cgECQn+KOAj731H
4
+ G1W1zkENSlU8ZRnxxVZp0xcazEMmIyLT+AyFIZtu/Z67sRnb2BB0ew/yxrMK0IPG
5
+ SMOZcfhJz/OZW+uhwOls6KaErC4fVsIfApC+Xu63tX2bX8J2I8DYjRtS9w0hHqoi
6
+ CEgvzrSi1JL6WBQ1d7IgnlK2Mnuwikkzg1JXuo7ZEopNVPMOJsKLySiDGjShoe64
7
+ Rx7UnbQukBXB76PGn3stNwiLOkr1JViHYH/XqwIDAQABAoIBAE2zzga9ERgjgict
8
+ EyOVqAmlRv71GIdTF/hkC2c9kMa236pmJUP2d7fzwSI99pYA5BwFggVQFrPtklE2
9
+ tzIU0woPVd3n/Rd8CA0YgQOifbgk4pRaETRp0cDYBz/3JYY+ic0IA2D9+4p2my4K
10
+ vt1kHglD3Q/OvVpqHY/gXjx6neenhw3YmAycj/jKQoF4d1uJ25EQPxy8KCPOtcBv
11
+ 4VZH2V1favKANmxbqnxRX02UhFxOIhTUpTMwnEqcDgYO/rnpEQ+/senf87JkB7Vs
12
+ FF+twnckOWcvqXC1AUNTKyeVz3NzL0+SXnZtdBGMIxq1CQFxB5EOAMGuLEc/ZTrz
13
+ ms18CiECgYEA+0y7c0+iSKc2de3ZJWysta8pbd6EMLbEU2SDLy2BItMTFWIl5Ikk
14
+ FzWwGn/86UcueBT3pEX/qxQAVX0mmQuROOU2Z/7SX1CyRcGMHd54l+xwcwgtk7U1
15
+ Jf2vhMgT6ZE/8YMOqJCVmYIqh40b2XmFVXZNaNz8VHDfkRWX/8JEl90CgYEA1xyF
16
+ IUfOAAQZTkKLTnvHvg12nvs85kf4c1abe+O9ctAVzYfrNyaYA42YMsnyXBcxxkMp
17
+ O/znPq0c652EMU7OiVK9mosvWUcEiyqzC2nOeWT/hfpM7DvudjugGbNSxgVsvVbd
18
+ MeLTAJs3kUicidS+bQ/7hBGI8eY2OVzlSGGmuScCgYEAqTA5B+J2dQm2/eC7kJnB
19
+ EbUzZFgqkY2LUkXamHm/do27TGs+7cVzOfkYbk77HKei3o/nRn8mKa0WqHfQ87s4
20
+ 86BGZ+/E/Q0caSBs0HNGp6o07w1zef3HIaPRdskpttfmwBgnV0+4mJhtP8O+G0XY
21
+ gfhbF52oeMVhj5GFO1k0yzUCgYBKZk/Zaedi9Af4nGVoOMGmBywO4qB2mU/iPIM8
22
+ f1FIA5Z25trA0XVkTTXl4xkTJuaNRy9c0yT79Y36JBnToAkpT9fKOveebkSxCYyx
23
+ lt/V9su2ABNY5YWdmRPPr8kiOkAY4JFSrrwCCq1Wb4HM3isat5trW1E9MT1x66JV
24
+ vYiXowKBgQDVcwEyiBFY2sdwMQJ8jyHwJxcGzp7M2eDfbBOXhA2vnMM0M2J1PyxR
25
+ VM9cElyyX5/KsdnmIRCa/GpTm5Fuuua9pG3geB2z+Gxq+9wccc/72MQfX1GoYWc8
26
+ StVxFy3oAncFNiXtgew++P/8ANZiABBXU4aG13iLJotQkXjO2okqBA==
27
+ -----END RSA PRIVATE KEY-----
17
28
  -----BEGIN CERTIFICATE-----
18
- MIIC7jCCAlegAwIBAgIBCjANBgkqhkiG9w0BAQUFADCBkjELMAkGA1UEBhMCVVMx
19
- ETAPBgNVBAgMCE5ldyBZb3JrMRYwFAYDVQQHDA1OZXcgWW9yayBDaXR5MQ4wDAYD
20
- VQQKDAUxMEdlbjEPMA0GA1UECwwGS2VybmVsMRowGAYDVQQDDBFNeSBDZXJ0IEF1
21
- dGhvcml0eTEbMBkGCSqGSIb3DQEJARYMcm9vdEBsYXphcnVzMB4XDTEzMTIwNTEz
22
- MjU0MFoXDTQxMDQyMTEzMjU0MFowajELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5l
23
- dyBZb3JrMRYwFAYDVQQHDA1OZXcgWW9yayBDaXR5MQ4wDAYDVQQKDAUxMEdlbjEP
24
- MA0GA1UECwwGS2VybmVsMQ8wDQYDVQQDDAZzZXJ2ZXIwgZ8wDQYJKoZIhvcNAQEB
25
- BQADgY0AMIGJAoGBAK53miP9GczBWXnqNxHwQkgVqsDuesjwJbWilMK4gf3fjnf2
26
- PN3qDpnGbZbPD0ij8975pIKtSPoDycFmA8Mogip0yU2Lv2lL56CWthSBftOFDL2C
27
- WIsmuuURFXZPiVLtLytfI9oLASZFlywWCs83qEDTvdW8VoVhVsxV1JFDnpXLAgMB
28
- AAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJh
29
- dGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBQgCkKiZhUV9/Zo7RwYYwm2cNK6tzAf
30
- BgNVHSMEGDAWgBQHQRk6n37FtyJOt7zV3+T8CbhkFjANBgkqhkiG9w0BAQUFAAOB
31
- gQCbsfr+Q4pty4Fy38lSxoCgnbB4pX6+Ex3xyw5zxDYR3xUlb/uHBiNZ1dBrXBxU
32
- ekU8dEvf+hx4iRDSW/C5N6BGnBBhCHcrPabo2bEEWKVsbUC3xchTB5rNGkvnMt9t
33
- G9ol7vanuzjL3S8/2PB33OshkBH570CxqqPflQbdjwt9dg==
34
- -----END CERTIFICATE-----
29
+ MIIDkjCCAnqgAwIBAgIDAzYnMA0GCSqGSIb3DQEBCwUAMHUxFzAVBgNVBAMTDlJ1
30
+ YnkgRHJpdmVyIENBMRAwDgYDVQQLEwdEcml2ZXJzMRAwDgYDVQQKEwdNb25nb0RC
31
+ MRYwFAYDVQQHEw1OZXcgWW9yayBDaXR5MREwDwYDVQQIEwhOZXcgWW9yazELMAkG
32
+ A1UEBhMCVVMwHhcNMTkwMjE0MjA1NzUwWhcNMzkwMjE0MjA1NzUwWjBwMRIwEAYD
33
+ VQQDEwlsb2NhbGhvc3QxEDAOBgNVBAsTB0RyaXZlcnMxEDAOBgNVBAoTB01vbmdv
34
+ REIxFjAUBgNVBAcTDU5ldyBZb3JrIENpdHkxETAPBgNVBAgTCE5ldyBZb3JrMQsw
35
+ CQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANMpcIHh
36
+ QZLAzJuSDKkXApUuVQ2A8y5dJyTbT6Zqqc5mvU586wEEKGgRQDkO/2e6TP4Ff8vh
37
+ NzM2HqTuYgJrptGzJN6lHzQcsvHIBAkJ/ijgI+99RxtVtc5BDUpVPGUZ8cVWadMX
38
+ GsxDJiMi0/gMhSGbbv2eu7EZ29gQdHsP8sazCtCDxkjDmXH4Sc/zmVvrocDpbOim
39
+ hKwuH1bCHwKQvl7ut7V9m1/CdiPA2I0bUvcNIR6qIghIL860otSS+lgUNXeyIJ5S
40
+ tjJ7sIpJM4NSV7qO2RKKTVTzDibCi8kogxo0oaHuuEce1J20LpAVwe+jxp97LTcI
41
+ izpK9SVYh2B/16sCAwEAAaMwMC4wLAYDVR0RBCUwI4IJbG9jYWxob3N0hwR/AAAB
42
+ hxAAAAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEBCwUAA4IBAQCDTFW7+QnJ227K
43
+ K5E2ePkuJlqwTxssYUXcyDt8PTG1eAGhByzG1AXZYdIjdIkMUIyhhpSplUwOAT1g
44
+ Plp5JAlBgGNZ1LGFvy7D8OhAtFYBH0t5afFU+Ze5RrVv0Vag8d5ffgNhU/9q/LPW
45
+ 6quAHCSJoWRBYlNQ8XQCNgQiN4rYEIWvazoANNYTei7eJO3v53+s+RJwjteyW8Gr
46
+ Wp19inbpnFRObe1B1QC/FLnRGtBCgasEH4QNuvhA67iIQIJ1LZ6UUeP7IbCaVZ6E
47
+ tF6n48uzbAwVVq99bq0TkCkwx+1oP7Oerjww4Ys5OkFCJDR2kEnWUT3uhoU9+93h
48
+ 8jejE8Hl
49
+ -----END CERTIFICATE-----
@@ -77,16 +77,14 @@ module Mongo
77
77
  # @since 2.0.0
78
78
  attr_reader :description
79
79
 
80
- def configuration_satisfied?(client)
81
- server_version_satisfied?(client) && topology_satisfied?
82
- end
83
-
84
80
  def initialize(test, coll1, coll2, db1, db2)
85
81
  @description = test['description']
86
82
  @min_server_version = test['minServerVersion']
87
83
  @max_server_version = test['maxServerVersion']
88
84
  @target_type = test['target']
89
- @topologies = test['topology']
85
+ @topologies = test['topology'].map do |topology|
86
+ {'single' => :single, 'replicaset' => :replica_set, 'sharded' => :sharded}[topology]
87
+ end
90
88
  @pipeline = test['changeStreamPipeline'] || []
91
89
  @options = test['changeStreamOptions'] || {}
92
90
  @operations = test['operations'].map { |op| Operation.new(op) }
@@ -98,6 +96,8 @@ module Mongo
98
96
  @db2_name = db2
99
97
  end
100
98
 
99
+ attr_reader :topologies
100
+
101
101
  def setup_test
102
102
  @global_client = ClientRegistry.instance.global_client('root_authorized').use('admin')
103
103
 
@@ -155,12 +155,6 @@ module Mongo
155
155
  }
156
156
  end
157
157
 
158
- def teardown_test
159
- @global_client && @global_client.close
160
- @db1 && @db1.drop
161
- @db2 && @db2.drop
162
- end
163
-
164
158
  def match_result?(result)
165
159
  case @result.first.first
166
160
  when 'success'
@@ -176,6 +170,10 @@ module Mongo
176
170
  end
177
171
  end
178
172
 
173
+ def server_version_satisfied?(client)
174
+ lower_bound_satisfied?(client) && upper_bound_satisfied?(client)
175
+ end
176
+
179
177
  private
180
178
 
181
179
  def events
@@ -227,37 +225,19 @@ module Mongo
227
225
  end
228
226
  end
229
227
 
230
- def topology_satisfied?
231
- @topologies.any? do |topology|
232
- case topology
233
- when 'single'
234
- standalone?
235
- when 'replicaset'
236
- replica_set?
237
- when 'sharded'
238
- sharded?
239
- else
240
- false
241
- end
242
- end
243
- end
244
-
245
- def server_version_satisfied?(client)
246
- lower_bound_satisfied?(client) && upper_bound_satisfied?(client)
247
- end
248
-
249
228
  def server_version(client)
250
229
  @server_version ||= client.database.command(buildInfo: 1).first['version']
251
230
  end
252
231
 
253
232
  def upper_bound_satisfied?(client)
254
233
  return true unless @max_server_version
255
- server_version(client) <= @max_server_version
234
+ ClusterConfig.instance.server_version <= @max_server_version
256
235
  end
257
236
 
258
237
  def lower_bound_satisfied?(client)
259
238
  return true unless @min_server_version
260
- @min_server_version <= server_version(client)
239
+ #@min_server_version <= server_version(client)
240
+ @min_server_version <= ClusterConfig.instance.fcv_ish
261
241
  end
262
242
  end
263
243
  end
@@ -49,7 +49,18 @@ class ClientRegistry
49
49
 
50
50
  def global_client(name)
51
51
  if client = @global_clients[name]
52
- unless client.cluster.connected?
52
+ if !client.cluster.connected?
53
+ reconnect = true
54
+ else
55
+ reconnect = false
56
+ client.cluster.servers_list.each do |server|
57
+ thread = server.monitor.instance_variable_get('@thread')
58
+ if thread.nil? || !thread.alive?
59
+ reconnect = true
60
+ end
61
+ end
62
+ end
63
+ if reconnect
53
64
  client.reconnect
54
65
  end
55
66
  return client
@@ -28,14 +28,36 @@ class ClusterConfig
28
28
  end
29
29
 
30
30
  def server_version
31
- client = ClientRegistry.instance.global_client('authorized')
32
- @server_version ||= client.database.command(buildInfo: 1).first['version']
31
+ @server_version ||= begin
32
+ client = ClientRegistry.instance.global_client('authorized')
33
+ client.database.command(buildInfo: 1).first['version']
34
+ end
33
35
  end
34
36
 
35
37
  def short_server_version
36
38
  server_version.split('.')[0..1].join('.')
37
39
  end
38
40
 
41
+ def fcv
42
+ @fcv ||= begin
43
+ client = ClientRegistry.instance.global_client('root_authorized')
44
+ rv = client.use(:admin).command(getParameter: 1, featureCompatibilityVersion: 1).first['featureCompatibilityVersion']
45
+ rv['version'] || rv
46
+ end
47
+ end
48
+
49
+ # Per https://jira.mongodb.org/browse/SERVER-39052, working with FCV
50
+ # in sharded topologies is annoying. Also, FCV doesn't exist in servers
51
+ # less than 3.4. This method returns FCV on 3.4+ servers when in single
52
+ # or RS topologies, and otherwise returns the major.minor server version.
53
+ def fcv_ish
54
+ if server_version >= '3.4' && !mongos?
55
+ fcv
56
+ else
57
+ short_server_version
58
+ end
59
+ end
60
+
39
61
  def primary_address
40
62
  @primary_address ||= begin
41
63
  client = ClientRegistry.instance.global_client('authorized')
@@ -46,4 +68,28 @@ class ClusterConfig
46
68
  end.seed
47
69
  end
48
70
  end
71
+
72
+ # Try running a command on the admin database to see if the mongod was
73
+ # started with auth.
74
+ def auth_enabled?
75
+ if @auth_enabled.nil?
76
+ @auth_enabled = begin
77
+ scanned_client.use(:admin).command(getCmdLineOpts: 1).first["argv"].include?("--auth")
78
+ rescue => e
79
+ e.message =~ /(not authorized)|(unauthorized)|(no users authenticated)|(requires authentication)/
80
+ end
81
+ end
82
+ @auth_enabled
83
+ end
84
+
85
+ def topology
86
+ @topology ||= begin
87
+ topology = scanned_client.cluster.topology.class.name.sub(/.*::/, '')
88
+ topology = topology.gsub(/([A-Z])/) { |match| '_' + match.downcase }.sub(/^_/, '')
89
+ if topology =~ /^replica_set/
90
+ topology = 'replica_set'
91
+ end
92
+ topology.to_sym
93
+ end
94
+ end
49
95
  end