mongo 2.11.6 → 2.12.0.rc0

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 (327) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +2 -2
  3. data.tar.gz.sig +0 -0
  4. data/CONTRIBUTING.md +1 -1
  5. data/lib/mongo.rb +3 -0
  6. data/lib/mongo/address.rb +13 -2
  7. data/lib/mongo/auth.rb +1 -0
  8. data/lib/mongo/auth/credential_cache.rb +51 -0
  9. data/lib/mongo/auth/scram/conversation.rb +20 -16
  10. data/lib/mongo/auth/user.rb +0 -8
  11. data/lib/mongo/auth/user/view.rb +4 -4
  12. data/lib/mongo/background_thread.rb +1 -1
  13. data/lib/mongo/bulk_write.rb +5 -5
  14. data/lib/mongo/client.rb +126 -11
  15. data/lib/mongo/client_encryption.rb +103 -0
  16. data/lib/mongo/cluster.rb +2 -2
  17. data/lib/mongo/cluster/reapers/cursor_reaper.rb +18 -6
  18. data/lib/mongo/cluster/sdam_flow.rb +54 -58
  19. data/lib/mongo/cluster/srv_monitor.rb +1 -1
  20. data/lib/mongo/collection.rb +3 -3
  21. data/lib/mongo/collection/view.rb +1 -1
  22. data/lib/mongo/collection/view/aggregation.rb +1 -1
  23. data/lib/mongo/collection/view/change_stream.rb +12 -3
  24. data/lib/mongo/collection/view/iterable.rb +14 -5
  25. data/lib/mongo/collection/view/map_reduce.rb +2 -2
  26. data/lib/mongo/collection/view/readable.rb +7 -9
  27. data/lib/mongo/collection/view/writable.rb +7 -7
  28. data/lib/mongo/crypt.rb +33 -0
  29. data/lib/mongo/crypt/auto_decryption_context.rb +42 -0
  30. data/lib/mongo/crypt/auto_encrypter.rb +169 -0
  31. data/lib/mongo/crypt/auto_encryption_context.rb +44 -0
  32. data/lib/mongo/crypt/binary.rb +155 -0
  33. data/lib/mongo/crypt/binding.rb +1162 -0
  34. data/lib/mongo/crypt/context.rb +135 -0
  35. data/lib/mongo/crypt/data_key_context.rb +162 -0
  36. data/lib/mongo/crypt/encryption_io.rb +283 -0
  37. data/lib/mongo/crypt/explicit_decryption_context.rb +40 -0
  38. data/lib/mongo/crypt/explicit_encrypter.rb +117 -0
  39. data/lib/mongo/crypt/explicit_encryption_context.rb +89 -0
  40. data/lib/mongo/crypt/handle.rb +293 -0
  41. data/lib/mongo/crypt/hooks.rb +90 -0
  42. data/lib/mongo/crypt/kms_context.rb +67 -0
  43. data/lib/mongo/crypt/status.rb +131 -0
  44. data/lib/mongo/cursor.rb +64 -32
  45. data/lib/mongo/database.rb +13 -6
  46. data/lib/mongo/database/view.rb +13 -4
  47. data/lib/mongo/dbref.rb +9 -2
  48. data/lib/mongo/error.rb +5 -1
  49. data/lib/mongo/error/crypt_error.rb +31 -0
  50. data/lib/mongo/error/{failed_stringprep_validation.rb → failed_string_prep_validation.rb} +0 -0
  51. data/lib/mongo/error/invalid_cursor_operation.rb +27 -0
  52. data/lib/mongo/error/kms_error.rb +22 -0
  53. data/lib/mongo/error/max_bson_size.rb +14 -3
  54. data/lib/mongo/error/mongocryptd_spawn_error.rb +22 -0
  55. data/lib/mongo/error/no_server_available.rb +8 -3
  56. data/lib/mongo/error/operation_failure.rb +1 -0
  57. data/lib/mongo/grid/file.rb +0 -5
  58. data/lib/mongo/grid/file/chunk.rb +0 -2
  59. data/lib/mongo/grid/file/info.rb +2 -1
  60. data/lib/mongo/grid/fs_bucket.rb +13 -15
  61. data/lib/mongo/grid/stream/write.rb +3 -9
  62. data/lib/mongo/index/view.rb +3 -3
  63. data/lib/mongo/monitoring/event/command_started.rb +6 -1
  64. data/lib/mongo/operation/collections_info.rb +6 -3
  65. data/lib/mongo/operation/delete/op_msg.rb +1 -1
  66. data/lib/mongo/operation/find/op_msg.rb +4 -1
  67. data/lib/mongo/operation/get_more/op_msg.rb +4 -1
  68. data/lib/mongo/operation/insert/command.rb +2 -2
  69. data/lib/mongo/operation/insert/legacy.rb +2 -2
  70. data/lib/mongo/operation/insert/op_msg.rb +3 -3
  71. data/lib/mongo/operation/result.rb +36 -27
  72. data/lib/mongo/operation/shared/executable.rb +10 -8
  73. data/lib/mongo/operation/shared/executable_no_validate.rb +2 -2
  74. data/lib/mongo/operation/shared/op_msg_or_command.rb +2 -2
  75. data/lib/mongo/operation/shared/op_msg_or_find_command.rb +2 -2
  76. data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +2 -2
  77. data/lib/mongo/operation/shared/write.rb +17 -10
  78. data/lib/mongo/operation/update/op_msg.rb +1 -1
  79. data/lib/mongo/protocol/compressed.rb +6 -5
  80. data/lib/mongo/protocol/insert.rb +3 -1
  81. data/lib/mongo/protocol/message.rb +72 -8
  82. data/lib/mongo/protocol/msg.rb +191 -37
  83. data/lib/mongo/protocol/query.rb +7 -9
  84. data/lib/mongo/protocol/serializers.rb +6 -2
  85. data/lib/mongo/server.rb +10 -4
  86. data/lib/mongo/server/connection.rb +20 -9
  87. data/lib/mongo/server/connection_base.rb +81 -12
  88. data/lib/mongo/server/connection_common.rb +61 -0
  89. data/lib/mongo/server/connection_pool.rb +37 -1
  90. data/lib/mongo/server/description.rb +9 -11
  91. data/lib/mongo/server/monitor.rb +2 -0
  92. data/lib/mongo/server/monitor/connection.rb +3 -18
  93. data/lib/mongo/server/pending_connection.rb +2 -1
  94. data/lib/mongo/session.rb +2 -2
  95. data/lib/mongo/session/session_pool.rb +8 -3
  96. data/lib/mongo/socket.rb +29 -16
  97. data/lib/mongo/socket/ssl.rb +23 -8
  98. data/lib/mongo/socket/tcp.rb +12 -3
  99. data/lib/mongo/timeout.rb +49 -0
  100. data/lib/mongo/uri.rb +30 -1
  101. data/lib/mongo/version.rb +1 -1
  102. data/mongo.gemspec +1 -1
  103. data/spec/README.md +134 -7
  104. data/spec/integration/auth_spec.rb +53 -0
  105. data/spec/integration/{client_options_spec.rb → client_authentication_options_spec.rb} +10 -10
  106. data/spec/integration/client_construction_spec.rb +76 -1
  107. data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +351 -0
  108. data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +301 -0
  109. data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +71 -0
  110. data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +76 -0
  111. data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +216 -0
  112. data/spec/integration/client_side_encryption/auto_encryption_spec.rb +600 -0
  113. data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +183 -0
  114. data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +74 -0
  115. data/spec/integration/client_side_encryption/client_close_spec.rb +59 -0
  116. data/spec/integration/client_side_encryption/corpus_spec.rb +228 -0
  117. data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +132 -0
  118. data/spec/integration/client_side_encryption/data_key_spec.rb +163 -0
  119. data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +114 -0
  120. data/spec/integration/client_side_encryption/external_key_vault_spec.rb +137 -0
  121. data/spec/integration/client_side_encryption/views_spec.rb +42 -0
  122. data/spec/integration/client_update_spec.rb +120 -0
  123. data/spec/integration/command_monitoring_spec.rb +3 -1
  124. data/spec/integration/command_spec.rb +44 -10
  125. data/spec/integration/connection_spec.rb +57 -0
  126. data/spec/integration/reconnect_spec.rb +7 -6
  127. data/spec/integration/size_limit_spec.rb +94 -0
  128. data/spec/integration/srv_monitoring_spec.rb +14 -6
  129. data/spec/lite_spec_helper.rb +31 -22
  130. data/spec/mongo/auth/cr_spec.rb +8 -0
  131. data/spec/mongo/auth/ldap_spec.rb +5 -1
  132. data/spec/mongo/auth/scram/conversation_spec.rb +5 -6
  133. data/spec/mongo/auth/scram/negotiation_spec.rb +74 -75
  134. data/spec/mongo/auth/scram_spec.rb +45 -35
  135. data/spec/mongo/auth/x509_spec.rb +5 -1
  136. data/spec/mongo/client_construction_spec.rb +206 -3
  137. data/spec/mongo/client_encryption_spec.rb +408 -0
  138. data/spec/mongo/cluster/cursor_reaper_spec.rb +12 -8
  139. data/spec/mongo/cluster/socket_reaper_spec.rb +14 -3
  140. data/spec/mongo/collection/view/aggregation_spec.rb +0 -2
  141. data/spec/mongo/collection/view/change_stream_spec.rb +7 -7
  142. data/spec/mongo/collection/view/map_reduce_spec.rb +3 -3
  143. data/spec/mongo/collection/view_spec.rb +1 -1
  144. data/spec/mongo/collection_spec.rb +4 -33
  145. data/spec/mongo/crypt/auto_decryption_context_spec.rb +90 -0
  146. data/spec/mongo/crypt/auto_encrypter_spec.rb +182 -0
  147. data/spec/mongo/crypt/auto_encryption_context_spec.rb +107 -0
  148. data/spec/mongo/crypt/binary_spec.rb +115 -0
  149. data/spec/mongo/crypt/binding/binary_spec.rb +56 -0
  150. data/spec/mongo/crypt/binding/context_spec.rb +257 -0
  151. data/spec/mongo/crypt/binding/helpers_spec.rb +46 -0
  152. data/spec/mongo/crypt/binding/mongocrypt_spec.rb +144 -0
  153. data/spec/mongo/crypt/binding/status_spec.rb +99 -0
  154. data/spec/mongo/crypt/binding/version_spec.rb +22 -0
  155. data/spec/mongo/crypt/binding_unloaded_spec.rb +20 -0
  156. data/spec/mongo/crypt/data_key_context_spec.rb +213 -0
  157. data/spec/mongo/crypt/encryption_io_spec.rb +136 -0
  158. data/spec/mongo/crypt/explicit_decryption_context_spec.rb +72 -0
  159. data/spec/mongo/crypt/explicit_encryption_context_spec.rb +170 -0
  160. data/spec/mongo/crypt/handle_spec.rb +198 -0
  161. data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +108 -0
  162. data/spec/mongo/crypt/status_spec.rb +152 -0
  163. data/spec/mongo/cursor_spec.rb +24 -4
  164. data/spec/mongo/database_spec.rb +20 -0
  165. data/spec/mongo/error/crypt_error_spec.rb +26 -0
  166. data/spec/mongo/error/max_bson_size_spec.rb +35 -0
  167. data/spec/mongo/error/no_server_available_spec.rb +11 -1
  168. data/spec/mongo/error/operation_failure_spec.rb +6 -6
  169. data/spec/mongo/operation/aggregate_spec.rb +1 -1
  170. data/spec/mongo/operation/collections_info_spec.rb +1 -1
  171. data/spec/mongo/operation/command_spec.rb +3 -3
  172. data/spec/mongo/operation/create_index_spec.rb +3 -3
  173. data/spec/mongo/operation/create_user_spec.rb +3 -3
  174. data/spec/mongo/operation/delete/bulk_spec.rb +6 -6
  175. data/spec/mongo/operation/delete/op_msg_spec.rb +1 -6
  176. data/spec/mongo/operation/delete_spec.rb +7 -7
  177. data/spec/mongo/operation/drop_index_spec.rb +2 -2
  178. data/spec/mongo/operation/find/legacy_spec.rb +1 -1
  179. data/spec/mongo/operation/get_more_spec.rb +1 -1
  180. data/spec/mongo/operation/indexes_spec.rb +1 -1
  181. data/spec/mongo/operation/insert/bulk_spec.rb +7 -7
  182. data/spec/mongo/operation/insert/op_msg_spec.rb +3 -6
  183. data/spec/mongo/operation/insert_spec.rb +12 -12
  184. data/spec/mongo/operation/map_reduce_spec.rb +2 -2
  185. data/spec/mongo/operation/remove_user_spec.rb +3 -3
  186. data/spec/mongo/operation/update/bulk_spec.rb +6 -6
  187. data/spec/mongo/operation/update/op_msg_spec.rb +3 -6
  188. data/spec/mongo/operation/update_spec.rb +7 -7
  189. data/spec/mongo/operation/update_user_spec.rb +1 -1
  190. data/spec/mongo/protocol/compressed_spec.rb +2 -3
  191. data/spec/mongo/protocol/delete_spec.rb +9 -8
  192. data/spec/mongo/protocol/get_more_spec.rb +9 -8
  193. data/spec/mongo/protocol/insert_spec.rb +9 -8
  194. data/spec/mongo/protocol/kill_cursors_spec.rb +6 -5
  195. data/spec/mongo/protocol/msg_spec.rb +57 -53
  196. data/spec/mongo/protocol/query_spec.rb +12 -12
  197. data/spec/mongo/protocol/registry_spec.rb +1 -1
  198. data/spec/mongo/protocol/reply_spec.rb +1 -1
  199. data/spec/mongo/protocol/update_spec.rb +10 -9
  200. data/spec/mongo/server/connection_pool_spec.rb +1 -1
  201. data/spec/mongo/server/connection_spec.rb +28 -7
  202. data/spec/mongo/socket_spec.rb +1 -1
  203. data/spec/mongo/timeout_spec.rb +85 -0
  204. data/spec/mongo/uri/srv_protocol_spec.rb +2 -2
  205. data/spec/mongo/uri_spec.rb +52 -5
  206. data/spec/mongo/write_concern_spec.rb +13 -1
  207. data/spec/{support → runners}/auth.rb +14 -1
  208. data/spec/{support → runners}/change_streams.rb +1 -1
  209. data/spec/{support → runners}/change_streams/operation.rb +0 -0
  210. data/spec/{support → runners}/cmap.rb +1 -1
  211. data/spec/{support → runners}/cmap/verifier.rb +0 -0
  212. data/spec/{support → runners}/command_monitoring.rb +0 -0
  213. data/spec/runners/connection_string.rb +358 -4
  214. data/spec/{support → runners}/crud.rb +9 -9
  215. data/spec/{support → runners}/crud/context.rb +0 -0
  216. data/spec/{support → runners}/crud/operation.rb +7 -3
  217. data/spec/{support → runners}/crud/outcome.rb +0 -0
  218. data/spec/{support → runners}/crud/requirement.rb +1 -1
  219. data/spec/{support → runners}/crud/spec.rb +12 -1
  220. data/spec/{support → runners}/crud/test.rb +0 -0
  221. data/spec/{support → runners}/crud/test_base.rb +0 -0
  222. data/spec/{support → runners}/crud/verifier.rb +10 -12
  223. data/spec/{support → runners}/gridfs.rb +0 -0
  224. data/spec/{support → runners}/sdam_monitoring.rb +0 -0
  225. data/spec/{support → runners}/server_discovery_and_monitoring.rb +0 -0
  226. data/spec/{support → runners}/server_selection.rb +0 -0
  227. data/spec/{support → runners}/server_selection_rtt.rb +0 -0
  228. data/spec/{support → runners}/transactions.rb +4 -4
  229. data/spec/{support → runners}/transactions/context.rb +0 -0
  230. data/spec/{support → runners}/transactions/operation.rb +0 -0
  231. data/spec/{support → runners}/transactions/spec.rb +0 -0
  232. data/spec/{support → runners}/transactions/test.rb +37 -5
  233. data/spec/spec_helper.rb +0 -5
  234. data/spec/spec_tests/auth_spec.rb +3 -3
  235. data/spec/spec_tests/client_side_encryption_spec.rb +13 -0
  236. data/spec/spec_tests/connection_string_spec.rb +1 -1
  237. data/spec/spec_tests/data/auth/connection-string.yml +13 -0
  238. data/spec/spec_tests/data/client_side_encryption/aggregate.yml +134 -0
  239. data/spec/spec_tests/data/client_side_encryption/badQueries.yml +526 -0
  240. data/spec/spec_tests/data/client_side_encryption/badSchema.yml +73 -0
  241. data/spec/spec_tests/data/client_side_encryption/basic.yml +116 -0
  242. data/spec/spec_tests/data/client_side_encryption/bulk.yml +85 -0
  243. data/spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml +100 -0
  244. data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +42 -0
  245. data/spec/spec_tests/data/client_side_encryption/count.yml +61 -0
  246. data/spec/spec_tests/data/client_side_encryption/countDocuments.yml +59 -0
  247. data/spec/spec_tests/data/client_side_encryption/delete.yml +105 -0
  248. data/spec/spec_tests/data/client_side_encryption/distinct.yml +73 -0
  249. data/spec/spec_tests/data/client_side_encryption/explain.yml +64 -0
  250. data/spec/spec_tests/data/client_side_encryption/find.yml +119 -0
  251. data/spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml +57 -0
  252. data/spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml +57 -0
  253. data/spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml +57 -0
  254. data/spec/spec_tests/data/client_side_encryption/getMore.yml +68 -0
  255. data/spec/spec_tests/data/client_side_encryption/insert.yml +102 -0
  256. data/spec/spec_tests/data/client_side_encryption/keyAltName.yml +71 -0
  257. data/spec/spec_tests/data/client_side_encryption/localKMS.yml +54 -0
  258. data/spec/spec_tests/data/client_side_encryption/localSchema.yml +72 -0
  259. data/spec/spec_tests/data/client_side_encryption/malformedCiphertext.yml +69 -0
  260. data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +20 -0
  261. data/spec/spec_tests/data/client_side_encryption/missingKey.yml +49 -0
  262. data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +61 -0
  263. data/spec/spec_tests/data/client_side_encryption/types.yml +527 -0
  264. data/spec/spec_tests/data/client_side_encryption/unsupportedCommand.yml +25 -0
  265. data/spec/spec_tests/data/client_side_encryption/updateMany.yml +77 -0
  266. data/spec/spec_tests/data/client_side_encryption/updateOne.yml +168 -0
  267. data/spec/spec_tests/data/read_write_concern/connection-string/write-concern.yml +1 -4
  268. data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +21 -0
  269. data/spec/spec_tests/data/sdam/rs/incompatible_ghost.yml +2 -4
  270. data/spec/spec_tests/data/sdam/rs/incompatible_other.yml +1 -1
  271. data/spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml +73 -0
  272. data/spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml +1 -2
  273. data/spec/spec_tests/data/sdam/rs/repeated.yml +101 -0
  274. data/spec/spec_tests/data/sdam/rs/{primary_address_change.yml → ruby_primary_address_change.yml} +2 -0
  275. data/spec/spec_tests/data/sdam/rs/{secondary_wrong_set_name_with_primary_second.yml → ruby_secondary_wrong_set_name_with_primary_second.yml} +0 -0
  276. data/spec/spec_tests/data/sdam/sharded/ruby_discovered_single_mongos.yml +27 -0
  277. data/spec/spec_tests/data/sdam/sharded/{primary_address_change.yml → ruby_primary_different_address.yml} +1 -1
  278. data/spec/spec_tests/data/sdam/sharded/{primary_mismatched_me.yml → ruby_primary_mismatched_me.yml} +1 -1
  279. data/spec/spec_tests/data/sdam/single/{primary_address_change.yml → ruby_primary_different_address.yml} +1 -1
  280. data/spec/spec_tests/data/sdam/single/{primary_mismatched_me.yml → ruby_primary_mismatched_me.yml} +1 -1
  281. data/spec/spec_tests/data/sdam_monitoring/{replica_set_with_primary_change.yml → replica_set_primary_address_change.yml} +27 -5
  282. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_me_mismatch.yml +26 -74
  283. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +20 -16
  284. data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +73 -0
  285. data/spec/spec_tests/data/transactions/pin-mongos.yml +2 -3
  286. data/spec/spec_tests/data/uri_options/auth-options.yml +10 -0
  287. data/spec/spec_tests/data/uri_options/tls-options.yml +75 -4
  288. data/spec/spec_tests/read_write_concern_connection_string_spec.rb +1 -1
  289. data/spec/spec_tests/uri_options_spec.rb +6 -8
  290. data/spec/stress/connection_pool_timing_spec.rb +6 -3
  291. data/spec/support/certificates/README.md +4 -0
  292. data/spec/support/certificates/server-second-level-bundle.pem +77 -77
  293. data/spec/support/certificates/server-second-level.crt +52 -52
  294. data/spec/support/certificates/server-second-level.key +25 -25
  295. data/spec/support/certificates/server-second-level.pem +77 -77
  296. data/spec/support/client_registry.rb +19 -3
  297. data/spec/support/cluster_config.rb +9 -1
  298. data/spec/support/common_shortcuts.rb +12 -0
  299. data/spec/support/constraints.rb +16 -0
  300. data/spec/support/crypt.rb +140 -0
  301. data/spec/support/crypt/corpus/corpus-key-aws.json +33 -0
  302. data/spec/support/crypt/corpus/corpus-key-local.json +31 -0
  303. data/spec/support/crypt/corpus/corpus-schema.json +2057 -0
  304. data/spec/support/crypt/corpus/corpus.json +3657 -0
  305. data/spec/support/crypt/corpus/corpus_encrypted.json +4152 -0
  306. data/spec/support/crypt/data_keys/key_document_aws.json +34 -0
  307. data/spec/support/crypt/data_keys/key_document_local.json +31 -0
  308. data/spec/support/crypt/external/external-key.json +31 -0
  309. data/spec/support/crypt/external/external-schema.json +19 -0
  310. data/spec/support/crypt/limits/limits-doc.json +102 -0
  311. data/spec/support/crypt/limits/limits-key.json +31 -0
  312. data/spec/support/crypt/limits/limits-schema.json +1405 -0
  313. data/spec/support/crypt/schema_maps/schema_map_aws.json +17 -0
  314. data/spec/support/crypt/schema_maps/schema_map_aws_key_alt_names.json +12 -0
  315. data/spec/support/crypt/schema_maps/schema_map_local.json +18 -0
  316. data/spec/support/crypt/schema_maps/schema_map_local_key_alt_names.json +12 -0
  317. data/spec/support/lite_constraints.rb +17 -1
  318. data/spec/support/matchers.rb +19 -0
  319. data/spec/support/shared/protocol.rb +2 -0
  320. data/spec/support/spec_config.rb +43 -13
  321. data/spec/support/utils.rb +132 -10
  322. metadata +277 -81
  323. metadata.gz.sig +0 -0
  324. data/spec/integration/grid_fs_bucket_spec.rb +0 -48
  325. data/spec/integration/zlib_compression_spec.rb +0 -25
  326. data/spec/spec_tests/data/sdam/sharded/single_mongos.yml +0 -33
  327. data/spec/support/connection_string.rb +0 -354
