mongo 2.7.0 → 2.7.1

Sign up to get free protection for your applications and to get access to all the features.
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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
- LGgQwI9BIVT9ZDTahe0182Cb7WS1KA7VrixRV3zm2NSgrP8D9yH6/BlogdRtjCc4
12
- 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
- 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
- 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
- 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
- YSkv6TXpHZTfE0ai2Sm1yYuB5FuCco1ehPGFLf+a9dSv5xT+3qAqM9pkbYDPDSyS
17
- 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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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
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