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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -3
- data/README.md +6 -6
- data/Rakefile +44 -46
- data/lib/config/locales/en.yml +92 -43
- data/lib/mongoid/association/accessors.rb +44 -11
- data/lib/mongoid/association/bindable.rb +50 -2
- data/lib/mongoid/association/builders.rb +5 -3
- data/lib/mongoid/association/constrainable.rb +0 -1
- data/lib/mongoid/association/eager_loadable.rb +29 -7
- data/lib/mongoid/association/embedded/batchable.rb +34 -11
- data/lib/mongoid/association/embedded/cyclic.rb +1 -1
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +4 -3
- data/lib/mongoid/association/embedded/embedded_in.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +4 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +85 -46
- data/lib/mongoid/association/embedded/embeds_many.rb +2 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +19 -5
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +24 -5
- data/lib/mongoid/association/embedded/embeds_one.rb +3 -3
- data/lib/mongoid/association/macros.rb +8 -1
- data/lib/mongoid/association/many.rb +11 -7
- data/lib/mongoid/association/nested/many.rb +5 -4
- data/lib/mongoid/association/nested/nested_buildable.rb +4 -4
- data/lib/mongoid/association/nested/one.rb +45 -7
- data/lib/mongoid/association/one.rb +2 -2
- data/lib/mongoid/association/options.rb +9 -9
- data/lib/mongoid/association/proxy.rb +15 -4
- data/lib/mongoid/association/referenced/auto_save.rb +4 -3
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +5 -6
- data/lib/mongoid/association/referenced/belongs_to.rb +2 -2
- data/lib/mongoid/association/referenced/counter_cache.rb +10 -10
- data/lib/mongoid/association/referenced/eager.rb +2 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +70 -13
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +22 -30
- data/lib/mongoid/association/referenced/has_many/proxy.rb +40 -21
- data/lib/mongoid/association/referenced/has_many.rb +3 -3
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +5 -5
- data/lib/mongoid/association/referenced/has_one/proxy.rb +9 -12
- data/lib/mongoid/association/referenced/has_one.rb +3 -3
- data/lib/mongoid/association/referenced/syncable.rb +4 -4
- data/lib/mongoid/association/reflections.rb +4 -4
- data/lib/mongoid/association/relatable.rb +44 -10
- data/lib/mongoid/association.rb +5 -5
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic.rb +16 -7
- data/lib/mongoid/attributes/dynamic.rb +4 -4
- data/lib/mongoid/attributes/nested.rb +6 -6
- data/lib/mongoid/attributes/processing.rb +37 -6
- data/lib/mongoid/attributes/projector.rb +2 -2
- data/lib/mongoid/attributes/readonly.rb +3 -3
- data/lib/mongoid/attributes.rb +51 -42
- data/lib/mongoid/changeable.rb +147 -14
- data/lib/mongoid/clients/options.rb +5 -1
- data/lib/mongoid/clients/sessions.rb +2 -14
- data/lib/mongoid/clients/storage_options.rb +2 -5
- data/lib/mongoid/clients/validators/storage.rb +3 -15
- data/lib/mongoid/collection_configurable.rb +58 -0
- data/lib/mongoid/composable.rb +2 -0
- data/lib/mongoid/config/defaults.rb +60 -0
- data/lib/mongoid/config/options.rb +3 -0
- data/lib/mongoid/config/validators/async_query_executor.rb +24 -0
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config/validators.rb +1 -0
- data/lib/mongoid/config.rb +153 -18
- data/lib/mongoid/contextual/aggregable/memory.rb +24 -16
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -5
- data/lib/mongoid/contextual/aggregable/none.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +7 -7
- data/lib/mongoid/contextual/map_reduce.rb +2 -2
- data/lib/mongoid/contextual/memory.rb +285 -58
- data/lib/mongoid/contextual/mongo/documents_loader.rb +177 -0
- data/lib/mongoid/contextual/mongo.rb +540 -346
- data/lib/mongoid/contextual/none.rb +193 -20
- data/lib/mongoid/contextual/queryable.rb +1 -1
- data/lib/mongoid/contextual.rb +14 -2
- data/lib/mongoid/copyable.rb +32 -8
- data/lib/mongoid/criteria/findable.rb +8 -5
- data/lib/mongoid/criteria/includable.rb +27 -22
- data/lib/mongoid/criteria/marshalable.rb +10 -2
- data/lib/mongoid/criteria/permission.rb +1 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/array.rb +3 -16
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +1 -17
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +15 -9
- data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/set.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/string.rb +4 -14
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -12
- data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
- data/lib/mongoid/criteria/queryable/key.rb +4 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -1
- data/lib/mongoid/criteria/queryable/optional.rb +11 -17
- data/lib/mongoid/criteria/queryable/options.rb +2 -2
- data/lib/mongoid/criteria/queryable/pipeline.rb +1 -1
- data/lib/mongoid/criteria/queryable/selectable.rb +47 -38
- data/lib/mongoid/criteria/queryable/selector.rb +92 -7
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- data/lib/mongoid/criteria/queryable.rb +12 -7
- data/lib/mongoid/criteria/scopable.rb +2 -2
- data/lib/mongoid/criteria/translator.rb +45 -0
- data/lib/mongoid/criteria.rb +20 -40
- data/lib/mongoid/deprecable.rb +37 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +127 -35
- data/lib/mongoid/equality.rb +8 -8
- data/lib/mongoid/errors/create_collection_failure.rb +33 -0
- data/lib/mongoid/errors/document_not_found.rb +10 -6
- data/lib/mongoid/errors/drop_collection_failure.rb +27 -0
- data/lib/mongoid/errors/immutable_attribute.rb +26 -0
- data/lib/mongoid/errors/invalid_async_query_executor.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +1 -1
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -1
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
- data/lib/mongoid/errors/invalid_field.rb +6 -2
- data/lib/mongoid/errors/invalid_field_type.rb +26 -0
- data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +22 -0
- data/lib/mongoid/errors/invalid_relation.rb +1 -1
- data/lib/mongoid/errors/invalid_relation_option.rb +1 -1
- data/lib/mongoid/errors/invalid_session_use.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
- data/lib/mongoid/errors/mongoid_error.rb +3 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -1
- data/lib/mongoid/errors/no_client_database.rb +1 -1
- data/lib/mongoid/errors/no_client_hosts.rb +1 -1
- data/lib/mongoid/errors/readonly_attribute.rb +1 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
- data/lib/mongoid/errors/unknown_attribute.rb +1 -1
- data/lib/mongoid/errors.rb +6 -3
- data/lib/mongoid/extensions/array.rb +9 -7
- data/lib/mongoid/extensions/big_decimal.rb +33 -10
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +8 -2
- data/lib/mongoid/extensions/date.rb +26 -20
- data/lib/mongoid/extensions/date_time.rb +1 -1
- data/lib/mongoid/extensions/false_class.rb +1 -1
- data/lib/mongoid/extensions/float.rb +7 -4
- data/lib/mongoid/extensions/hash.rb +38 -9
- data/lib/mongoid/extensions/integer.rb +7 -4
- data/lib/mongoid/extensions/module.rb +1 -1
- data/lib/mongoid/extensions/object.rb +10 -8
- data/lib/mongoid/extensions/range.rb +41 -10
- data/lib/mongoid/extensions/regexp.rb +11 -4
- data/lib/mongoid/extensions/set.rb +11 -4
- data/lib/mongoid/extensions/string.rb +11 -22
- data/lib/mongoid/extensions/symbol.rb +4 -15
- data/lib/mongoid/extensions/time.rb +29 -16
- data/lib/mongoid/extensions/time_with_zone.rb +1 -2
- data/lib/mongoid/extensions/true_class.rb +1 -1
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +55 -7
- data/lib/mongoid/fields/foreign_key.rb +11 -4
- data/lib/mongoid/fields/localized.rb +19 -4
- data/lib/mongoid/fields/standard.rb +17 -7
- data/lib/mongoid/fields/validators/macro.rb +3 -9
- data/lib/mongoid/fields.rb +142 -28
- data/lib/mongoid/findable.rb +54 -24
- data/lib/mongoid/indexable/specification.rb +2 -2
- data/lib/mongoid/indexable/validators/options.rb +6 -2
- data/lib/mongoid/interceptable.rb +186 -16
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher/eq_impl.rb +1 -1
- data/lib/mongoid/matcher/type.rb +1 -1
- data/lib/mongoid/matcher.rb +48 -14
- data/lib/mongoid/persistable/creatable.rb +19 -9
- data/lib/mongoid/persistable/deletable.rb +2 -2
- data/lib/mongoid/persistable/destroyable.rb +1 -1
- data/lib/mongoid/persistable/savable.rb +14 -2
- data/lib/mongoid/persistable/unsettable.rb +2 -2
- data/lib/mongoid/persistable/updatable.rb +69 -12
- data/lib/mongoid/persistable/upsertable.rb +21 -2
- data/lib/mongoid/persistable.rb +6 -3
- data/lib/mongoid/persistence_context.rb +6 -4
- data/lib/mongoid/query_cache.rb +13 -261
- data/lib/mongoid/railties/controller_runtime.rb +1 -1
- data/lib/mongoid/railties/database.rake +7 -2
- data/lib/mongoid/reloadable.rb +10 -8
- data/lib/mongoid/scopable.rb +15 -13
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +17 -13
- data/lib/mongoid/stateful.rb +57 -10
- data/lib/mongoid/tasks/database.rake +12 -0
- data/lib/mongoid/tasks/database.rb +20 -2
- data/lib/mongoid/threaded/lifecycle.rb +5 -5
- data/lib/mongoid/threaded.rb +42 -12
- data/lib/mongoid/timestamps/created.rb +1 -1
- data/lib/mongoid/timestamps/updated.rb +2 -2
- data/lib/mongoid/touchable.rb +3 -4
- data/lib/mongoid/traversable.rb +10 -5
- data/lib/mongoid/utils.rb +22 -0
- data/lib/mongoid/validatable/associated.rb +98 -17
- data/lib/mongoid/validatable/localizable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +5 -7
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +9 -8
- data/lib/mongoid/validatable.rb +17 -6
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +19 -4
- data/lib/mongoid.rb +17 -3
- data/spec/config/mongoid.yml +16 -0
- data/spec/integration/app_spec.rb +24 -19
- data/spec/integration/associations/belongs_to_spec.rb +18 -0
- data/spec/integration/associations/embedded_spec.rb +15 -0
- data/spec/integration/associations/embeds_many_spec.rb +15 -2
- data/spec/integration/associations/embeds_one_spec.rb +18 -0
- data/spec/integration/associations/foreign_key_spec.rb +9 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +61 -0
- data/spec/integration/associations/has_one_spec.rb +97 -1
- data/spec/integration/associations/scope_option_spec.rb +1 -1
- data/spec/integration/callbacks_models.rb +132 -1
- data/spec/integration/callbacks_spec.rb +381 -4
- data/spec/integration/criteria/range_spec.rb +95 -1
- data/spec/integration/discriminator_key_spec.rb +118 -80
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +3 -32
- data/spec/integration/matcher_examples_spec.rb +20 -13
- data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
- data/spec/integration/matcher_operator_spec.rb +3 -5
- data/spec/integration/persistence/range_field_spec.rb +350 -0
- data/spec/mongoid/association/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +9 -9
- data/spec/mongoid/association/eager_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +96 -9
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +290 -65
- data/spec/mongoid/association/embedded/embeds_many_models.rb +37 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +16 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +15 -2
- data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +19 -0
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +4 -20
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +186 -229
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2 -56
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +215 -177
- data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
- data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
- data/spec/mongoid/association/syncable_spec.rb +15 -1
- data/spec/mongoid/atomic/paths_spec.rb +0 -14
- data/spec/mongoid/attributes/nested_spec.rb +80 -11
- data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
- data/spec/mongoid/attributes/projector_spec.rb +1 -5
- data/spec/mongoid/attributes_spec.rb +526 -33
- data/spec/mongoid/changeable_spec.rb +429 -37
- data/spec/mongoid/clients/factory_spec.rb +23 -30
- data/spec/mongoid/clients/sessions_spec.rb +0 -38
- data/spec/mongoid/clients_spec.rb +149 -15
- data/spec/mongoid/collection_configurable_spec.rb +158 -0
- data/spec/mongoid/config/defaults_spec.rb +160 -0
- data/spec/mongoid/config_spec.rb +214 -31
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
- data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
- data/spec/mongoid/contextual/memory_spec.rb +850 -88
- data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +187 -0
- data/spec/mongoid/contextual/mongo_spec.rb +2256 -1005
- data/spec/mongoid/contextual/none_spec.rb +60 -21
- data/spec/mongoid/copyable_spec.rb +453 -11
- data/spec/mongoid/criteria/findable_spec.rb +86 -210
- data/spec/mongoid/criteria/includable_spec.rb +1492 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -69
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -59
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +15 -484
- data/spec/mongoid/criteria/queryable/options_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +469 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +78 -86
- data/spec/mongoid/criteria/queryable/selector_spec.rb +15 -3
- data/spec/mongoid/criteria/translator_spec.rb +132 -0
- data/spec/mongoid/criteria_projection_spec.rb +1 -5
- data/spec/mongoid/criteria_spec.rb +469 -1205
- data/spec/mongoid/document_fields_spec.rb +173 -24
- data/spec/mongoid/document_spec.rb +32 -41
- data/spec/mongoid/errors/document_not_found_spec.rb +29 -2
- data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_document_spec.rb +2 -2
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
- data/spec/mongoid/extensions/array_spec.rb +16 -2
- data/spec/mongoid/extensions/big_decimal_spec.rb +712 -212
- data/spec/mongoid/extensions/binary_spec.rb +44 -9
- data/spec/mongoid/extensions/boolean_spec.rb +68 -82
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
- data/spec/mongoid/extensions/date_spec.rb +71 -1
- data/spec/mongoid/extensions/date_time_spec.rb +15 -9
- data/spec/mongoid/extensions/float_spec.rb +53 -74
- data/spec/mongoid/extensions/hash_spec.rb +33 -3
- data/spec/mongoid/extensions/integer_spec.rb +50 -64
- data/spec/mongoid/extensions/range_spec.rb +255 -54
- data/spec/mongoid/extensions/regexp_spec.rb +58 -33
- data/spec/mongoid/extensions/set_spec.rb +106 -0
- data/spec/mongoid/extensions/string_spec.rb +53 -25
- data/spec/mongoid/extensions/symbol_spec.rb +18 -25
- data/spec/mongoid/extensions/time_spec.rb +639 -106
- data/spec/mongoid/extensions/time_with_zone_spec.rb +24 -83
- data/spec/mongoid/factory_spec.rb +61 -1
- data/spec/mongoid/fields/localized_spec.rb +80 -37
- data/spec/mongoid/fields_spec.rb +503 -87
- data/spec/mongoid/findable_spec.rb +450 -58
- data/spec/mongoid/indexable/specification_spec.rb +2 -2
- data/spec/mongoid/indexable_spec.rb +55 -30
- data/spec/mongoid/interceptable_spec.rb +824 -22
- data/spec/mongoid/interceptable_spec_models.rb +235 -4
- data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
- data/spec/mongoid/mongoizable_spec.rb +285 -0
- data/spec/mongoid/persistable/creatable_spec.rb +2 -2
- data/spec/mongoid/persistable/deletable_spec.rb +28 -8
- data/spec/mongoid/persistable/destroyable_spec.rb +28 -8
- data/spec/mongoid/persistable/incrementable_spec.rb +37 -0
- data/spec/mongoid/persistable/logical_spec.rb +37 -0
- data/spec/mongoid/persistable/poppable_spec.rb +36 -0
- data/spec/mongoid/persistable/pullable_spec.rb +72 -0
- data/spec/mongoid/persistable/pushable_spec.rb +72 -0
- data/spec/mongoid/persistable/renamable_spec.rb +36 -0
- data/spec/mongoid/persistable/savable_spec.rb +96 -0
- data/spec/mongoid/persistable/settable_spec.rb +37 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +36 -0
- data/spec/mongoid/persistable/updatable_spec.rb +20 -28
- data/spec/mongoid/persistable/upsertable_spec.rb +89 -1
- data/spec/mongoid/persistence_context_spec.rb +31 -57
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
- data/spec/mongoid/query_cache_spec.rb +56 -215
- data/spec/mongoid/reloadable_spec.rb +83 -6
- data/spec/mongoid/scopable_spec.rb +91 -1
- data/spec/mongoid/serializable_spec.rb +25 -39
- data/spec/mongoid/shardable_spec.rb +4 -4
- data/spec/mongoid/stateful_spec.rb +150 -8
- data/spec/mongoid/tasks/database_rake_spec.rb +74 -0
- data/spec/mongoid/tasks/database_spec.rb +127 -0
- data/spec/mongoid/timestamps_spec.rb +392 -4
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +390 -2
- data/spec/mongoid/touchable_spec_models.rb +14 -8
- data/spec/mongoid/traversable_spec.rb +13 -35
- data/spec/mongoid/validatable/associated_spec.rb +27 -34
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +58 -31
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/mongoid_spec.rb +34 -16
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/spec_helper.rb +5 -0
- data/spec/support/constraints.rb +24 -0
- data/spec/support/immutable_ids.rb +118 -0
- data/spec/support/macros.rb +78 -0
- data/spec/support/models/artist.rb +0 -1
- data/spec/support/models/augmentation.rb +12 -0
- data/spec/support/models/band.rb +5 -0
- data/spec/support/models/book.rb +1 -0
- data/spec/support/models/building.rb +2 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/support/models/circus.rb +3 -0
- data/spec/support/models/cover.rb +10 -0
- data/spec/support/models/fanatic.rb +8 -0
- data/spec/support/models/implant.rb +9 -0
- data/spec/support/models/label.rb +2 -0
- data/spec/support/models/lat_lng.rb +6 -0
- data/spec/support/models/name.rb +10 -0
- data/spec/support/models/passport.rb +9 -0
- data/spec/support/models/person.rb +2 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -0
- data/spec/support/models/product.rb +1 -0
- data/spec/support/models/purse.rb +9 -0
- data/spec/support/models/registry.rb +1 -0
- data/spec/support/models/school.rb +14 -0
- data/spec/support/models/shield.rb +18 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/support/models/weapon.rb +12 -0
- metadata +101 -96
- checksums.yaml.gz.sig +0 -0
- data/lib/mongoid/errors/eager_load.rb +0 -23
- data/lib/mongoid/errors/invalid_value.rb +0 -17
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -60
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -60
- data/spec/mongoid/errors/eager_load_spec.rb +0 -31
- data/spec/shared/LICENSE +0 -20
- data/spec/shared/bin/get-mongodb-download-url +0 -17
- data/spec/shared/bin/s3-copy +0 -45
- data/spec/shared/bin/s3-upload +0 -69
- data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
- data/spec/shared/lib/mrss/cluster_config.rb +0 -231
- data/spec/shared/lib/mrss/constraints.rb +0 -378
- data/spec/shared/lib/mrss/docker_runner.rb +0 -291
- data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
- data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
- data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
- data/spec/shared/lib/mrss/session_registry.rb +0 -69
- data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
- data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
- data/spec/shared/lib/mrss/utils.rb +0 -15
- data/spec/shared/share/Dockerfile.erb +0 -325
- data/spec/shared/share/haproxy-1.conf +0 -16
- data/spec/shared/share/haproxy-2.conf +0 -17
- data/spec/shared/shlib/config.sh +0 -27
- data/spec/shared/shlib/distro.sh +0 -74
- data/spec/shared/shlib/server.sh +0 -392
- data/spec/shared/shlib/set_env.sh +0 -169
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -3
data/spec/shared/shlib/server.sh
DELETED
@@ -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]
|