@@ -1,3 +1,5 @@
1
+ # This test was used during Ruby driver SDAM implementation.
2
+ # It is not worthwhile to upstream it to specifications repo.
1
3
  description: Primary whose address differs from client address but no me mismatch
2
4
  uri: mongodb://localhost:27017/?replicaSet=rs
3
5
  phases:
@@ -0,0 +1,27 @@
1
+ description: "Discovered single mongos"
2
+
3
+ # Ruby driver performs topology discovery by default.
4
+ # This test verifies that a URI with just a server address results in
5
+ # the sharded topology if the server replies that it is a mongos.
6
+ # As part of https://jira.mongodb.org/browse/SPEC-1248 this test can be
7
+ # adjusted to use directConnection=false option, at which point it will
8
+ # apply to all drivers.
9
+ uri: "mongodb://a"
10
+
11
+ phases:
12
+
13
+ - responses:
14
+ -
15
+ - "a:27017"
16
+ -
17
+ ok: 1
18
+ ismaster: true
19
+ msg: "isdbgrid"
20
+
21
+ outcome:
22
+ servers:
23
+ "a:27017":
24
+ type: "Mongos"
25
+ setName:
26
+ topologyType: "Sharded"
27
+ setName:
@@ -1,4 +1,4 @@
1
- description: RS Primary whose address differs from client address but no me mismatch
1
+ description: RS Primary in forced sharded topology with a different address from client but no me mismatch
2
2
  uri: mongodb://localhost:27017/?connect=sharded
