mongoid 7.5.4 → 8.1.7

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 (442) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -3
  3. data/README.md +6 -6
  4. data/Rakefile +44 -46
  5. data/lib/config/locales/en.yml +92 -43
  6. data/lib/mongoid/association/accessors.rb +44 -11
  7. data/lib/mongoid/association/bindable.rb +50 -2
  8. data/lib/mongoid/association/builders.rb +5 -3
  9. data/lib/mongoid/association/constrainable.rb +0 -1
  10. data/lib/mongoid/association/eager_loadable.rb +29 -7
  11. data/lib/mongoid/association/embedded/batchable.rb +34 -11
  12. data/lib/mongoid/association/embedded/cyclic.rb +1 -1
  13. data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
  14. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +2 -2
  15. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +4 -3
  16. data/lib/mongoid/association/embedded/embedded_in.rb +3 -2
  17. data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
  18. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +4 -3
  19. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +85 -46
  20. data/lib/mongoid/association/embedded/embeds_many.rb +2 -2
  21. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +19 -5
  22. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +24 -5
  23. data/lib/mongoid/association/embedded/embeds_one.rb +3 -3
  24. data/lib/mongoid/association/macros.rb +8 -1
  25. data/lib/mongoid/association/many.rb +11 -7
  26. data/lib/mongoid/association/nested/many.rb +5 -4
  27. data/lib/mongoid/association/nested/nested_buildable.rb +4 -4
  28. data/lib/mongoid/association/nested/one.rb +45 -7
  29. data/lib/mongoid/association/one.rb +2 -2
  30. data/lib/mongoid/association/options.rb +9 -9
  31. data/lib/mongoid/association/proxy.rb +15 -4
  32. data/lib/mongoid/association/referenced/auto_save.rb +4 -3
  33. data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
  34. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
  35. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +5 -6
  36. data/lib/mongoid/association/referenced/belongs_to.rb +2 -2
  37. data/lib/mongoid/association/referenced/counter_cache.rb +10 -10
  38. data/lib/mongoid/association/referenced/eager.rb +2 -2
  39. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +70 -13
  40. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
  41. data/lib/mongoid/association/referenced/has_many/enumerable.rb +22 -30
  42. data/lib/mongoid/association/referenced/has_many/proxy.rb +40 -21
  43. data/lib/mongoid/association/referenced/has_many.rb +3 -3
  44. data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
  45. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +5 -5
  46. data/lib/mongoid/association/referenced/has_one/proxy.rb +9 -12
  47. data/lib/mongoid/association/referenced/has_one.rb +3 -3
  48. data/lib/mongoid/association/referenced/syncable.rb +4 -4
  49. data/lib/mongoid/association/reflections.rb +4 -4
  50. data/lib/mongoid/association/relatable.rb +44 -10
  51. data/lib/mongoid/association.rb +5 -5
  52. data/lib/mongoid/atomic/modifiers.rb +2 -2
  53. data/lib/mongoid/atomic.rb +16 -7
  54. data/lib/mongoid/attributes/dynamic.rb +4 -4
  55. data/lib/mongoid/attributes/nested.rb +6 -6
  56. data/lib/mongoid/attributes/processing.rb +37 -6
  57. data/lib/mongoid/attributes/projector.rb +2 -2
  58. data/lib/mongoid/attributes/readonly.rb +3 -3
  59. data/lib/mongoid/attributes.rb +51 -42
  60. data/lib/mongoid/changeable.rb +147 -14
  61. data/lib/mongoid/clients/options.rb +5 -1
  62. data/lib/mongoid/clients/sessions.rb +2 -14
  63. data/lib/mongoid/clients/storage_options.rb +2 -5
  64. data/lib/mongoid/clients/validators/storage.rb +3 -15
  65. data/lib/mongoid/collection_configurable.rb +58 -0
  66. data/lib/mongoid/composable.rb +2 -0
  67. data/lib/mongoid/config/defaults.rb +60 -0
  68. data/lib/mongoid/config/options.rb +3 -0
  69. data/lib/mongoid/config/validators/async_query_executor.rb +24 -0
  70. data/lib/mongoid/config/validators/client.rb +6 -6
  71. data/lib/mongoid/config/validators.rb +1 -0
  72. data/lib/mongoid/config.rb +153 -18
  73. data/lib/mongoid/contextual/aggregable/memory.rb +24 -16
  74. data/lib/mongoid/contextual/aggregable/mongo.rb +5 -5
  75. data/lib/mongoid/contextual/aggregable/none.rb +1 -1
  76. data/lib/mongoid/contextual/atomic.rb +1 -1
  77. data/lib/mongoid/contextual/geo_near.rb +7 -7
  78. data/lib/mongoid/contextual/map_reduce.rb +2 -2
  79. data/lib/mongoid/contextual/memory.rb +285 -58
  80. data/lib/mongoid/contextual/mongo/documents_loader.rb +177 -0
  81. data/lib/mongoid/contextual/mongo.rb +540 -346
  82. data/lib/mongoid/contextual/none.rb +193 -20
  83. data/lib/mongoid/contextual/queryable.rb +1 -1
  84. data/lib/mongoid/contextual.rb +14 -2
  85. data/lib/mongoid/copyable.rb +32 -8
  86. data/lib/mongoid/criteria/findable.rb +8 -5
  87. data/lib/mongoid/criteria/includable.rb +27 -22
  88. data/lib/mongoid/criteria/marshalable.rb +10 -2
  89. data/lib/mongoid/criteria/permission.rb +1 -1
  90. data/lib/mongoid/criteria/queryable/aggregable.rb +2 -2
  91. data/lib/mongoid/criteria/queryable/extensions/array.rb +3 -16
  92. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
  93. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -2
  94. data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
  95. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
  96. data/lib/mongoid/criteria/queryable/extensions/hash.rb +1 -17
  97. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +15 -9
  98. data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
  99. data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
  100. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +3 -3
  101. data/lib/mongoid/criteria/queryable/extensions/set.rb +1 -1
  102. data/lib/mongoid/criteria/queryable/extensions/string.rb +4 -14
  103. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -12
  104. data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
  105. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
  106. data/lib/mongoid/criteria/queryable/key.rb +4 -4
  107. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -1
  108. data/lib/mongoid/criteria/queryable/optional.rb +11 -17
  109. data/lib/mongoid/criteria/queryable/options.rb +2 -2
  110. data/lib/mongoid/criteria/queryable/pipeline.rb +1 -1
  111. data/lib/mongoid/criteria/queryable/selectable.rb +47 -38
  112. data/lib/mongoid/criteria/queryable/selector.rb +92 -7
  113. data/lib/mongoid/criteria/queryable/smash.rb +40 -7
  114. data/lib/mongoid/criteria/queryable.rb +12 -7
  115. data/lib/mongoid/criteria/scopable.rb +2 -2
  116. data/lib/mongoid/criteria/translator.rb +45 -0
  117. data/lib/mongoid/criteria.rb +20 -40
  118. data/lib/mongoid/deprecable.rb +37 -0
  119. data/lib/mongoid/deprecation.rb +25 -0
  120. data/lib/mongoid/document.rb +127 -35
  121. data/lib/mongoid/equality.rb +8 -8
  122. data/lib/mongoid/errors/create_collection_failure.rb +33 -0
  123. data/lib/mongoid/errors/document_not_found.rb +10 -6
  124. data/lib/mongoid/errors/drop_collection_failure.rb +27 -0
  125. data/lib/mongoid/errors/immutable_attribute.rb +26 -0
  126. data/lib/mongoid/errors/invalid_async_query_executor.rb +25 -0
  127. data/lib/mongoid/errors/invalid_config_option.rb +1 -1
  128. data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -1
  129. data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
  130. data/lib/mongoid/errors/invalid_field.rb +6 -2
  131. data/lib/mongoid/errors/invalid_field_type.rb +26 -0
  132. data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +22 -0
  133. data/lib/mongoid/errors/invalid_relation.rb +1 -1
  134. data/lib/mongoid/errors/invalid_relation_option.rb +1 -1
  135. data/lib/mongoid/errors/invalid_session_use.rb +1 -1
  136. data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
  137. data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
  138. data/lib/mongoid/errors/mongoid_error.rb +3 -3
  139. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -1
  140. data/lib/mongoid/errors/no_client_database.rb +1 -1
  141. data/lib/mongoid/errors/no_client_hosts.rb +1 -1
  142. data/lib/mongoid/errors/readonly_attribute.rb +1 -1
  143. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
  144. data/lib/mongoid/errors/unknown_attribute.rb +1 -1
  145. data/lib/mongoid/errors.rb +6 -3
  146. data/lib/mongoid/extensions/array.rb +9 -7
  147. data/lib/mongoid/extensions/big_decimal.rb +33 -10
  148. data/lib/mongoid/extensions/binary.rb +42 -0
  149. data/lib/mongoid/extensions/boolean.rb +8 -2
  150. data/lib/mongoid/extensions/date.rb +26 -20
  151. data/lib/mongoid/extensions/date_time.rb +1 -1
  152. data/lib/mongoid/extensions/false_class.rb +1 -1
  153. data/lib/mongoid/extensions/float.rb +7 -4
  154. data/lib/mongoid/extensions/hash.rb +38 -9
  155. data/lib/mongoid/extensions/integer.rb +7 -4
  156. data/lib/mongoid/extensions/module.rb +1 -1
  157. data/lib/mongoid/extensions/object.rb +10 -8
  158. data/lib/mongoid/extensions/range.rb +41 -10
  159. data/lib/mongoid/extensions/regexp.rb +11 -4
  160. data/lib/mongoid/extensions/set.rb +11 -4
  161. data/lib/mongoid/extensions/string.rb +11 -22
  162. data/lib/mongoid/extensions/symbol.rb +4 -15
  163. data/lib/mongoid/extensions/time.rb +29 -16
  164. data/lib/mongoid/extensions/time_with_zone.rb +1 -2
  165. data/lib/mongoid/extensions/true_class.rb +1 -1
  166. data/lib/mongoid/extensions.rb +1 -0
  167. data/lib/mongoid/factory.rb +55 -7
  168. data/lib/mongoid/fields/foreign_key.rb +11 -4
  169. data/lib/mongoid/fields/localized.rb +19 -4
  170. data/lib/mongoid/fields/standard.rb +17 -7
  171. data/lib/mongoid/fields/validators/macro.rb +3 -9
  172. data/lib/mongoid/fields.rb +142 -28
  173. data/lib/mongoid/findable.rb +54 -24
  174. data/lib/mongoid/indexable/specification.rb +2 -2
  175. data/lib/mongoid/indexable/validators/options.rb +6 -2
  176. data/lib/mongoid/interceptable.rb +186 -16
  177. data/lib/mongoid/matchable.rb +1 -1
  178. data/lib/mongoid/matcher/eq_impl.rb +1 -1
  179. data/lib/mongoid/matcher/type.rb +1 -1
  180. data/lib/mongoid/matcher.rb +48 -14
  181. data/lib/mongoid/persistable/creatable.rb +19 -9
  182. data/lib/mongoid/persistable/deletable.rb +2 -2
  183. data/lib/mongoid/persistable/destroyable.rb +1 -1
  184. data/lib/mongoid/persistable/savable.rb +14 -2
  185. data/lib/mongoid/persistable/unsettable.rb +2 -2
  186. data/lib/mongoid/persistable/updatable.rb +69 -12
  187. data/lib/mongoid/persistable/upsertable.rb +21 -2
  188. data/lib/mongoid/persistable.rb +6 -3
  189. data/lib/mongoid/persistence_context.rb +6 -4
  190. data/lib/mongoid/query_cache.rb +13 -261
  191. data/lib/mongoid/railties/controller_runtime.rb +1 -1
  192. data/lib/mongoid/railties/database.rake +7 -2
  193. data/lib/mongoid/reloadable.rb +10 -8
  194. data/lib/mongoid/scopable.rb +15 -13
  195. data/lib/mongoid/selectable.rb +1 -2
  196. data/lib/mongoid/serializable.rb +17 -13
  197. data/lib/mongoid/stateful.rb +57 -10
  198. data/lib/mongoid/tasks/database.rake +12 -0
  199. data/lib/mongoid/tasks/database.rb +20 -2
  200. data/lib/mongoid/threaded/lifecycle.rb +5 -5
  201. data/lib/mongoid/threaded.rb +42 -12
  202. data/lib/mongoid/timestamps/created.rb +1 -1
  203. data/lib/mongoid/timestamps/updated.rb +2 -2
  204. data/lib/mongoid/touchable.rb +3 -4
  205. data/lib/mongoid/traversable.rb +10 -5
  206. data/lib/mongoid/utils.rb +22 -0
  207. data/lib/mongoid/validatable/associated.rb +98 -17
  208. data/lib/mongoid/validatable/localizable.rb +1 -1
  209. data/lib/mongoid/validatable/macros.rb +5 -7
  210. data/lib/mongoid/validatable/presence.rb +2 -2
  211. data/lib/mongoid/validatable/uniqueness.rb +9 -8
  212. data/lib/mongoid/validatable.rb +17 -6
  213. data/lib/mongoid/version.rb +1 -1
  214. data/lib/mongoid/warnings.rb +19 -4
  215. data/lib/mongoid.rb +17 -3
  216. data/spec/config/mongoid.yml +16 -0
  217. data/spec/integration/app_spec.rb +24 -19
  218. data/spec/integration/associations/belongs_to_spec.rb +18 -0
  219. data/spec/integration/associations/embedded_spec.rb +15 -0
  220. data/spec/integration/associations/embeds_many_spec.rb +15 -2
  221. data/spec/integration/associations/embeds_one_spec.rb +18 -0
  222. data/spec/integration/associations/foreign_key_spec.rb +9 -0
  223. data/spec/integration/associations/has_and_belongs_to_many_spec.rb +61 -0
  224. data/spec/integration/associations/has_one_spec.rb +97 -1
  225. data/spec/integration/associations/scope_option_spec.rb +1 -1
  226. data/spec/integration/callbacks_models.rb +132 -1
  227. data/spec/integration/callbacks_spec.rb +381 -4
  228. data/spec/integration/criteria/range_spec.rb +95 -1
  229. data/spec/integration/discriminator_key_spec.rb +118 -80
  230. data/spec/integration/dots_and_dollars_spec.rb +277 -0
  231. data/spec/integration/i18n_fallbacks_spec.rb +3 -32
  232. data/spec/integration/matcher_examples_spec.rb +20 -13
  233. data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
  234. data/spec/integration/matcher_operator_spec.rb +3 -5
  235. data/spec/integration/persistence/range_field_spec.rb +350 -0
  236. data/spec/mongoid/association/counter_cache_spec.rb +1 -1
  237. data/spec/mongoid/association/depending_spec.rb +9 -9
  238. data/spec/mongoid/association/eager_spec.rb +2 -1
  239. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
  240. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
  241. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +96 -9
  242. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
  243. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +290 -65
  244. data/spec/mongoid/association/embedded/embeds_many_models.rb +37 -0
  245. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +16 -0
  246. data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
  247. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
  248. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +15 -2
  249. data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
  250. data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
  251. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
  252. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
  253. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +19 -0
  254. data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
  255. data/spec/mongoid/association/referenced/belongs_to_spec.rb +4 -20
  256. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +186 -229
  257. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
  258. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
  259. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
  260. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2 -56
  261. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +215 -177
  262. data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
  263. data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
  264. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
  265. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
  266. data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
  267. data/spec/mongoid/association/syncable_spec.rb +15 -1
  268. data/spec/mongoid/atomic/paths_spec.rb +0 -14
  269. data/spec/mongoid/attributes/nested_spec.rb +80 -11
  270. data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
  271. data/spec/mongoid/attributes/projector_spec.rb +1 -5
  272. data/spec/mongoid/attributes_spec.rb +526 -33
  273. data/spec/mongoid/changeable_spec.rb +429 -37
  274. data/spec/mongoid/clients/factory_spec.rb +23 -30
  275. data/spec/mongoid/clients/sessions_spec.rb +0 -38
  276. data/spec/mongoid/clients_spec.rb +149 -15
  277. data/spec/mongoid/collection_configurable_spec.rb +158 -0
  278. data/spec/mongoid/config/defaults_spec.rb +160 -0
  279. data/spec/mongoid/config_spec.rb +214 -31
  280. data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
  281. data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
  282. data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
  283. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
  284. data/spec/mongoid/contextual/memory_spec.rb +850 -88
  285. data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +187 -0
  286. data/spec/mongoid/contextual/mongo_spec.rb +2256 -1005
  287. data/spec/mongoid/contextual/none_spec.rb +60 -21
  288. data/spec/mongoid/copyable_spec.rb +453 -11
  289. data/spec/mongoid/criteria/findable_spec.rb +86 -210
  290. data/spec/mongoid/criteria/includable_spec.rb +1492 -0
  291. data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
  292. data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
  293. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
  294. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
  295. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
  296. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
  297. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
  298. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
  299. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -69
  300. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -59
  301. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
  302. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
  303. data/spec/mongoid/criteria/queryable/optional_spec.rb +15 -484
  304. data/spec/mongoid/criteria/queryable/options_spec.rb +1 -1
  305. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +469 -0
  306. data/spec/mongoid/criteria/queryable/selectable_spec.rb +78 -86
  307. data/spec/mongoid/criteria/queryable/selector_spec.rb +15 -3
  308. data/spec/mongoid/criteria/translator_spec.rb +132 -0
  309. data/spec/mongoid/criteria_projection_spec.rb +1 -5
  310. data/spec/mongoid/criteria_spec.rb +469 -1205
  311. data/spec/mongoid/document_fields_spec.rb +173 -24
  312. data/spec/mongoid/document_spec.rb +32 -41
  313. data/spec/mongoid/errors/document_not_found_spec.rb +29 -2
  314. data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
  315. data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
  316. data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
  317. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  318. data/spec/mongoid/errors/readonly_document_spec.rb +2 -2
  319. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
  320. data/spec/mongoid/extensions/array_spec.rb +16 -2
  321. data/spec/mongoid/extensions/big_decimal_spec.rb +712 -212
  322. data/spec/mongoid/extensions/binary_spec.rb +44 -9
  323. data/spec/mongoid/extensions/boolean_spec.rb +68 -82
  324. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
  325. data/spec/mongoid/extensions/date_spec.rb +71 -1
  326. data/spec/mongoid/extensions/date_time_spec.rb +15 -9
  327. data/spec/mongoid/extensions/float_spec.rb +53 -74
  328. data/spec/mongoid/extensions/hash_spec.rb +33 -3
  329. data/spec/mongoid/extensions/integer_spec.rb +50 -64
  330. data/spec/mongoid/extensions/range_spec.rb +255 -54
  331. data/spec/mongoid/extensions/regexp_spec.rb +58 -33
  332. data/spec/mongoid/extensions/set_spec.rb +106 -0
  333. data/spec/mongoid/extensions/string_spec.rb +53 -25
  334. data/spec/mongoid/extensions/symbol_spec.rb +18 -25
  335. data/spec/mongoid/extensions/time_spec.rb +639 -106
  336. data/spec/mongoid/extensions/time_with_zone_spec.rb +24 -83
  337. data/spec/mongoid/factory_spec.rb +61 -1
  338. data/spec/mongoid/fields/localized_spec.rb +80 -37
  339. data/spec/mongoid/fields_spec.rb +503 -87
  340. data/spec/mongoid/findable_spec.rb +450 -58
  341. data/spec/mongoid/indexable/specification_spec.rb +2 -2
  342. data/spec/mongoid/indexable_spec.rb +55 -30
  343. data/spec/mongoid/interceptable_spec.rb +824 -22
  344. data/spec/mongoid/interceptable_spec_models.rb +235 -4
  345. data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
  346. data/spec/mongoid/mongoizable_spec.rb +285 -0
  347. data/spec/mongoid/persistable/creatable_spec.rb +2 -2
  348. data/spec/mongoid/persistable/deletable_spec.rb +28 -8
  349. data/spec/mongoid/persistable/destroyable_spec.rb +28 -8
  350. data/spec/mongoid/persistable/incrementable_spec.rb +37 -0
  351. data/spec/mongoid/persistable/logical_spec.rb +37 -0
  352. data/spec/mongoid/persistable/poppable_spec.rb +36 -0
  353. data/spec/mongoid/persistable/pullable_spec.rb +72 -0
  354. data/spec/mongoid/persistable/pushable_spec.rb +72 -0
  355. data/spec/mongoid/persistable/renamable_spec.rb +36 -0
  356. data/spec/mongoid/persistable/savable_spec.rb +96 -0
  357. data/spec/mongoid/persistable/settable_spec.rb +37 -0
  358. data/spec/mongoid/persistable/unsettable_spec.rb +36 -0
  359. data/spec/mongoid/persistable/updatable_spec.rb +20 -28
  360. data/spec/mongoid/persistable/upsertable_spec.rb +89 -1
  361. data/spec/mongoid/persistence_context_spec.rb +31 -57
  362. data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
  363. data/spec/mongoid/query_cache_spec.rb +56 -215
  364. data/spec/mongoid/reloadable_spec.rb +83 -6
  365. data/spec/mongoid/scopable_spec.rb +91 -1
  366. data/spec/mongoid/serializable_spec.rb +25 -39
  367. data/spec/mongoid/shardable_spec.rb +4 -4
  368. data/spec/mongoid/stateful_spec.rb +150 -8
  369. data/spec/mongoid/tasks/database_rake_spec.rb +74 -0
  370. data/spec/mongoid/tasks/database_spec.rb +127 -0
  371. data/spec/mongoid/timestamps_spec.rb +392 -4
  372. data/spec/mongoid/timestamps_spec_models.rb +67 -0
  373. data/spec/mongoid/touchable_spec.rb +390 -2
  374. data/spec/mongoid/touchable_spec_models.rb +14 -8
  375. data/spec/mongoid/traversable_spec.rb +13 -35
  376. data/spec/mongoid/validatable/associated_spec.rb +27 -34
  377. data/spec/mongoid/validatable/presence_spec.rb +1 -1
  378. data/spec/mongoid/validatable/uniqueness_spec.rb +58 -31
  379. data/spec/mongoid/warnings_spec.rb +35 -0
  380. data/spec/mongoid_spec.rb +34 -16
  381. data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
  382. data/spec/rails/mongoid_spec.rb +4 -16
  383. data/spec/spec_helper.rb +5 -0
  384. data/spec/support/constraints.rb +24 -0
  385. data/spec/support/immutable_ids.rb +118 -0
  386. data/spec/support/macros.rb +78 -0
  387. data/spec/support/models/artist.rb +0 -1
  388. data/spec/support/models/augmentation.rb +12 -0
  389. data/spec/support/models/band.rb +5 -0
  390. data/spec/support/models/book.rb +1 -0
  391. data/spec/support/models/building.rb +2 -0
  392. data/spec/support/models/catalog.rb +24 -0
  393. data/spec/support/models/circus.rb +3 -0
  394. data/spec/support/models/cover.rb +10 -0
  395. data/spec/support/models/fanatic.rb +8 -0
  396. data/spec/support/models/implant.rb +9 -0
  397. data/spec/support/models/label.rb +2 -0
  398. data/spec/support/models/lat_lng.rb +6 -0
  399. data/spec/support/models/name.rb +10 -0
  400. data/spec/support/models/passport.rb +9 -0
  401. data/spec/support/models/person.rb +2 -0
  402. data/spec/support/models/player.rb +2 -0
  403. data/spec/support/models/powerup.rb +12 -0
  404. data/spec/support/models/product.rb +1 -0
  405. data/spec/support/models/purse.rb +9 -0
  406. data/spec/support/models/registry.rb +1 -0
  407. data/spec/support/models/school.rb +14 -0
  408. data/spec/support/models/shield.rb +18 -0
  409. data/spec/support/models/student.rb +14 -0
  410. data/spec/support/models/weapon.rb +12 -0
  411. metadata +101 -96
  412. checksums.yaml.gz.sig +0 -0
  413. data/lib/mongoid/errors/eager_load.rb +0 -23
  414. data/lib/mongoid/errors/invalid_value.rb +0 -17
  415. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -60
  416. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -60
  417. data/spec/mongoid/errors/eager_load_spec.rb +0 -31
  418. data/spec/shared/LICENSE +0 -20
  419. data/spec/shared/bin/get-mongodb-download-url +0 -17
  420. data/spec/shared/bin/s3-copy +0 -45
  421. data/spec/shared/bin/s3-upload +0 -69
  422. data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
  423. data/spec/shared/lib/mrss/cluster_config.rb +0 -231
  424. data/spec/shared/lib/mrss/constraints.rb +0 -378
  425. data/spec/shared/lib/mrss/docker_runner.rb +0 -291
  426. data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
  427. data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
  428. data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
  429. data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
  430. data/spec/shared/lib/mrss/session_registry.rb +0 -69
  431. data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
  432. data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
  433. data/spec/shared/lib/mrss/utils.rb +0 -15
  434. data/spec/shared/share/Dockerfile.erb +0 -325
  435. data/spec/shared/share/haproxy-1.conf +0 -16
  436. data/spec/shared/share/haproxy-2.conf +0 -17
  437. data/spec/shared/shlib/config.sh +0 -27
  438. data/spec/shared/shlib/distro.sh +0 -74
  439. data/spec/shared/shlib/server.sh +0 -392
  440. data/spec/shared/shlib/set_env.sh +0 -169
  441. data.tar.gz.sig +0 -0
  442. metadata.gz.sig +0 -3