3
3
  phases:
4
4
  -
@@ -1,4 +1,4 @@
1
- description: RS Primary w/mismatched me
1
+ description: RS Primary in forced sharded topology with me mismatch
2
2
  uri: mongodb://localhost:27017/?connect=sharded
3
3
  phases:
4
4
  -
@@ -1,4 +1,4 @@
1
- description: RS Primary whose address differs from client address but no me mismatch
1
+ description: RS Primary in forced single topology with a different address from client but no me mismatch
2
2
  uri: mongodb://localhost:27017/?connect=direct
3
3
  phases:
4
4
  -
@@ -1,4 +1,4 @@
1
- description: RS Primary w/mismatched me
1
+ description: RS Primary in forced single topology with me mismatch
2
2
  uri: mongodb://localhost:27017/?connect=direct
3
3
  phases:
4
4
  -
@@ -1,6 +1,7 @@
1
1
  description: "Monitoring a topology that is a replica set with primary address change"
2
2
  uri: "mongodb://a,b"
3
3
  phases:
4
+ # phase 1 - initial events
4
5
  -
5
6
  responses: []
6
7
  outcome:
@@ -37,7 +38,8 @@ phases:
37
38
  server_opening_event:
38
39
  topologyId: "42"
39
40
  address: "b:27017"
40
- # phase 1 - discover topology
41
+
42
+ # phase 2 - discover topology
41
43
  -
42
44
  responses:
43
45
  -
@@ -109,8 +111,7 @@ phases:
109
111
  setName: "rs"
110
112
  type: "RSPrimary"
111
113
 
112
-
113
- # phase 2 - primary changes ip address
114
+ # phase 3 - primary changes address
114
115
  -
115
116
  responses:
116
117
  -
@@ -128,7 +129,28 @@ phases:
128
129
  maxWireVersion: 4
129
130
  outcome:
130
131
  events:
131
- # TODO see about having the opening event precede the closing event.
132
+ -
133
+ server_description_changed_event:
134
+ topologyId: "42"
135
+ address: "a:27017"
136
+ previousDescription:
137
+ address: "a:27017"
138
+ arbiters: []
139
+ hosts:
140
+ - "a:27017"
141
+ passives: []
142
+ primary: "a:27017"
143
+ setName: "rs"
144
+ type: "RSPrimary"
145
+ newDescription:
146
+ address: "a:27017"
147
+ arbiters: []
148
+ hosts:
149
+ - "aa:27017"
150
+ passives: []
151
+ primary: "aa:27017"
152
+ setName: "rs"
153
+ type: "RSPrimary"
132
154
  -