@@ -1,392 +0,0 @@
1
- # This file contains functions pertaining to downloading, starting and
2
- # configuring a MongoDB server.
3
-
4
- # Note that mlaunch is executed with (and therefore installed with) Python 2.
5
- # The reason for this is that in the past, some of the distros we tested on
6
- # had an ancient version of Python 3 that was unusable (e.g. it couldn't
7
- # install anything from PyPI due to outdated TLS/SSL implementation).
8
- # It is likely that all of the current distros we use have a recent enough
9
- # and working Python 3 implementation, such that we could use Python 3 for
10
- # everything.
11
- #
12
- # Note that some distros (e.g. ubuntu2004) do not contain a `python' binary
13
- # at all, thus python2 or python3 must be explicitly specified depending on
14
- # the desired version.
15
-
16
- set_fcv() {
17
- if test -n "$FCV"; then
18
- mongo --eval 'assert.commandWorked(db.adminCommand( { setFeatureCompatibilityVersion: "'"$FCV"'" } ));' "$MONGODB_URI"
19
- mongo --quiet --eval 'db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )' |grep "version.*$FCV"
20
- fi
21
- }
22
-
23
- add_uri_option() {
24
- opt=$1
25
-
26
- if ! echo $MONGODB_URI |sed -e s,//,, |grep -q /; then
27
- MONGODB_URI="$MONGODB_URI/"
28
- fi
29
-
30
- if ! echo $MONGODB_URI |grep -q '?'; then
31
- MONGODB_URI="$MONGODB_URI?"
32
- fi
33
-
34
- MONGODB_URI="$MONGODB_URI&$opt"
35
- }
36
-
37
- prepare_server() {
38
- arch=$1
39
-
40
- if test -n "$USE_OPT_MONGODB"; then
41
- export BINDIR=/opt/mongodb/bin
42
- export PATH=$BINDIR:$PATH
43
- return
44
- fi
45
-
46
- if test "$MONGODB_VERSION" = latest; then
47
- # Test on the most recent published 4.3 release.
48
- # https://jira.mongodb.org/browse/RUBY-1724
49
-
50
- . $PROJECT_DIRECTORY/.mod/drivers-evergreen-tools/.evergreen/download-mongodb.sh
51
-
52
- get_distro
53
- get_mongodb_download_url_for "$DISTRO" "latest"
54
- prepare_server_from_url $MONGODB_DOWNLOAD_URL
55
- else
56
- download_version="$MONGODB_VERSION"
57
- url=`$(dirname $0)/get-mongodb-download-url $download_version $arch`
58
- prepare_server_from_url $url
59
- fi
60
-
61
- }
62
-
63
- prepare_server_from_url() {
64
- url=$1
65
-
66
- dirname=`basename $url |sed -e s/.tgz//`
67
- mongodb_dir="$MONGO_ORCHESTRATION_HOME"/mdb/"$dirname"
68
- mkdir -p "$mongodb_dir"
69
- curl --retry 3 $url | tar xz -C "$mongodb_dir" --strip-components 1 -f -
70
- BINDIR="$mongodb_dir"/bin
71
- export PATH="$BINDIR":$PATH
72
- }
73
-
74
- install_mlaunch_venv() {
75
- python3 -V || true
76
- if ! python3 -m venv -h >/dev/null; then
77
- # Current virtualenv fails with
78
- # https://github.com/pypa/virtualenv/issues/1630
79
- python3 -m pip install venv --user
80
- fi
81
- if test "$USE_SYSTEM_PYTHON_PACKAGES" = 1 &&
82
- python3 -m pip list |grep mtools
83
- then
84
- # Use the existing mtools-legacy
85
- :
86
- else
87
- venvpath="$MONGO_ORCHESTRATION_HOME"/venv
88
- python3 -m venv $venvpath
89
- . $venvpath/bin/activate
90
- # [mlaunch] does not work:
91
- # https://github.com/rueckstiess/mtools/issues/856
92
- # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
93
- #pip install 'mtools==1.7' 'pymongo==4.1' python-dateutil psutil
94
-
95
- # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
96
- pip install 'mtools-legacy[mlaunch]' 'pymongo<4' python-dateutil
97
- fi
98
- }
99
-
100
- install_mlaunch_pip() {
101
- if test -n "$USE_OPT_MONGODB" && which mlaunch >/dev/null 2>&1; then
102
- # mlaunch is preinstalled in the docker image, do not install it here
103
- return
104
- fi
105
-
106
- python -V || true
107
- python3 -V || true
108
- pythonpath="$MONGO_ORCHESTRATION_HOME"/python
109
- # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
110
- pip install -t "$pythonpath" 'mtools-legacy[mlaunch]' 'pymongo<4' python-dateutil
111
- export PATH="$pythonpath/bin":$PATH
112
- export PYTHONPATH="$pythonpath"
113
- }
114
-
115
- install_mlaunch_git() {
116
- repo=$1
117
- branch=$2
118
- python -V || true
119
- python3 -V || true
120
- which pip || true
121
- which pip3 || true
122
-
123
- if false; then
124
- if ! virtualenv --version; then
125
- python3 `which pip3` install --user virtualenv
126
- export PATH=$HOME/.local/bin:$PATH
127
- virtualenv --version
128
- fi
129
-
130
- venvpath="$MONGO_ORCHESTRATION_HOME"/venv
131
- virtualenv -p python3 $venvpath
132
- . $venvpath/bin/activate
133
-
134
- # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
135
- pip3 install psutil pymongo python-dateutil
136
-
137
- git clone $repo mlaunch
138
- cd mlaunch
139
- git checkout origin/$branch
140
- python3 setup.py install
141
- cd ..
142
- else
143
- pip install --user 'virtualenv==13'
144
- export PATH=$HOME/.local/bin:$PATH
145
-
146
- venvpath="$MONGO_ORCHESTRATION_HOME"/venv
147
- virtualenv $venvpath
148
- . $venvpath/bin/activate
149
-
150
- # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
151
- pip install psutil pymongo python-dateutil
152
-
153
- git clone $repo mlaunch
154
- (cd mlaunch &&
155
- git checkout origin/$branch &&
156
- python2 setup.py install
157
- )
158
- fi
159
- }
160
-
161
- # This function sets followong global variables:
162
- # server_cert_path
163
- # server_ca_path
164
- # server_client_cert_path
165
- #
166
- # These variables are used later to connect to processes via mongo client.
167
- calculate_server_args() {
168
- local mongo_version=`echo $MONGODB_VERSION |tr -d .`
169
-
170
- if test -z "$mongo_version"; then
171
- echo "$MONGODB_VERSION must be set and not contain only dots" 1>&2
172
- exit 3
173
- fi
174
-
175
- if test $mongo_version = latest; then
176
- mongo_version=60
177
- fi
178
-
179
- local args="--setParameter enableTestCommands=1"
180
-
181
- if test $mongo_version -ge 50; then
182
- args="$args --setParameter acceptApiVersion2=1"
183
- elif test $mongo_version -ge 47; then
184
- args="$args --setParameter acceptAPIVersion2=1"
185
- fi
186
-
187
- # diagnosticDataCollectionEnabled is a mongod-only parameter on server 3.2,
188
- # and mlaunch does not support specifying mongod-only parameters:
189
- # https://github.com/rueckstiess/mtools/issues/696
190
- # Pass it to 3.4 and newer servers where it is accepted by all daemons.
191
- if test $mongo_version -ge 34; then
192
- args="$args --setParameter diagnosticDataCollectionEnabled=false"
193
- fi
194
- local uri_options=
195
- if test "$TOPOLOGY" = replica-set; then
196
- args="$args --replicaset --name test-rs --nodes 2 --arbiter"
197
- export HAVE_ARBITER=1
198
- elif test "$TOPOLOGY" = sharded-cluster; then
199
- args="$args --replicaset --nodes 2 --sharded 1 --name test-rs"
200
- if test -z "$SINGLE_MONGOS"; then
201
- args="$args --mongos 2"
202
- fi
203
- elif test "$TOPOLOGY" = standalone; then
204
- args="$args --single"
205
- elif test "$TOPOLOGY" = load-balanced; then
206
- args="$args --replicaset --nodes 2 --sharded 1 --name test-rs --port 27117"
207
- if test -z "$MRSS_ROOT"; then
208
- echo "Please set MRSS_ROOT" 1>&2
209
- exit 2
210
- fi
211
- if test -n "$SINGLE_MONGOS"; then
212
- haproxy_config=$MRSS_ROOT/share/haproxy-1.conf
213
- else
214
- args="$args --mongos 2"
215
- haproxy_config=$MRSS_ROOT/share/haproxy-2.conf
216
- fi
217
- uri_options="$uri_options&loadBalanced=true"
218
- else
219
- echo "Unknown topology: $TOPOLOGY" 1>&2
220
- exit 1
221
- fi
222
- if test -n "$MMAPV1"; then
223
- args="$args --storageEngine mmapv1 --smallfiles --noprealloc"
224
- uri_options="$uri_options&retryReads=false&retryWrites=false"
225
- fi
226
- if test "$AUTH" = auth; then
227
- args="$args --auth --username bob --password pwd123"
228
- elif test "$AUTH" = x509; then
229
- args="$args --auth --username bootstrap --password bootstrap"
230
- elif echo "$AUTH" |grep -q ^aws; then
231
- args="$args --auth --username bootstrap --password bootstrap"
232
- args="$args --setParameter authenticationMechanisms=MONGODB-AWS,SCRAM-SHA-1,SCRAM-SHA-256"
233
- uri_options="$uri_options&authMechanism=MONGODB-AWS&authSource=\$external"
234
- fi
235
-
236
- if test -n "$OCSP"; then
237
- if test -z "$OCSP_ALGORITHM"; then
238
- echo "OCSP_ALGORITHM must be set if OCSP is set" 1>&2
239
- exit 1
240
- fi
241
- fi
242
-
243
- if test "$SSL" = ssl || test -n "$OCSP_ALGORITHM"; then
244
- if test -n "$OCSP_ALGORITHM"; then
245
- if test "$OCSP_MUST_STAPLE" = 1; then
246
- server_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server-mustStaple.pem
247
- else
248
- server_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
249
- fi
250
- server_ca_path=spec/support/ocsp/$OCSP_ALGORITHM/ca.crt
251
- server_client_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
252
- else
253
- server_cert_path=spec/support/certificates/server-second-level-bundle.pem
254
- server_ca_path=spec/support/certificates/ca.crt
255
- server_client_cert_path=spec/support/certificates/client.pem
256
- fi
257
-
258
- if test -n "$OCSP_ALGORITHM"; then
259
- client_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
260
- elif test "$AUTH" = x509; then
261
- client_cert_path=spec/support/certificates/client-x509.pem
262
-
263
- uri_options="$uri_options&authMechanism=MONGODB-X509"
264
- elif echo $RVM_RUBY |grep -q jruby; then
265
- # JRuby does not grok chained certificate bundles -
266
- # https://github.com/jruby/jruby-openssl/issues/181
267
- client_cert_path=spec/support/certificates/client.pem
268
- else
269
- client_cert_path=spec/support/certificates/client-second-level-bundle.pem
270
- fi
271
-
272
- uri_options="$uri_options&tls=true&"\
273
- "tlsCAFile=$server_ca_path&"\
274
- "tlsCertificateKeyFile=$client_cert_path"
275
-
276
- args="$args --sslMode requireSSL"\
277
- " --sslPEMKeyFile $server_cert_path"\
278
- " --sslCAFile $server_ca_path"\
279
- " --sslClientCertificate $server_client_cert_path"
280
- fi
281
-
282
- # Docker forwards ports to the external interface, not to the loopback.
283
- # Hence we must bind to all interfaces here.
284
- if test -n "$BIND_ALL"; then
285
- args="$args --bind_ip_all"
286
- fi
287
-
288
- # MongoDB servers pre-4.2 do not enable zlib compression by default
289
- if test "$COMPRESSOR" = snappy; then
290
- args="$args --networkMessageCompressors snappy"
291
- elif test "$COMPRESSOR" = zlib; then
292
- args="$args --networkMessageCompressors zlib"
293
- fi
294
-
295
- if test -n "$OCSP_ALGORITHM" || test -n "$OCSP_VERIFIER"; then
296
- python3 -m pip install asn1crypto oscrypto flask
297
- fi
298
-
299
- local ocsp_args=
300
- if test -n "$OCSP_ALGORITHM"; then
301
- if test -z "$server_ca_path"; then
302
- echo "server_ca_path must have been set" 1>&2
303
- exit 1
304
- fi
305
- ocsp_args="--ca_file $server_ca_path"
306
- if test "$OCSP_DELEGATE" = 1; then
307
- ocsp_args="$ocsp_args \
308
- --ocsp_responder_cert spec/support/ocsp/$OCSP_ALGORITHM/ocsp-responder.crt \
309
- --ocsp_responder_key spec/support/ocsp/$OCSP_ALGORITHM/ocsp-responder.key \
310
- "
311
- else
312
- ocsp_args="$ocsp_args \
313
- --ocsp_responder_cert spec/support/ocsp/$OCSP_ALGORITHM/ca.crt \
314
- --ocsp_responder_key spec/support/ocsp/$OCSP_ALGORITHM/ca.key \
315
- "
316
- fi
317
- if test -n "$OCSP_STATUS"; then
318
- ocsp_args="$ocsp_args --fault $OCSP_STATUS"
319
- fi
320
- fi
321
-
322
- OCSP_ARGS="$ocsp_args"
323
- SERVER_ARGS="$args"
324
- URI_OPTIONS="$uri_options"
325
- }
326
-
327
- launch_ocsp_mock() {
328
- if test -n "$OCSP_ARGS"; then
329
- # Bind to 0.0.0.0 for Docker
330
- python3 spec/support/ocsp/ocsp_mock.py $OCSP_ARGS -b 0.0.0.0 -p 8100 &
331
- OCSP_MOCK_PID=$!
332
- fi
333
- }
334
-
335
- launch_server() {
336
- local dbdir="$1"
337
- python3 -m mtools.mlaunch.mlaunch --dir "$dbdir" --binarypath "$BINDIR" $SERVER_ARGS
338
-
339
- if test "$TOPOLOGY" = sharded-cluster && test $MONGODB_VERSION = 3.6; then
340
- # On 3.6 server the sessions collection is not immediately available,
341
- # so we run the refreshLogicalSessionCacheNow command on the config server
342
- # and again on each mongos in order for the mongoses
343
- # to correctly report logicalSessionTimeoutMinutes.
344
- mongos_regex="\s*mongos\s+([0-9]+)\s+running\s+[0-9]+"
345
- config_server_regex="\s*config\sserver\s+([0-9]+)\s+running\s+[0-9]+"
346
- config_server=""
347
- mongoses=()
348
- if test "$AUTH" = auth
349
- then
350
- base_url="mongodb://bob:pwd123@localhost"
351
- else
352
- base_url="mongodb://localhost"
353
- fi
354
- if test "$SSL" = "ssl"
355
- then
356
- mongo_command="${BINDIR}/mongo --ssl --sslPEMKeyFile $server_cert_path --sslCAFile $server_ca_path"
357
- else
358
- mongo_command="${BINDIR}/mongo"
359
- fi
360
-
361
- while read -r line
362
- do
363
- if [[ $line =~ $config_server_regex ]]
364
- then
365
- port="${BASH_REMATCH[1]}"
366
- config_server="${base_url}:${port}"
367
- fi
368
- if [[ $line =~ $mongos_regex ]]
369
- then
370
- port="${BASH_REMATCH[1]}"
371
- mongoses+=("${base_url}:${port}")
372
- fi
373
- done < <(python2 -m mtools.mlaunch.mlaunch list --dir "$dbdir" --binarypath "$BINDIR")
374
-
375
- if [ -n "$config_server" ]; then
376
- ${mongo_command} "$config_server" --eval 'db.adminCommand("refreshLogicalSessionCacheNow")'
377
- for mongos in ${mongoses[*]}
378
- do
379
- ${mongo_command} "$mongos" --eval 'db.adminCommand("refreshLogicalSessionCacheNow")'
380
- done
381
- fi
382
- fi
383
-
384
- if test "$TOPOLOGY" = load-balanced; then
385
- if test -z "$haproxy_config"; then
386
- echo haproxy_config should have been set 1>&2
387
- exit 3
388
- fi
389
-
390
- haproxy -D -f $haproxy_config -p $mongodb_dir/haproxy.pid
391
- fi
392
- }
@@ -1,169 +0,0 @@
1
- # When changing, also update the hash in share/Dockerfile.
2
- TOOLCHAIN_VERSION=219833abad4d9d3bf43c0fef101a8ca082ac4ae9
3
-
4
- set_env_java() {
5
- ls -l /opt || true
6
- ls -l /usr/lib/jvm || true
7
-
8
- # Use toolchain java if it exists
9
- if [ -f /opt/java/jdk8/bin/java ]; then
10
- export JAVACMD=/opt/java/jdk8/bin/java
11
- #export PATH=$PATH:/opt/java/jdk8/bin
12
- fi
13
-
14
- # ppc64le has it in a different place
15
- if test -z "$JAVACMD" && [ -f /usr/lib/jvm/java-1.8.0/bin/java ]; then
16
- export JAVACMD=/usr/lib/jvm/java-1.8.0/bin/java
17
- #export PATH=$PATH:/usr/lib/jvm/java-1.8.0/bin
18
- fi
19
-
20
- if true; then
21
- # newer
22
- # rhel71-ppc, https://jira.mongodb.org/browse/BUILD-9231
23
- if test -z "$JAVACMD" &&
24
- (ls /opt/java || true) |grep -q java-1.8.0-openjdk-1.8.0 &&
25
- test -f /opt/java/java-1.8.0-openjdk-1.8.0*/bin/java;
26
- then
27
- path=$(cd /opt/java && ls -d java-1.8.0-openjdk-1.8.0* |head -n 1)
28
- export JAVACMD=/opt/java/"$path"/bin/java
29
- fi
30
- else
31
- # older
32
- # rhel71-ppc seems to have an /opt/java/jdk8/bin/java but it doesn't work
33
- if test -n "$JAVACMD" && ! exec $JAVACMD -version; then
34
- JAVACMD=
35
- # we will try the /usr/lib/jvm then
36
- fi
37
- fi
38
-
39
- if test -n "$JAVACMD"; then
40
- eval $JAVACMD -version
41
- elif which java 2>/dev/null; then
42
- java -version
43
- else
44
- echo No java runtime found
45
- fi
46
- }
47
-
48
- set_env_python() {
49
- if test "$DOCKER_PRELOAD" != 1; then
50
- if test -n "$DOCKER"; then
51
- # If we are running in Docker and not preloading, we need to fetch the
52
- # Python binary.
53
- curl -fL --retry 3 https://github.com/p-mongodb/deps/raw/main/"$arch"-python37.tar.xz | \
54
- tar xfJ - -C /opt
55
- fi
56
-
57
- if test -d /opt/python/3.7/bin; then
58
- # Most Evergreen configurations.
59
- export PATH=/opt/python/3.7/bin:$PATH
60
- elif test -d /opt/python37/bin; then
61
- # Configurations that use Docker in Evergreen - these don't preload.
62
- export PATH=/opt/python37/bin:$PATH
63
- fi
64
-
65
- python3 -V
66
- fi
67
- }
68
-
69
- set_env_node() {
70
- if test "$DOCKER_PRELOAD" != 1; then
71
- dir=`ls -d /opt/nodejs/node-v12* |head -1`
72
- if test -z "$dir"; then
73
- echo "Node 12 missing" 1>&2
74
- exit 2
75
- fi
76
- export PATH="$dir/bin:$PATH"
77
- elif test -d /opt/node/bin; then
78
- # Node from toolchain in Evergreen
79
- export PATH=/opt/node/bin:$PATH
80
- fi
81
-
82
- node -v
83
- }
84
-
85
- set_env_ruby() {
86
- if test -z "$RVM_RUBY"; then
87
- echo "Empty RVM_RUBY, aborting"
88
- exit 2
89
- fi
90
-
91
- #ls -l /opt
92
-
93
- # Necessary for jruby
94
- set_env_java
95
-
96
- if [ "$RVM_RUBY" == "ruby-head" ]; then
97
- # When we use ruby-head, we do not install the Ruby toolchain.
98
- # But we still need Python 3.6+ to run mlaunch.
99
- # Since the ruby-head tests are run on ubuntu1604, we can use the
100
- # globally installed Python toolchain.
101
- #export PATH=/opt/python/3.7/bin:$PATH
102
-
103
- # 12.04, 14.04 and 16.04 are good
104
- curl --retry 3 -fL http://rubies.travis-ci.org/ubuntu/`lsb_release -rs`/x86_64/ruby-head.tar.bz2 |tar xfj -
105
- # TODO adjust gem path?
106
- export PATH=`pwd`/ruby-head/bin:`pwd`/ruby-head/lib/ruby/gems/2.6.0/bin:$PATH
107
- ruby --version
108
- ruby --version |grep dev
109
- elif test "$SYSTEM_RUBY" = 1; then
110
- # Nothing
111
- :
112
- else
113
- if test "$USE_OPT_TOOLCHAIN" = 1; then
114
- # Nothing, also PATH is already set
115
- :
116
- elif true; then
117
-
118
- # For testing toolchains:
119
- #toolchain_url=https://s3.amazonaws.com//mciuploads/mongo-ruby-toolchain/`host_distro`/f11598d091441ffc8d746aacfdc6c26741a3e629/mongo_ruby_driver_toolchain_`host_distro |tr - _`_patch_f11598d091441ffc8d746aacfdc6c26741a3e629_5e46f2793e8e866f36eda2c5_20_02_14_19_18_18.tar.gz
120
- toolchain_url=http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/$TOOLCHAIN_VERSION/`host_distro`/$RVM_RUBY.tar.xz
121
- curl --retry 3 -fL $toolchain_url |tar Jxf -
122
- export PATH=`pwd`/rubies/$RVM_RUBY/bin:$PATH
123
- #export PATH=`pwd`/rubies/python/3/bin:$PATH
124
-
125
- # Attempt to get bundler to report all errors - so far unsuccessful
126
- #curl --retry 3 -o bundler-openssl.diff https://github.com/bundler/bundler/compare/v2.0.1...p-mongo:report-errors.diff
127
- #find . -path \*/lib/bundler/fetcher.rb -exec patch {} bundler-openssl.diff \;
128
-
129
- else
130
-
131
- # Normal operation
132
- if ! test -d $HOME/.rubies/$RVM_RUBY/bin; then
133
- echo "Ruby directory does not exist: $HOME/.rubies/$RVM_RUBY/bin" 1>&2
134
- echo "Contents of /opt:" 1>&2
135
- ls -l /opt 1>&2 || true
136
- echo ".rubies symlink:" 1>&2
137
- ls -ld $HOME/.rubies 1>&2 || true
138
- echo "Our rubies:" 1>&2
139
- ls -l $HOME/.rubies 1>&2 || true
140
- exit 2
141
- fi
142
- export PATH=$HOME/.rubies/$RVM_RUBY/bin:$PATH
143
-
144
- fi
145
-
146
- ruby --version
147
-
148
- # Ensure we're using the right ruby
149
- ruby_name=`echo $RVM_RUBY |awk -F- '{print $1}'`
150
- ruby_version=`echo $RVM_RUBY |awk -F- '{print $2}' |cut -c 1-3`
151
-
152
- ruby -v |fgrep $ruby_name
153
- ruby -v |fgrep $ruby_version
154
-
155
- # We shouldn't need to update rubygems, and there is value in
156
- # testing on whatever rubygems came with each supported ruby version
157
- #echo 'updating rubygems'
158
- #gem update --system
159
-
160
- # Only install bundler when not using ruby-head.
161
- # ruby-head comes with bundler and gem complains
162
- # because installing bundler would overwrite the bundler binary.
163
- # We now install bundler in the toolchain, hence nothing needs to be done
164
- # in the tests.
165
- if false && echo "$RVM_RUBY" |grep -q jruby; then
166
- gem install bundler -v '<2'
167
- fi
168
- fi
169
- }
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
@@ -1,3 +0,0 @@
1
- ~ ʅۙ���:����\��Ѹ�����=4��b�+�.��+�r���[7>��AU��IV���L��wl�c+��pd���亩F��*83���"��~��f�`K�߁�~A�p\�as���a��h����('_- :ph�7M��i&L�E����y��4��qS1�j*�[���_o��<B]�9g_�vn�TáZ����l�'�X�0i�n��I��z( [Y�
2
- �����?�U�x �P�7P{v�\x�C��9Ϗ���s�r��b�l��k2p͈�.� ��5Ι5�`�u��8��:z׆ޭ��F��t8ê�C2�-ӫ��
3
- c_8)���R���C$�\4(�T�;)��|̃��h���t�qK]