133
155
  server_closed_event:
134
156
  topologyId: "42"
@@ -164,7 +186,7 @@ phases:
164
186
  passives: []
165
187
  type: "Unknown"
166
188
 
167
- # phaes 3 - response from new primary from new address
189
+ # phase 4 - response from primary on new address
168
190
  -
169
191
  responses:
170
192
  -
@@ -1,6 +1,7 @@
1
1
  description: "Monitoring a topology that is a replica set with a me mismatch in first response"
2
2
  uri: "mongodb://a,b/"
3
3
  phases:
4
+ # phase 1 - initial events
4
5
  -
5
6
  responses: []
6
7
  outcome:
@@ -37,7 +38,8 @@ phases:
37
38
  server_opening_event:
38
39
  topologyId: "42"
39
40
  address: "b:27017"
40
- # phase 1 - server is a primary with mismatched me
41
+
42
+ # phase 2 - server is a primary with mismatched me
41
43
  -
42
44
  responses:
43
45
  -
@@ -48,66 +50,9 @@ phases:
48
50
  setName: "rs"
49
51
  setVersion: 1
50
52
  me: "aa:27017"
51
- primary: "aa:27017"
53
+ primary: "a:27017"
52
54
  hosts:
53
- - "aa:27017"
54
- minWireVersion: 0
55
- maxWireVersion: 4
56
- outcome:
57
- events:
58
- # TODO see about having the opening event precede the closing event.
59
- -
60
- server_closed_event:
61
- topologyId: "42"
62
- address: "a:27017"
63
- -
64
- server_closed_event:
65
- topologyId: "42"
66
- address: "b:27017"
67
- -
68
- server_opening_event:
69
- topologyId: "42"
70
- address: "aa:27017"
71
- -
72
- topology_description_changed_event:
73
- topologyId: "42"
74
- previousDescription:
75
- topologyType: "Unknown"
76
- servers:
77
- -
78
- address: "a:27017"
79
- arbiters: []
80
- hosts: []
81
- passives: []
82
- -
83
- address: "b:27017"
84
- arbiters: []
85
- hosts: []
86
- passives: []
87
- newDescription:
88
- topologyType: "ReplicaSetNoPrimary"
89
- setName: rs
90
- servers:
91
- -
92
- address: "aa:27017"
93
- arbiters: []
94
- hosts: []
95
- passives: []
96
-
97
- # phaes 2 - response from new primary from new address
98
- -
99
- responses:
100
- -
101
- - "aa:27017"
102
- -
103
- ok: 1
104
- ismaster: true
105
- setName: "rs"
106
- setVersion: 1
107
- primary: "aa:27017"
108
- me: "aa:27017"
109
- hosts:
110
- - "aa:27017"
55
+ - "a:27017"
111
56
  minWireVersion: 0
112
57
  maxWireVersion: 4
113
58
  outcome:
@@ -115,45 +60,52 @@ phases:
115
60
  -
116
61
  server_description_changed_event:
117
62
  topologyId: "42"
118
- address: "aa:27017"
63
+ address: "a:27017"
119
64
  previousDescription:
120
- address: "aa:27017"
65
+ address: "a:27017"
121
66
  arbiters: []
122
67
  hosts: []
123
68
  passives: []
124
69
  type: "Unknown"
125
70
  newDescription:
126
- address: "aa:27017"
71
+ address: "a:27017"
127
72
  arbiters: []
128
73
  hosts:
129
- - "aa:27017"
74
+ - "a:27017"
130
75
  passives: []
131
- primary: "aa:27017"
76
+ primary: "a:27017"
132
77
  setName: "rs"
133
78
  type: "RSPrimary"
134
79
  -
135
- topology_description_changed_event:
80
+ server_closed_event:
81
+ topologyId: "42"
82
+ address: "b:27017"
83
+ -
84
+ topology_description_changed_event:
136
85
  topologyId: "42"
137
86
  previousDescription:
138
- topologyType: "ReplicaSetNoPrimary"
139
- setName: rs
87
+ topologyType: "Unknown"
140
88
  servers:
141
89
  -
142
- address: "aa:27017"
90
+ address: "a:27017"
91
+ arbiters: []
92
+ hosts: []
93
+ passives: []
94
+ -
95
+ address: "b:27017"
143
96
  arbiters: []
144
97
  hosts: []
145
98
  passives: []
146
- type: "Unknown"
147
99
  newDescription:
148
100
  topologyType: "ReplicaSetWithPrimary"
149
- setName: "rs"
101
+ setName: rs
150
102
  servers:
151
103
  -
152
- address: "aa:27017"
104
+ address: "a:27017"
153
105
  arbiters: []
154
106
  hosts:
155
- - "aa:27017"
107
+ - "a:27017"
156
108
  passives: []
157
- primary: "aa:27017"
109
+ primary: "a:27017"
158
110
  setName: "rs"
159
111
  type: "RSPrimary"
@@ -2,22 +2,7 @@ description: "Monitoring a replica set with non member"
2
2
  uri: "mongodb://a,b/"
3
3
  phases:
4
4
  -
5
- responses:
6
- -
7
- - "a:27017"
8
- - {
9
- ok: 1,
10
- ismaster: true,
11
- setName: "rs",
12
- setVersion: 1.0,
13
- primary: "a:27017",
14
- hosts: [ "a:27017" ],
15
- minWireVersion: 0,
16
- maxWireVersion: 4
17
- }
18
- -
19
- - "b:27017"
20
- - { ok: 1, ismaster: true }
5
+ responses: []
21
6
  outcome:
22
7
  events:
23
8
  -
@@ -52,6 +37,25 @@ phases:
52
37
  server_opening_event:
53
38
  topologyId: "42"
54
39
  address: "b:27017"
40
+ -
41
+ responses:
42
+ -
43
+ - "a:27017"
44
+ - {
45
+ ok: 1,
46
+ ismaster: true,
47
+ setName: "rs",
48
+ setVersion: 1.0,
49
+ primary: "a:27017",
50
+ hosts: [ "a:27017" ],
51
+ minWireVersion: 0,
52
+ maxWireVersion: 4
53
+ }
54
+ -
55
+ - "b:27017"
56
+ - { ok: 1, ismaster: true }
57
+ outcome:
58
+ events:
55
59
  -
56
60
  server_description_changed_event:
57
61
  topologyId: "42"
@@ -0,0 +1,73 @@
1
+ description: "Monitoring a forced standalone connection - suppress update events for equal server descriptions"
2
+ uri: "mongodb://a:27017/?connect=direct"
3
+ phases:
4
+ -
5
+ responses:
6
+ -
7
+ - "a:27017"
8
+ - { ok: 1, ismaster: true, minWireVersion: 0, maxWireVersion: 4 }
9
+ -
10
+ - "a:27017"
11
+ - { ok: 1, ismaster: true, minWireVersion: 0, maxWireVersion: 4 }
12
+
13
+ outcome:
14
+ events:
15
+ -
16
+ topology_opening_event:
17
+ topologyId: "42"
18
+ -
19
+ topology_description_changed_event:
20
+ topologyId: "42"
21
+ previousDescription:
22
+ topologyType: "Unknown"
23
+ servers: []
24
+ newDescription:
25
+ topologyType: "Single"
26
+ servers:
27
+ -
28
+ address: "a:27017"
29
+ arbiters: []
30
+ hosts: []
31
+ passives: []
32
+ type: "Unknown"
33
+ -
34
+ server_opening_event:
35
+ topologyId: "42"
36
+ address: "a:27017"
37
+ -
38
+ server_description_changed_event:
39
+ topologyId: "42"
40
+ address: "a:27017"
41
+ previousDescription:
42
+ address: "a:27017"
43
+ arbiters: []
44
+ hosts: []
45
+ passives: []
46
+ type: "Unknown"
47
+ newDescription:
48
+ address: "a:27017"
49
+ arbiters: []
50
+ hosts: []
51
+ passives: []
52
+ type: "Standalone"
53
+ -
54
+ topology_description_changed_event:
55
+ topologyId: "42"
56
+ previousDescription:
57
+ topologyType: "Single"
58
+ servers:
59
+ -
60
+ address: "a:27017"
61
+ arbiters: []
62
+ hosts: []
63
+ passives: []
64
+ type: "Unknown"
65
+ newDescription:
66
+ topologyType: "Single"
67
+ servers:
68
+ -
69
+ address: "a:27017"
70
+ arbiters: []
71
+ hosts: []
72
+ passives: []
73
+ type: "Standalone"
@@ -317,7 +317,7 @@ tests:
317
317
  insertedIds: {0: 3, 1: 4}
318
318
  # Session is pinned.
319
319
  - *assertSessionPinned
320
- # Fail the commit with a non-transient error, eg MaxTimeMSExpired.
320
+ # Fail the commit with a non-transient error.
321
321
  - name: targetedFailPoint
322
322
  object: testRunner
323
323
  arguments:
@@ -327,8 +327,7 @@ tests:
327
327
  mode: { times: 1 }
328
328
  data:
329
329
  failCommands: ["commitTransaction"]
330
- # https://jira.mongodb.org/browse/SPEC-1378
331
- errorCode: 51 # not MaxTimeMSExpired
330
+ errorCode: 51 # ManualInterventionRequired
332
331
  - name: commitTransaction
333
332
  object: session0
334
333
  result:
@@ -12,3 +12,13 @@ tests:
12
12
  SERVICE_NAME: "other"
13
13
  CANONICALIZE_HOST_NAME: true
14
14
  authSource: "$external"
15
+ -
16
+ description: "Valid auth options are parsed correctly (SCRAM-SHA-1)"
17
+ uri: "mongodb://foo:bar@example.com/?authMechanism=SCRAM-SHA-1&authSource=authSourceDB"
18
+ valid: true
19
+ warning: false
20
+ hosts: ~
21
+ auth: ~
22
+ options:
23
+ authMechanism: "SCRAM-SHA-1"
24
+ authSource: "authSourceDB"
@@ -1,7 +1,7 @@
1
1
  tests:
2
2
  -
3
3
  description: "Valid required tls options are parsed correctly"
4
- uri: "mongodb://example.com/?tls=true&tlsCAFile=ca.pem&tlsCertificateKeyFile=cert.pem&tlsCertificateKeyFilePassword=hunter2"
4
+ uri: "mongodb://example.com/?tls=true&tlsCAFile=ca.pem&tlsCertificateKeyFile=cert.pem"
5
5
  valid: true
6
6
  warning: false
7
7
  hosts: ~
@@ -10,6 +10,14 @@ tests:
10
10
  tls: true
11
11
  tlsCAFile: "ca.pem"
12
12
  tlsCertificateKeyFile: "cert.pem"
13
+ -
14
+ description: "Valid tlsCertificateKeyFilePassword is parsed correctly"
15
+ uri: "mongodb://example.com/?tlsCertificateKeyFilePassword=hunter2"
16
+ valid: true
17
+ warning: false
18
+ hosts: ~
19
+ auth: ~
20
+ options:
13
21
  tlsCertificateKeyFilePassword: "hunter2"
14
22
  -
15
23
  description: "Invalid tlsAllowInvalidCertificates causes a warning"
@@ -63,8 +71,8 @@ tests:
63
71
  options:
64
72
  tlsInsecure: true
65
73
  -
66
- description: "Invalid tlsAllowInsecure causes a warning"
67
- uri: "mongodb://example.com/?tlsAllowInsecure=invalid"
74
+ description: "Invalid tlsInsecure causes a warning"
75
+ uri: "mongodb://example.com/?tlsInsecure=invalid"
68
76
  valid: true
69
77
  warning: true
70
78
  hosts: ~
@@ -86,6 +94,22 @@ tests:
86
94
  hosts: ~
87
95
  auth: ~
88
96
  options: {}
97
+ -
98
+ description: "tlsAllowInvalidCertificates and tlsInsecure both present (and true) raises an error"
99
+ uri: "mongodb://example.com/?tlsAllowInvalidCertificates=true&tlsInsecure=true"
100
+ valid: false
101
+ warning: false
102
+ hosts: ~
103
+ auth: ~
104
+ options: {}
105
+ -
106
+ description: "tlsAllowInvalidCertificates and tlsInsecure both present (and false) raises an error"
107
+ uri: "mongodb://example.com/?tlsAllowInvalidCertificates=false&tlsInsecure=false"
108
+ valid: false
109
+ warning: false
110
+ hosts: ~
111
+ auth: ~
112
+ options: {}
89
113
  -
90
114
  description: "tlsInsecure and tlsAllowInvalidHostnames both present (and true) raises an error"
91
115
  uri: "mongodb://example.com/?tlsInsecure=true&tlsAllowInvalidHostnames=true"
@@ -102,6 +126,22 @@ tests:
102
126
  hosts: ~
103
127
  auth: ~
104
128
  options: {}
129
+ -
130
+ description: "tlsAllowInvalidHostnames and tlsInsecure both present (and true) raises an error"
131
+ uri: "mongodb://example.com/?tlsAllowInvalidHostnames=true&tlsInsecure=true"
132
+ valid: false
133
+ warning: false
134
+ hosts: ~
135
+ auth: ~
136
+ options: {}
137
+ -
138
+ description: "tlsAllowInvalidHostnames and tlsInsecure both present (and false) raises an error"
139
+ uri: "mongodb://example.com/?tlsAllowInvalidHostnames=false&tlsInsecure=false"
140
+ valid: false
141
+ warning: false
142
+ hosts: ~
143
+ auth: ~
144
+ options: {}
105
145
  -
106
146
  description: "tls=true and ssl=true doesn't warn"
107
147
  uri: "mongodb://example.com/?tls=true&ssl=true"
@@ -118,6 +158,22 @@ tests:
118
158
  hosts: ~
119
159
  auth: ~
120
160
  options: {}
161
+ -
162
+ description: "ssl=true and tls=true doesn't warn"
163
+ uri: "mongodb://example.com/?ssl=true&tls=true"
164
+ valid: true
165
+ warning: false
166
+ hosts: ~
167
+ auth: ~
168
+ options: {}
169
+ -
170
+ description: "ssl=false and tls=false doesn't warn"
171
+ uri: "mongodb://example.com/?ssl=false&tls=false"
172
+ valid: true
173
+ warning: false
174
+ hosts: ~
175
+ auth: ~
176
+ options: {}
121
177
  -
122
178
  description: "tls=false and ssl=true raises error"
123
179
  uri: "mongodb://example.com/?tls=false&ssl=true"
@@ -134,4 +190,19 @@ tests:
134
190
  hosts: ~
135
191
  auth: ~
136
192
  options: {}
137
-
193
+ -
194
+ description: "ssl=false and tls=true raises error"
195
+ uri: "mongodb://example.com/?ssl=false&tls=true"
196
+ valid: false
197
+ warning: false
198
+ hosts: ~
199
+ auth: ~
200
+ options: {}
201
+ -
202
+ description: "ssl=true and tls=false raises error"
203
+ uri: "mongodb://example.com/?ssl=true&tls=false"
204
+ valid: false
205
+ warning: false
206
+ hosts: ~
207
+ auth: ~
208
+ options: {}