mongoid 7.1.11 → 7.2.0
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
- checksums.yaml.gz.sig +0 -0
- data/README.md +10 -3
- data/lib/config/locales/en.yml +37 -14
- data/lib/mongoid/association/depending.rb +1 -6
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +1 -1
- data/lib/mongoid/association/many.rb +3 -3
- data/lib/mongoid/association/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +37 -2
- data/lib/mongoid/association/referenced/has_many/proxy.rb +9 -2
- data/lib/mongoid/association/referenced/has_one/buildable.rb +9 -1
- data/lib/mongoid/atomic/modifiers.rb +1 -1
- data/lib/mongoid/attributes/dynamic.rb +1 -1
- data/lib/mongoid/attributes.rb +1 -8
- data/lib/mongoid/clients/factory.rb +17 -0
- data/lib/mongoid/composable.rb +1 -0
- data/lib/mongoid/config/environment.rb +1 -9
- data/lib/mongoid/config.rb +3 -0
- data/lib/mongoid/contextual/atomic.rb +2 -7
- data/lib/mongoid/contextual/mongo.rb +23 -4
- data/lib/mongoid/contextual/none.rb +0 -3
- data/lib/mongoid/copyable.rb +7 -3
- data/lib/mongoid/criteria/queryable/key.rb +1 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +2 -2
- data/lib/mongoid/criteria/queryable/selectable.rb +23 -8
- data/lib/mongoid/criteria/queryable/selector.rb +7 -3
- data/lib/mongoid/criteria/queryable/storable.rb +7 -7
- data/lib/mongoid/criteria.rb +58 -8
- data/lib/mongoid/document.rb +19 -9
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +25 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +26 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +28 -0
- data/lib/mongoid/errors/invalid_field_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_query.rb +41 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/errors.rb +7 -2
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +27 -10
- data/lib/mongoid/fields/validators/macro.rb +22 -9
- data/lib/mongoid/fields.rb +3 -0
- data/lib/mongoid/findable.rb +50 -14
- data/lib/mongoid/indexable.rb +2 -2
- data/lib/mongoid/interceptable.rb +2 -4
- data/lib/mongoid/matchable.rb +1 -149
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/elem_match.rb +35 -0
- data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
- data/lib/mongoid/matcher/eq.rb +11 -0
- data/lib/mongoid/matcher/eq_impl.rb +32 -0
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +21 -0
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +40 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +63 -0
- data/lib/mongoid/matcher/field_operator.rb +52 -0
- data/lib/mongoid/matcher/gt.rb +17 -0
- data/lib/mongoid/matcher/gte.rb +17 -0
- data/lib/mongoid/matcher/in.rb +25 -0
- data/lib/mongoid/matcher/lt.rb +17 -0
- data/lib/mongoid/matcher/lte.rb +17 -0
- data/lib/mongoid/matcher/ne.rb +16 -0
- data/lib/mongoid/matcher/nin.rb +11 -0
- data/lib/mongoid/matcher/nor.rb +25 -0
- data/lib/mongoid/matcher/not.rb +29 -0
- data/lib/mongoid/matcher/or.rb +21 -0
- data/lib/mongoid/matcher/regex.rb +41 -0
- data/lib/mongoid/matcher/size.rb +26 -0
- data/lib/mongoid/matcher.rb +127 -0
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/persistence_context.rb +1 -3
- data/lib/mongoid/query_cache.rb +64 -62
- data/lib/mongoid/reloadable.rb +2 -7
- data/lib/mongoid/serializable.rb +1 -1
- data/lib/mongoid/stringified_symbol.rb +53 -0
- data/lib/mongoid/tasks/database.rb +1 -1
- data/lib/mongoid/traversable.rb +111 -4
- data/lib/mongoid/validatable/associated.rb +1 -1
- data/lib/mongoid/validatable/presence.rb +3 -3
- data/lib/mongoid/validatable/uniqueness.rb +1 -1
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid.rb +23 -1
- data/lib/rails/generators/mongoid/config/config_generator.rb +1 -8
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +1 -1
- data/spec/README.md +19 -4
- data/spec/integration/app_spec.rb +84 -174
- data/spec/integration/associations/embedded_spec.rb +94 -0
- data/spec/integration/associations/has_many_spec.rb +67 -14
- data/spec/integration/associations/has_one_spec.rb +67 -14
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
- data/spec/integration/atomic/modifiers_spec.rb +117 -0
- data/spec/integration/discriminator_key_spec.rb +354 -0
- data/spec/integration/discriminator_value_spec.rb +207 -0
- data/spec/integration/document_spec.rb +0 -21
- data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -41
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +363 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +16 -0
- data/spec/integration/matcher_operator_data/in.yml +194 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_spec.rb +100 -0
- data/spec/integration/matcher_spec.rb +189 -0
- data/spec/integration/server_query_spec.rb +142 -0
- data/spec/integration/stringified_symbol_field_spec.rb +190 -0
- data/spec/lite_spec_helper.rb +4 -3
- data/spec/mongoid/association/depending_spec.rb +78 -26
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +0 -50
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +37 -17
- data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +0 -17
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +460 -186
- data/spec/mongoid/association/referenced/has_many_models.rb +21 -0
- data/spec/mongoid/association/referenced/has_one_models.rb +21 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +47 -0
- data/spec/mongoid/atomic/paths_spec.rb +0 -41
- data/spec/mongoid/atomic_spec.rb +23 -0
- data/spec/mongoid/attributes/nested_spec.rb +1 -1
- data/spec/mongoid/attributes_spec.rb +0 -241
- data/spec/mongoid/clients/factory_spec.rb +35 -9
- data/spec/mongoid/clients/options_spec.rb +3 -11
- data/spec/mongoid/clients/sessions_spec.rb +1 -6
- data/spec/mongoid/config/environment_spec.rb +8 -86
- data/spec/mongoid/config_spec.rb +28 -0
- data/spec/mongoid/contextual/atomic_spec.rb +29 -81
- data/spec/mongoid/contextual/geo_near_spec.rb +1 -1
- data/spec/mongoid/contextual/mongo_spec.rb +70 -16
- data/spec/mongoid/copyable_spec.rb +197 -18
- data/spec/mongoid/copyable_spec_models.rb +28 -0
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -36
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
- data/spec/mongoid/criteria_spec.rb +204 -43
- data/spec/mongoid/document_query_spec.rb +0 -51
- data/spec/mongoid/document_spec.rb +90 -36
- data/spec/mongoid/equality_spec.rb +0 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
- data/spec/mongoid/errors/mongoid_error_spec.rb +8 -20
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +85 -0
- data/spec/mongoid/factory_spec.rb +261 -28
- data/spec/mongoid/fields_spec.rb +48 -2
- data/spec/mongoid/findable_spec.rb +32 -0
- data/spec/mongoid/indexable_spec.rb +28 -2
- data/spec/mongoid/inspectable_spec.rb +29 -2
- data/spec/mongoid/interceptable_spec.rb +2 -2
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +259 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +47 -0
- data/spec/mongoid/persistable/creatable_spec.rb +108 -25
- data/spec/mongoid/persistable/deletable_spec.rb +86 -0
- data/spec/mongoid/persistable/savable_spec.rb +174 -16
- data/spec/mongoid/persistable/settable_spec.rb +0 -30
- data/spec/mongoid/persistable/updatable_spec.rb +0 -2
- data/spec/mongoid/persistable_spec.rb +2 -2
- data/spec/mongoid/query_cache_middleware_spec.rb +16 -3
- data/spec/mongoid/query_cache_spec.rb +442 -41
- data/spec/mongoid/reloadable_spec.rb +72 -0
- data/spec/mongoid/serializable_spec.rb +21 -3
- data/spec/mongoid/traversable_spec.rb +1100 -0
- data/spec/shared/lib/mrss/constraints.rb +10 -92
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -16
- data/spec/shared/lib/mrss/spec_organizer.rb +2 -32
- data/spec/spec_helper.rb +3 -3
- data/spec/support/constraints.rb +24 -0
- data/spec/support/helpers.rb +1 -1
- data/spec/{app → support}/models/actor.rb +1 -1
- data/spec/{app → support}/models/address.rb +0 -4
- data/spec/support/models/armrest.rb +10 -0
- data/spec/{app → support}/models/browser.rb +1 -1
- data/spec/{app → support}/models/canvas.rb +1 -1
- data/spec/{app → support}/models/coding.rb +1 -1
- data/spec/support/models/crate.rb +13 -0
- data/spec/support/models/deed.rb +8 -0
- data/spec/{app → support}/models/dictionary.rb +0 -6
- data/spec/{app → support}/models/driver.rb +1 -1
- data/spec/support/models/guitar.rb +5 -0
- data/spec/support/models/idnodef.rb +8 -0
- data/spec/support/models/instrument.rb +9 -0
- data/spec/{app → support}/models/item.rb +1 -1
- data/spec/{app → support}/models/mop.rb +0 -10
- data/spec/support/models/order.rb +11 -0
- data/spec/{app → support}/models/owner.rb +2 -0
- data/spec/{app → support}/models/palette.rb +1 -1
- data/spec/{app → support}/models/person.rb +1 -10
- data/spec/support/models/piano.rb +5 -0
- data/spec/support/models/profile.rb +18 -0
- data/spec/support/models/publication.rb +5 -0
- data/spec/{app/models/profile.rb → support/models/scribe.rb} +2 -2
- data/spec/support/models/seat.rb +25 -0
- data/spec/{app → support}/models/shape.rb +2 -2
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tool.rb +2 -2
- data/spec/support/models/toy.rb +10 -0
- data/spec/{app → support}/models/truck.rb +2 -0
- data/spec/{app → support}/models/vehicle.rb +7 -2
- data/spec/{app → support}/models/writer.rb +2 -2
- data/spec/support/spec_config.rb +1 -9
- data.tar.gz.sig +0 -0
- metadata +839 -820
- metadata.gz.sig +2 -2
- data/lib/mongoid/errors/empty_config_file.rb +0 -26
- data/lib/mongoid/errors/invalid_config_file.rb +0 -26
- data/lib/mongoid/matchable/all.rb +0 -30
- data/lib/mongoid/matchable/and.rb +0 -32
- data/lib/mongoid/matchable/default.rb +0 -121
- data/lib/mongoid/matchable/elem_match.rb +0 -36
- data/lib/mongoid/matchable/eq.rb +0 -23
- data/lib/mongoid/matchable/exists.rb +0 -25
- data/lib/mongoid/matchable/gt.rb +0 -25
- data/lib/mongoid/matchable/gte.rb +0 -25
- data/lib/mongoid/matchable/in.rb +0 -26
- data/lib/mongoid/matchable/lt.rb +0 -25
- data/lib/mongoid/matchable/lte.rb +0 -25
- data/lib/mongoid/matchable/ne.rb +0 -23
- data/lib/mongoid/matchable/nin.rb +0 -24
- data/lib/mongoid/matchable/nor.rb +0 -38
- data/lib/mongoid/matchable/or.rb +0 -35
- data/lib/mongoid/matchable/regexp.rb +0 -30
- data/lib/mongoid/matchable/size.rb +0 -23
- data/spec/app/models/customer.rb +0 -11
- data/spec/app/models/customer_address.rb +0 -12
- data/spec/app/models/publication.rb +0 -5
- data/spec/integration/callbacks_models.rb +0 -49
- data/spec/integration/callbacks_spec.rb +0 -216
- data/spec/integration/contextual/empty_spec.rb +0 -142
- data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -32
- data/spec/mongoid/matchable/all_spec.rb +0 -34
- data/spec/mongoid/matchable/and_spec.rb +0 -190
- data/spec/mongoid/matchable/default_spec.rb +0 -140
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -109
- data/spec/mongoid/matchable/eq_spec.rb +0 -49
- data/spec/mongoid/matchable/exists_spec.rb +0 -60
- data/spec/mongoid/matchable/gt_spec.rb +0 -89
- data/spec/mongoid/matchable/gte_spec.rb +0 -87
- data/spec/mongoid/matchable/in_spec.rb +0 -52
- data/spec/mongoid/matchable/lt_spec.rb +0 -88
- data/spec/mongoid/matchable/lte_spec.rb +0 -88
- data/spec/mongoid/matchable/ne_spec.rb +0 -49
- data/spec/mongoid/matchable/nin_spec.rb +0 -51
- data/spec/mongoid/matchable/nor_spec.rb +0 -210
- data/spec/mongoid/matchable/or_spec.rb +0 -134
- data/spec/mongoid/matchable/regexp_spec.rb +0 -62
- data/spec/mongoid/matchable/size_spec.rb +0 -28
- data/spec/mongoid/matchable_spec.rb +0 -856
- 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/cluster_config.rb +0 -226
- data/spec/shared/lib/mrss/docker_runner.rb +0 -271
- data/spec/shared/lib/mrss/event_subscriber.rb +0 -200
- data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
- data/spec/shared/lib/mrss/utils.rb +0 -15
- data/spec/shared/share/Dockerfile.erb +0 -323
- data/spec/shared/share/haproxy-1.conf +0 -16
- data/spec/shared/share/haproxy-2.conf +0 -17
- data/spec/shared/shlib/distro.sh +0 -73
- data/spec/shared/shlib/server.sh +0 -367
- data/spec/shared/shlib/set_env.sh +0 -131
- /data/spec/{app → support}/models/account.rb +0 -0
- /data/spec/{app → support}/models/acolyte.rb +0 -0
- /data/spec/{app → support}/models/actress.rb +0 -0
- /data/spec/{app → support}/models/address_component.rb +0 -0
- /data/spec/{app → support}/models/address_number.rb +0 -0
- /data/spec/{app → support}/models/agency.rb +0 -0
- /data/spec/{app → support}/models/agent.rb +0 -0
- /data/spec/{app → support}/models/album.rb +0 -0
- /data/spec/{app → support}/models/alert.rb +0 -0
- /data/spec/{app → support}/models/animal.rb +0 -0
- /data/spec/{app → support}/models/answer.rb +0 -0
- /data/spec/{app → support}/models/appointment.rb +0 -0
- /data/spec/{app → support}/models/array_field.rb +0 -0
- /data/spec/{app → support}/models/article.rb +0 -0
- /data/spec/{app → support}/models/artist.rb +0 -0
- /data/spec/{app → support}/models/artwork.rb +0 -0
- /data/spec/{app → support}/models/audio.rb +0 -0
- /data/spec/{app → support}/models/augmentation.rb +0 -0
- /data/spec/{app → support}/models/author.rb +0 -0
- /data/spec/{app → support}/models/baby.rb +0 -0
- /data/spec/{app → support}/models/band.rb +0 -0
- /data/spec/{app → support}/models/bar.rb +0 -0
- /data/spec/{app → support}/models/basic.rb +0 -0
- /data/spec/{app → support}/models/bed.rb +0 -0
- /data/spec/{app → support}/models/big_palette.rb +0 -0
- /data/spec/{app → support}/models/birthday.rb +0 -0
- /data/spec/{app → support}/models/bomb.rb +0 -0
- /data/spec/{app → support}/models/book.rb +0 -0
- /data/spec/{app → support}/models/breed.rb +0 -0
- /data/spec/{app → support}/models/building.rb +0 -0
- /data/spec/{app → support}/models/building_address.rb +0 -0
- /data/spec/{app → support}/models/bus.rb +0 -0
- /data/spec/{app → support}/models/business.rb +0 -0
- /data/spec/{app → support}/models/callback_test.rb +0 -0
- /data/spec/{app → support}/models/car.rb +0 -0
- /data/spec/{app → support}/models/cat.rb +0 -0
- /data/spec/{app → support}/models/category.rb +0 -0
- /data/spec/{app → support}/models/child.rb +0 -0
- /data/spec/{app → support}/models/child_doc.rb +0 -0
- /data/spec/{app → support}/models/church.rb +0 -0
- /data/spec/{app → support}/models/circle.rb +0 -0
- /data/spec/{app → support}/models/circuit.rb +0 -0
- /data/spec/{app → support}/models/circus.rb +0 -0
- /data/spec/{app → support}/models/code.rb +0 -0
- /data/spec/{app → support}/models/coding/pull_request.rb +0 -0
- /data/spec/{app → support}/models/comment.rb +0 -0
- /data/spec/{app → support}/models/company.rb +0 -0
- /data/spec/{app → support}/models/consumption_period.rb +0 -0
- /data/spec/{app → support}/models/contextable_item.rb +0 -0
- /data/spec/{app → support}/models/contractor.rb +0 -0
- /data/spec/{app → support}/models/cookie.rb +0 -0
- /data/spec/{app → support}/models/country_code.rb +0 -0
- /data/spec/{app → support}/models/courier_job.rb +0 -0
- /data/spec/{app → support}/models/definition.rb +0 -0
- /data/spec/{app → support}/models/delegating_patient.rb +0 -0
- /data/spec/{app → support}/models/description.rb +0 -0
- /data/spec/{app → support}/models/division.rb +0 -0
- /data/spec/{app → support}/models/doctor.rb +0 -0
- /data/spec/{app → support}/models/dog.rb +0 -0
- /data/spec/{app → support}/models/dokument.rb +0 -0
- /data/spec/{app → support}/models/draft.rb +0 -0
- /data/spec/{app → support}/models/dragon.rb +0 -0
- /data/spec/{app → support}/models/drug.rb +0 -0
- /data/spec/{app → support}/models/dungeon.rb +0 -0
- /data/spec/{app → support}/models/edit.rb +0 -0
- /data/spec/{app → support}/models/email.rb +0 -0
- /data/spec/{app → support}/models/employer.rb +0 -0
- /data/spec/{app → support}/models/entry.rb +0 -0
- /data/spec/{app → support}/models/eraser.rb +0 -0
- /data/spec/{app → support}/models/even.rb +0 -0
- /data/spec/{app → support}/models/event.rb +0 -0
- /data/spec/{app → support}/models/exhibition.rb +0 -0
- /data/spec/{app → support}/models/exhibitor.rb +0 -0
- /data/spec/{app → support}/models/explosion.rb +0 -0
- /data/spec/{app → support}/models/eye.rb +0 -0
- /data/spec/{app → support}/models/eye_bowl.rb +0 -0
- /data/spec/{app → support}/models/face.rb +0 -0
- /data/spec/{app → support}/models/favorite.rb +0 -0
- /data/spec/{app → support}/models/filesystem.rb +0 -0
- /data/spec/{app → support}/models/fire_hydrant.rb +0 -0
- /data/spec/{app → support}/models/firefox.rb +0 -0
- /data/spec/{app → support}/models/fish.rb +0 -0
- /data/spec/{app → support}/models/folder.rb +0 -0
- /data/spec/{app → support}/models/folder_item.rb +0 -0
- /data/spec/{app → support}/models/fruits.rb +0 -0
- /data/spec/{app → support}/models/game.rb +0 -0
- /data/spec/{app → support}/models/ghost.rb +0 -0
- /data/spec/{app → support}/models/home.rb +0 -0
- /data/spec/{app → support}/models/house.rb +0 -0
- /data/spec/{app → support}/models/html_writer.rb +0 -0
- /data/spec/{app → support}/models/id_key.rb +0 -0
- /data/spec/{app → support}/models/image.rb +0 -0
- /data/spec/{app → support}/models/implant.rb +0 -0
- /data/spec/{app → support}/models/jar.rb +0 -0
- /data/spec/{app → support}/models/kaleidoscope.rb +0 -0
- /data/spec/{app → support}/models/kangaroo.rb +0 -0
- /data/spec/{app → support}/models/label.rb +0 -0
- /data/spec/{app → support}/models/language.rb +0 -0
- /data/spec/{app → support}/models/lat_lng.rb +0 -0
- /data/spec/{app → support}/models/league.rb +0 -0
- /data/spec/{app → support}/models/learner.rb +0 -0
- /data/spec/{app → support}/models/line_item.rb +0 -0
- /data/spec/{app → support}/models/location.rb +0 -0
- /data/spec/{app → support}/models/login.rb +0 -0
- /data/spec/{app → support}/models/manufacturer.rb +0 -0
- /data/spec/{app → support}/models/meat.rb +0 -0
- /data/spec/{app → support}/models/membership.rb +0 -0
- /data/spec/{app → support}/models/message.rb +0 -0
- /data/spec/{app → support}/models/minim.rb +0 -0
- /data/spec/{app → support}/models/mixed_drink.rb +0 -0
- /data/spec/{app → support}/models/movie.rb +0 -0
- /data/spec/{app → support}/models/my_hash.rb +0 -0
- /data/spec/{app → support}/models/name.rb +0 -0
- /data/spec/{app → support}/models/name_only.rb +0 -0
- /data/spec/{app → support}/models/node.rb +0 -0
- /data/spec/{app → support}/models/note.rb +0 -0
- /data/spec/{app → support}/models/odd.rb +0 -0
- /data/spec/{app → support}/models/ordered_post.rb +0 -0
- /data/spec/{app → support}/models/ordered_preference.rb +0 -0
- /data/spec/{app → support}/models/oscar.rb +0 -0
- /data/spec/{app → support}/models/other_owner_object.rb +0 -0
- /data/spec/{app → support}/models/override.rb +0 -0
- /data/spec/{app → support}/models/ownable.rb +0 -0
- /data/spec/{app → support}/models/pack.rb +0 -0
- /data/spec/{app → support}/models/page.rb +0 -0
- /data/spec/{app → support}/models/page_question.rb +0 -0
- /data/spec/{app → support}/models/parent.rb +0 -0
- /data/spec/{app → support}/models/parent_doc.rb +0 -0
- /data/spec/{app → support}/models/passport.rb +0 -0
- /data/spec/{app → support}/models/patient.rb +0 -0
- /data/spec/{app → support}/models/pdf_writer.rb +0 -0
- /data/spec/{app → support}/models/pencil.rb +0 -0
- /data/spec/{app → support}/models/pet.rb +0 -0
- /data/spec/{app → support}/models/pet_owner.rb +0 -0
- /data/spec/{app → support}/models/phone.rb +0 -0
- /data/spec/{app → support}/models/pizza.rb +0 -0
- /data/spec/{app → support}/models/player.rb +0 -0
- /data/spec/{app → support}/models/post.rb +0 -0
- /data/spec/{app → support}/models/post_genre.rb +0 -0
- /data/spec/{app → support}/models/powerup.rb +0 -0
- /data/spec/{app → support}/models/preference.rb +0 -0
- /data/spec/{app → support}/models/princess.rb +0 -0
- /data/spec/{app → support}/models/product.rb +0 -0
- /data/spec/{app → support}/models/pronunciation.rb +0 -0
- /data/spec/{app → support}/models/pub.rb +0 -0
- /data/spec/{app → support}/models/publication/encyclopedia.rb +0 -0
- /data/spec/{app → support}/models/publication/review.rb +0 -0
- /data/spec/{app → support}/models/purchase.rb +0 -0
- /data/spec/{app → support}/models/question.rb +0 -0
- /data/spec/{app → support}/models/quiz.rb +0 -0
- /data/spec/{app → support}/models/rating.rb +0 -0
- /data/spec/{app → support}/models/record.rb +0 -0
- /data/spec/{app → support}/models/registry.rb +0 -0
- /data/spec/{app → support}/models/role.rb +0 -0
- /data/spec/{app → support}/models/root_category.rb +0 -0
- /data/spec/{app → support}/models/sandwich.rb +0 -0
- /data/spec/{app → support}/models/scheduler.rb +0 -0
- /data/spec/{app → support}/models/seo.rb +0 -0
- /data/spec/{app → support}/models/series.rb +0 -0
- /data/spec/{app → support}/models/server.rb +0 -0
- /data/spec/{app → support}/models/service.rb +0 -0
- /data/spec/{app → support}/models/shelf.rb +0 -0
- /data/spec/{app → support}/models/shipment_address.rb +0 -0
- /data/spec/{app → support}/models/shipping_container.rb +0 -0
- /data/spec/{app → support}/models/shipping_pack.rb +0 -0
- /data/spec/{app → support}/models/shop.rb +0 -0
- /data/spec/{app → support}/models/short_agent.rb +0 -0
- /data/spec/{app → support}/models/short_quiz.rb +0 -0
- /data/spec/{app → support}/models/simple.rb +0 -0
- /data/spec/{app → support}/models/slave.rb +0 -0
- /data/spec/{app → support}/models/song.rb +0 -0
- /data/spec/{app → support}/models/sound.rb +0 -0
- /data/spec/{app → support}/models/square.rb +0 -0
- /data/spec/{app → support}/models/staff.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test1.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test2.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
- /data/spec/{app → support}/models/strategy.rb +0 -0
- /data/spec/{app → support}/models/sub_item.rb +0 -0
- /data/spec/{app → support}/models/subscription.rb +0 -0
- /data/spec/{app → support}/models/survey.rb +0 -0
- /data/spec/{app → support}/models/symptom.rb +0 -0
- /data/spec/{app → support}/models/tag.rb +0 -0
- /data/spec/{app → support}/models/target.rb +0 -0
- /data/spec/{app → support}/models/template.rb +0 -0
- /data/spec/{app → support}/models/thing.rb +0 -0
- /data/spec/{app → support}/models/title.rb +0 -0
- /data/spec/{app → support}/models/topping.rb +0 -0
- /data/spec/{app → support}/models/track.rb +0 -0
- /data/spec/{app → support}/models/translation.rb +0 -0
- /data/spec/{app → support}/models/tree.rb +0 -0
- /data/spec/{app → support}/models/updatable.rb +0 -0
- /data/spec/{app → support}/models/user.rb +0 -0
- /data/spec/{app → support}/models/user_account.rb +0 -0
- /data/spec/{app → support}/models/validation_callback.rb +0 -0
- /data/spec/{app → support}/models/version.rb +0 -0
- /data/spec/{app → support}/models/vertex.rb +0 -0
- /data/spec/{app → support}/models/vet_visit.rb +0 -0
- /data/spec/{app → support}/models/video.rb +0 -0
- /data/spec/{app → support}/models/video_game.rb +0 -0
- /data/spec/{app → support}/models/weapon.rb +0 -0
- /data/spec/{app → support}/models/wiki_page.rb +0 -0
- /data/spec/{app → support}/models/word.rb +0 -0
- /data/spec/{app → support}/models/word_origin.rb +0 -0
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Mrss
|
|
4
|
-
# Test event subscriber.
|
|
5
|
-
class EventSubscriber
|
|
6
|
-
|
|
7
|
-
# The mappings of event names to types.
|
|
8
|
-
MAPPINGS = {
|
|
9
|
-
'topology_opening_event' => Mongo::Monitoring::Event::TopologyOpening,
|
|
10
|
-
'topology_description_changed_event' => Mongo::Monitoring::Event::TopologyChanged,
|
|
11
|
-
'topology_closed_event' => Mongo::Monitoring::Event::TopologyClosed,
|
|
12
|
-
'server_opening_event' => Mongo::Monitoring::Event::ServerOpening,
|
|
13
|
-
'server_description_changed_event' => Mongo::Monitoring::Event::ServerDescriptionChanged,
|
|
14
|
-
'server_closed_event' => Mongo::Monitoring::Event::ServerClosed
|
|
15
|
-
}.freeze
|
|
16
|
-
|
|
17
|
-
attr_reader :all_events
|
|
18
|
-
|
|
19
|
-
attr_reader :started_events
|
|
20
|
-
|
|
21
|
-
attr_reader :succeeded_events
|
|
22
|
-
|
|
23
|
-
attr_reader :failed_events
|
|
24
|
-
|
|
25
|
-
attr_reader :published_events
|
|
26
|
-
|
|
27
|
-
# @param [ String ] name Optional name for the event subscriber.
|
|
28
|
-
def initialize(name: nil)
|
|
29
|
-
@mutex = Mutex.new
|
|
30
|
-
clear_events!
|
|
31
|
-
@name = name
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def to_s
|
|
35
|
-
%Q`#<EventSubscriber:#{@name ? "\"#{@name}\"" : '%x' % object_id} \
|
|
36
|
-
started=#{started_events.length} \
|
|
37
|
-
succeeded=#{succeeded_events.length} \
|
|
38
|
-
failed=#{failed_events.length} \
|
|
39
|
-
published=#{published_events.length}>`
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
alias :inspect :to_s
|
|
43
|
-
|
|
44
|
-
# Event retrieval
|
|
45
|
-
|
|
46
|
-
def select_started_events(cls)
|
|
47
|
-
started_events.select do |event|
|
|
48
|
-
event.is_a?(cls)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def select_succeeded_events(cls)
|
|
53
|
-
succeeded_events.select do |event|
|
|
54
|
-
event.is_a?(cls)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def select_completed_events(*classes)
|
|
59
|
-
(succeeded_events + failed_events).select do |event|
|
|
60
|
-
classes.any? { |c| c === event }
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def select_published_events(cls)
|
|
65
|
-
published_events.select do |event|
|
|
66
|
-
event.is_a?(cls)
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# Filters command started events for the specified command name.
|
|
71
|
-
def command_started_events(command_name)
|
|
72
|
-
started_events.select do |event|
|
|
73
|
-
event.command[command_name]
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def non_auth_command_started_events
|
|
78
|
-
started_events.reject do |event|
|
|
79
|
-
%w(authenticate getnonce saslSstart saslContinue).any? do |cmd|
|
|
80
|
-
event.command[cmd]
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
# Locates command stated events for the specified command name,
|
|
86
|
-
# asserts that there is exactly one such event, and returns it.
|
|
87
|
-
def single_command_started_event(command_name, include_auth: false)
|
|
88
|
-
events = if include_auth
|
|
89
|
-
started_events
|
|
90
|
-
else
|
|
91
|
-
non_auth_command_started_events
|
|
92
|
-
end
|
|
93
|
-
events.select! do |event|
|
|
94
|
-
event.command[command_name]
|
|
95
|
-
end
|
|
96
|
-
if events.length != 1
|
|
97
|
-
raise "Expected a single #{command_name} event but we have #{events.length}"
|
|
98
|
-
end
|
|
99
|
-
events.first
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
# Get the first succeeded event published for the name, and then delete it.
|
|
104
|
-
#
|
|
105
|
-
# @param [ String ] name The event name.
|
|
106
|
-
#
|
|
107
|
-
# @return [ Event ] The matching event.
|
|
108
|
-
def first_event(name)
|
|
109
|
-
cls = MAPPINGS[name]
|
|
110
|
-
if cls.nil?
|
|
111
|
-
raise ArgumentError, "Bogus event name #{name}"
|
|
112
|
-
end
|
|
113
|
-
matching = succeeded_events.find do |event|
|
|
114
|
-
cls === event
|
|
115
|
-
end
|
|
116
|
-
succeeded_events.delete(matching)
|
|
117
|
-
matching
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
# Event recording
|
|
121
|
-
|
|
122
|
-
# Cache the started event.
|
|
123
|
-
#
|
|
124
|
-
# @param [ Event ] event The event.
|
|
125
|
-
def started(event)
|
|
126
|
-
@mutex.synchronize do
|
|
127
|
-
started_events << event
|
|
128
|
-
all_events << event
|
|
129
|
-
end
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
# Cache the succeeded event.
|
|
133
|
-
#
|
|
134
|
-
# @param [ Event ] event The event.
|
|
135
|
-
def succeeded(event)
|
|
136
|
-
@mutex.synchronize do
|
|
137
|
-
succeeded_events << event
|
|
138
|
-
all_events << event
|
|
139
|
-
end
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
# Cache the failed event.
|
|
143
|
-
#
|
|
144
|
-
# @param [ Event ] event The event.
|
|
145
|
-
def failed(event)
|
|
146
|
-
@mutex.synchronize do
|
|
147
|
-
failed_events << event
|
|
148
|
-
all_events << event
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def published(event)
|
|
153
|
-
@mutex.synchronize do
|
|
154
|
-
published_events << event
|
|
155
|
-
all_events << event
|
|
156
|
-
end
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
# Clear all cached events.
|
|
160
|
-
def clear_events!
|
|
161
|
-
@all_events = []
|
|
162
|
-
@started_events = []
|
|
163
|
-
@succeeded_events = []
|
|
164
|
-
@failed_events = []
|
|
165
|
-
@published_events = []
|
|
166
|
-
self
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
# Only handles succeeded events correctly.
|
|
170
|
-
class PhasedEventSubscriber < EventSubscriber
|
|
171
|
-
def initialize
|
|
172
|
-
super
|
|
173
|
-
@phase_events = {}
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
def phase_finished(phase_index)
|
|
177
|
-
@phase_events[phase_index] = succeeded_events
|
|
178
|
-
@succeeded_events = []
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
def phase_events(phase_index)
|
|
182
|
-
@phase_events[phase_index]
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
def event_count
|
|
186
|
-
@phase_events.inject(0) do |sum, event|
|
|
187
|
-
sum + event.length
|
|
188
|
-
end
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
class VerboseEventSubscriber < EventSubscriber
|
|
193
|
-
%w(started succeeded failed published).each do |meth|
|
|
194
|
-
define_method(meth) do |event|
|
|
195
|
-
puts event.summary
|
|
196
|
-
super(event)
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
end
|
|
200
|
-
end
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
|
-
|
|
4
|
-
autoload :JSON, 'json'
|
|
5
|
-
require 'open-uri'
|
|
6
|
-
|
|
7
|
-
module Mrss
|
|
8
|
-
class ServerVersionRegistry
|
|
9
|
-
class Error < StandardError
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
class UnknownVersion < Error
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
class MissingDownloadUrl < Error
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
class BrokenDownloadUrl < Error
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def initialize(desired_version, arch)
|
|
22
|
-
@desired_version, @arch = desired_version, arch
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
attr_reader :desired_version, :arch
|
|
26
|
-
|
|
27
|
-
def download_url
|
|
28
|
-
@download_url ||= begin
|
|
29
|
-
version, version_ok = detect_version(current_catalog)
|
|
30
|
-
if version.nil?
|
|
31
|
-
version, full_version_ok = detect_version(full_catalog)
|
|
32
|
-
version_ok ||= full_version_ok
|
|
33
|
-
end
|
|
34
|
-
if version.nil?
|
|
35
|
-
if version_ok
|
|
36
|
-
raise MissingDownloadUrl, "No downloads for version #{desired_version}"
|
|
37
|
-
else
|
|
38
|
-
raise UnknownVersion, "No version #{desired_version}"
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
dl = version['downloads'].detect do |dl|
|
|
42
|
-
dl['archive']['url'].index("enterprise-#{arch}") &&
|
|
43
|
-
dl['arch'] == 'x86_64'
|
|
44
|
-
end
|
|
45
|
-
unless dl
|
|
46
|
-
raise MissingDownloadUrl, "No download for #{arch} for #{version['version']}"
|
|
47
|
-
end
|
|
48
|
-
url = dl['archive']['url']
|
|
49
|
-
end
|
|
50
|
-
rescue MissingDownloadUrl
|
|
51
|
-
if %w(2.6 3.0).include?(desired_version) && arch == 'ubuntu1604'
|
|
52
|
-
# 2.6 and 3.0 are only available for ubuntu1204 and ubuntu1404.
|
|
53
|
-
# Those ubuntus have ancient Pythons that don't work due to not
|
|
54
|
-
# implementing recent TLS protocols.
|
|
55
|
-
# Because of this we test on ubuntu1604 which has a newer Python.
|
|
56
|
-
# But we still need to retrieve ubuntu1404-targeting builds.
|
|
57
|
-
url = self.class.new('3.2', arch).download_url
|
|
58
|
-
unless url.include?('3.2.')
|
|
59
|
-
raise 'URL not in expected format'
|
|
60
|
-
end
|
|
61
|
-
url = case desired_version
|
|
62
|
-
when '2.6'
|
|
63
|
-
url.sub(/\b3\.2\.\d+/, '2.6.12')
|
|
64
|
-
when '3.0'
|
|
65
|
-
url.sub(/\b3\.2\.\d+/, '3.0.15')
|
|
66
|
-
else
|
|
67
|
-
raise NotImplementedError
|
|
68
|
-
end.sub('ubuntu1604', 'ubuntu1404')
|
|
69
|
-
else
|
|
70
|
-
raise
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
private
|
|
75
|
-
|
|
76
|
-
def uri_open(*args)
|
|
77
|
-
if RUBY_VERSION < '2.5'
|
|
78
|
-
open(*args)
|
|
79
|
-
else
|
|
80
|
-
URI.open(*args)
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def detect_version(catalog)
|
|
85
|
-
candidate_versions = catalog['versions'].select do |version|
|
|
86
|
-
version['version'].start_with?(desired_version) &&
|
|
87
|
-
!version['version'].include?('-')
|
|
88
|
-
end
|
|
89
|
-
version_ok = !candidate_versions.empty?
|
|
90
|
-
# Sometimes the download situation is borked and there is a release
|
|
91
|
-
# with no downloads... skip those.
|
|
92
|
-
version = candidate_versions.detect do |version|
|
|
93
|
-
!version['downloads'].empty?
|
|
94
|
-
end
|
|
95
|
-
# Allow RC releases if there isn't a GA release.
|
|
96
|
-
if version.nil?
|
|
97
|
-
candidate_versions = catalog['versions'].select do |version|
|
|
98
|
-
version['version'].start_with?(desired_version)
|
|
99
|
-
end
|
|
100
|
-
version_ok ||= !candidate_versions.empty?
|
|
101
|
-
version = candidate_versions.detect do |version|
|
|
102
|
-
!version['downloads'].empty?
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
[version, version_ok]
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def current_catalog
|
|
109
|
-
@current_catalog ||= begin
|
|
110
|
-
JSON.load(uri_open('http://downloads.mongodb.org/current.json').read)
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
def full_catalog
|
|
115
|
-
@full_catalog ||= begin
|
|
116
|
-
JSON.load(uri_open('http://downloads.mongodb.org/full.json').read)
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
end
|
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
# Python toolchain as of this writing is available on rhel62, debian92 and
|
|
2
|
-
# ubuntu1604.
|
|
3
|
-
#
|
|
4
|
-
# To run rhel62 in docker, host system must be configured to emulate syscalls:
|
|
5
|
-
# https://github.com/CentOS/sig-cloud-instance-images/issues/103
|
|
6
|
-
|
|
7
|
-
<%
|
|
8
|
-
|
|
9
|
-
python_toolchain_url = "https://s3.amazonaws.com//mciuploads/mongo-python-driver-toolchain/#{distro}/ba92de2700c04ee2d4f82c3ffdfc33105140cb04/mongo_python_driver_toolchain_#{distro.gsub('-', '_')}_ba92de2700c04ee2d4f82c3ffdfc33105140cb04_19_11_14_15_33_33.tar.gz"
|
|
10
|
-
server_version = '4.3.3'
|
|
11
|
-
server_url = "http://downloads.10gen.com/linux/mongodb-linux-x86_64-enterprise-#{distro}-#{server_version}.tgz"
|
|
12
|
-
server_archive_basename = File.basename(server_url)
|
|
13
|
-
server_extracted_dir = server_archive_basename.sub(/\.(tar\.gz|tgz)$/, '')
|
|
14
|
-
|
|
15
|
-
toolchain_upper='291ba4a4e8297f142796e70eee71b99f333e35e1'
|
|
16
|
-
|
|
17
|
-
ruby_toolchain_url = "http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/ruby-toolchain-#{distro}-#{toolchain_upper}.tar.xz"
|
|
18
|
-
#ruby_toolchain_url = "https://s3.amazonaws.com//mciuploads/mongo-ruby-toolchain/#{distro}/#{toolchain_upper}/mongo_ruby_driver_toolchain_#{distro.gsub('-', '_')}_patch_#{toolchain_upper}_#{toolchain_lower}.tar.gz"
|
|
19
|
-
|
|
20
|
-
%>
|
|
21
|
-
|
|
22
|
-
FROM <%= base_image %>
|
|
23
|
-
|
|
24
|
-
<% if debian? %>
|
|
25
|
-
|
|
26
|
-
ENV DEBIAN_FRONTEND=noninteractive
|
|
27
|
-
|
|
28
|
-
<% else %>
|
|
29
|
-
|
|
30
|
-
RUN echo assumeyes=1 |tee -a /etc/yum.conf
|
|
31
|
-
|
|
32
|
-
<% end %>
|
|
33
|
-
|
|
34
|
-
<% if ruby_head? %>
|
|
35
|
-
|
|
36
|
-
# To use current versions of mlaunch, Python 3.6+ is required.
|
|
37
|
-
# Most distros ship with older Pythons, therefore we need to install
|
|
38
|
-
# a newer Python from somewhere. This section installs the Python
|
|
39
|
-
# toolhcain which comes with recent Pythons.
|
|
40
|
-
# Alternatively, Ruby toolchain compiles its own copy of Python 3 but
|
|
41
|
-
# this is currently incomplete in that on older distros with old OpenSSL,
|
|
42
|
-
# the built Python has no ssl module and hence practically is unusable.
|
|
43
|
-
# Currently Ruby driver uses mtools-legacy which supports Python 2,
|
|
44
|
-
# avoiding this entire issue for the time being.
|
|
45
|
-
|
|
46
|
-
#RUN curl --retry 3 -fL <%= python_toolchain_url %> -o python-toolchain.tar.gz
|
|
47
|
-
#RUN tar -xC /opt -zf python-toolchain.tar.gz
|
|
48
|
-
|
|
49
|
-
<% end %>
|
|
50
|
-
|
|
51
|
-
<% if debian? %>
|
|
52
|
-
|
|
53
|
-
# zsh is not required for any scripts but it is a better interactive shell
|
|
54
|
-
# than bash.
|
|
55
|
-
# Ruby runtime dependencies: libyaml-0-2
|
|
56
|
-
# Compiling ruby libraries: gcc make
|
|
57
|
-
# Compiling pyhton packages: python2.7-dev
|
|
58
|
-
# JRuby: openjdk-8-jdk-headless
|
|
59
|
-
# Server dependencies: libsnmp30 libcurl3/libcurl4
|
|
60
|
-
# Determining OS we are running on: lsb-release
|
|
61
|
-
# Load balancer testing: haproxy
|
|
62
|
-
# Kerberos testing: krb5-user
|
|
63
|
-
# Local Kerberos server: krb5-kdc krb5-admin-server
|
|
64
|
-
# Installing mlaunch from git: git
|
|
65
|
-
# ruby-head archive: bzip2
|
|
66
|
-
# nio4r on JRuby: libgmp-dev
|
|
67
|
-
# Snappy compression: libsnappy-dev
|
|
68
|
-
# nokogiri: zlib1g-dev
|
|
69
|
-
# Mongoid testing: tzdata shared-mime-info
|
|
70
|
-
# Mongoid application testing: nodejs (8.x or newer)
|
|
71
|
-
# Test suite: procps for ps (to kill JRubies)
|
|
72
|
-
#
|
|
73
|
-
# We currently use Python 2-compatible version of mtools, which
|
|
74
|
-
# is installable via pip (which uses Python 2). All of the MongoDB
|
|
75
|
-
# distros have pip installed (but none as of this writing have pip3)
|
|
76
|
-
# therefore install python-pip in all configurations here.
|
|
77
|
-
|
|
78
|
-
<% packages = %w(
|
|
79
|
-
procps lsb-release bzip2 curl zsh
|
|
80
|
-
git make gcc libyaml-0-2 libgmp-dev zlib1g-dev libsnappy-dev
|
|
81
|
-
krb5-user krb5-kdc krb5-admin-server libsasl2-dev libsasl2-modules-gssapi-mit
|
|
82
|
-
haproxy
|
|
83
|
-
python3-pip
|
|
84
|
-
tzdata shared-mime-info
|
|
85
|
-
) %>
|
|
86
|
-
|
|
87
|
-
<% if distro =~ /ubuntu1404/ %>
|
|
88
|
-
# For building python & setuptools
|
|
89
|
-
<% packages += %w(libssl-dev unzip) %>
|
|
90
|
-
<% end %>
|
|
91
|
-
|
|
92
|
-
<% if distro !~ /ubuntu2004/ %>
|
|
93
|
-
<% packages += %w(python2.7-dev) %>
|
|
94
|
-
<% end %>
|
|
95
|
-
|
|
96
|
-
<% if distro =~ /ubuntu2004/ %>
|
|
97
|
-
<% packages << 'libsnmp35' %>
|
|
98
|
-
<% else %>
|
|
99
|
-
<% packages << 'libsnmp30' %>
|
|
100
|
-
<% end %>
|
|
101
|
-
|
|
102
|
-
<% if distro !~ /ubuntu2004/ %>
|
|
103
|
-
<% packages << 'python-pip' %>
|
|
104
|
-
<% end %>
|
|
105
|
-
|
|
106
|
-
<% if distro =~ /debian10/ %>
|
|
107
|
-
<% packages << 'openjdk-11-jdk-headless' %>
|
|
108
|
-
<% elsif distro =~ /ubuntu1404/ %>
|
|
109
|
-
# Ubuntu 14.04 only has openjdk 7, this is too old to be useful
|
|
110
|
-
<% else %>
|
|
111
|
-
<% packages << 'openjdk-8-jdk-headless' %>
|
|
112
|
-
<% end %>
|
|
113
|
-
|
|
114
|
-
# ubuntu1404, ubuntu1604: libcurl3
|
|
115
|
-
# ubuntu1804, ubuntu2004, debian10: libcurl4
|
|
116
|
-
<% if distro =~ /ubuntu1804|ubuntu2004|debian10/ %>
|
|
117
|
-
<% packages << 'libcurl4' %>
|
|
118
|
-
<% else %>
|
|
119
|
-
<% packages << 'libcurl3' %>
|
|
120
|
-
<% end %>
|
|
121
|
-
|
|
122
|
-
<% if distro =~ /ubuntu1804/ %>
|
|
123
|
-
<% packages << 'nodejs' %>
|
|
124
|
-
<% end %>
|
|
125
|
-
|
|
126
|
-
<% if distro =~ /ubuntu2004/ %>
|
|
127
|
-
<% packages += %w(ruby ruby2.7 bundler python2 python2-dev) %>
|
|
128
|
-
<% end %>
|
|
129
|
-
|
|
130
|
-
RUN apt-get update && apt-get install -y <%= packages.join(' ') %>
|
|
131
|
-
<% else %>
|
|
132
|
-
|
|
133
|
-
<% if distro =~ /rhel6/ %>
|
|
134
|
-
|
|
135
|
-
# CentOS 6 is dead - to use it retrieve the packages from vault:
|
|
136
|
-
# https://stackoverflow.com/questions/53562691/error-cannot-retrieve-repository-metadata-repomd-xml-for-repository-base-pl
|
|
137
|
-
|
|
138
|
-
<%
|
|
139
|
-
|
|
140
|
-
cfg = <<-CFG
|
|
141
|
-
[base]
|
|
142
|
-
name=CentOS-$releasever - Base
|
|
143
|
-
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
|
|
144
|
-
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
|
|
145
|
-
baseurl=http://vault.centos.org/6.10/os/x86_64/
|
|
146
|
-
gpgcheck=1
|
|
147
|
-
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
|
|
148
|
-
CFG
|
|
149
|
-
|
|
150
|
-
%>
|
|
151
|
-
|
|
152
|
-
RUN printf "<%= cfg.gsub("\n", "\\n") %>" >/etc/yum.repos.d/CentOS-Base.repo
|
|
153
|
-
|
|
154
|
-
<% end %>
|
|
155
|
-
|
|
156
|
-
# Enterprise server: net-snmp
|
|
157
|
-
# lsb_release: redhat-lsb-core
|
|
158
|
-
# our runner scripts: which
|
|
159
|
-
# Ruby dependency: libyaml
|
|
160
|
-
# compiling python packages: gcc python-devel
|
|
161
|
-
# Kerberos tests: krb5-workstation + cyrus-sasl-devel to build the
|
|
162
|
-
# mongo_kerberos gem + cyrus-sasl-gssapi for authentication to work
|
|
163
|
-
# Local Kerberos server: krb5-server
|
|
164
|
-
# JRuby: java-1.8.0-openjdk
|
|
165
|
-
#
|
|
166
|
-
# Note: lacking cyrus-sasl-gssapi produces a cryptic message
|
|
167
|
-
# "SASL(-4): no mechanism available: No worthy mechs found"
|
|
168
|
-
# https://github.com/farorm/python-ad/issues/10
|
|
169
|
-
|
|
170
|
-
RUN yum install -y redhat-lsb-core which git gcc libyaml krb5-server \
|
|
171
|
-
krb5-workstation cyrus-sasl-devel cyrus-sasl-gssapi java-1.8.0-openjdk \
|
|
172
|
-
net-snmp python3
|
|
173
|
-
|
|
174
|
-
<% if distro =~ /rhel6/ %>
|
|
175
|
-
|
|
176
|
-
# RHEL 6 ships with Python 2.6.
|
|
177
|
-
|
|
178
|
-
RUN yum install -y centos-release-scl && \
|
|
179
|
-
yum install -y python27-python python27-python-devel
|
|
180
|
-
ENV PATH=/opt/rh/python27/root/usr/bin:$PATH \
|
|
181
|
-
LD_LIBRARY_PATH=/opt/rh/python27/root/usr/lib64
|
|
182
|
-
|
|
183
|
-
<% else %>
|
|
184
|
-
|
|
185
|
-
RUN yum install -y python-devel
|
|
186
|
-
|
|
187
|
-
<% end %>
|
|
188
|
-
|
|
189
|
-
<% end %>
|
|
190
|
-
|
|
191
|
-
<% if preload? %>
|
|
192
|
-
|
|
193
|
-
<% if distro =~ /ubuntu1404/ %>
|
|
194
|
-
|
|
195
|
-
# I couldn't find a prebuilt package of anything more recent than 2.7.6
|
|
196
|
-
# for 14.04.
|
|
197
|
-
RUN curl --retry 3 -fL https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tar.xz | \
|
|
198
|
-
tar xfJ - && \
|
|
199
|
-
cd Python-2.7.16 && \
|
|
200
|
-
./configure && \
|
|
201
|
-
nice make -j4 && \
|
|
202
|
-
make install && \
|
|
203
|
-
cd .. && rm -rf Python-2.7.16
|
|
204
|
-
|
|
205
|
-
ENV PATH=/usr/local/bin:$PATH
|
|
206
|
-
|
|
207
|
-
RUN curl --retry 3 -fL -o setuptools-44.1.1.zip https://files.pythonhosted.org/packages/b2/40/4e00501c204b457f10fe410da0c97537214b2265247bc9a5bc6edd55b9e4/setuptools-44.1.1.zip && \
|
|
208
|
-
unzip setuptools-44.1.1.zip && \
|
|
209
|
-
cd setuptools-44.1.1 && \
|
|
210
|
-
python setup.py install && \
|
|
211
|
-
cd .. && rm -rf setuptools-44.1.1
|
|
212
|
-
|
|
213
|
-
<% end%>
|
|
214
|
-
|
|
215
|
-
<% if true || distro =~ /rhel|ubuntu1604/ %>
|
|
216
|
-
|
|
217
|
-
# Ubuntu 12.04 ships pip 1.0 which is ancient and does not work.
|
|
218
|
-
#
|
|
219
|
-
# Ubuntu 16.04 apparently also ships a pip that does not work:
|
|
220
|
-
# https://stackoverflow.com/questions/37495375/python-pip-install-throws-typeerror-unsupported-operand-types-for-retry
|
|
221
|
-
# Potentially this only affects environments with less than ideal
|
|
222
|
-
# connectivity (or, perhaps, when python package registry is experiencing
|
|
223
|
-
# availability issues) when pip must retry to install packages.
|
|
224
|
-
#
|
|
225
|
-
# rhel apparently does not package pip at all in core repoitories,
|
|
226
|
-
# therefore install it the manual way.
|
|
227
|
-
#
|
|
228
|
-
# https://pip.pypa.io/en/stable/installing/
|
|
229
|
-
RUN curl --retry 3 -fL https://bootstrap.pypa.io/pip/2.7/get-pip.py | python2
|
|
230
|
-
|
|
231
|
-
<% end %>
|
|
232
|
-
|
|
233
|
-
# Current virtualenv fails with
|
|
234
|
-
# https://github.com/pypa/virtualenv/issues/1630
|
|
235
|
-
<% if distro =~ /ubuntu2004/ %>
|
|
236
|
-
RUN python3 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]'
|
|
237
|
-
<% else %>
|
|
238
|
-
RUN python2 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]'
|
|
239
|
-
<% end %>
|
|
240
|
-
|
|
241
|
-
RUN pip --version && \
|
|
242
|
-
pip install mtools-legacy[mlaunch]
|
|
243
|
-
|
|
244
|
-
<% if @env.fetch('MONGODB_VERSION') >= '4.4' %>
|
|
245
|
-
# ubuntu1604 installs MarkupSafe 0.0.0 here instead of 2.0.0+
|
|
246
|
-
# as specified by dependencies, causing OCSP mock to not work.
|
|
247
|
-
RUN python3 -mpip install asn1crypto oscrypto flask --upgrade
|
|
248
|
-
<% end %>
|
|
249
|
-
|
|
250
|
-
<% unless ruby_head? || system_ruby? %>
|
|
251
|
-
|
|
252
|
-
RUN curl --retry 3 -fL <%= ruby_toolchain_url %> |tar -xC /opt -Jf -
|
|
253
|
-
ENV PATH=/opt/rubies/<%= ruby %>/bin:$PATH \
|
|
254
|
-
USE_OPT_TOOLCHAIN=1
|
|
255
|
-
#ENV PATH=/opt/rubies/python/3/bin:$PATH
|
|
256
|
-
|
|
257
|
-
<% end %>
|
|
258
|
-
|
|
259
|
-
RUN curl --retry 3 -fL <%= server_download_url %> |tar xzf - && \
|
|
260
|
-
mv mongo*/ /opt/mongodb
|
|
261
|
-
ENV USE_OPT_MONGODB=1 USE_SYSTEM_PYTHON_PACKAGES=1
|
|
262
|
-
|
|
263
|
-
<% end %>
|
|
264
|
-
|
|
265
|
-
<% if distro =~ /debian|ubuntu/ %>
|
|
266
|
-
# mkdir was moved from /usr/bin to /bin and MongoDB's distros
|
|
267
|
-
# apparently keep using the old location.
|
|
268
|
-
# This definitely affects debian10.
|
|
269
|
-
# https://stackoverflow.com/questions/64653051/make-usr-bin-mkdir-command-not-found-during-gem-install-nokogiri-in-ubuntu
|
|
270
|
-
RUN test -f /usr/bin/mkdir || ln -s /bin/mkdir /usr/bin/mkdir
|
|
271
|
-
<% end %>
|
|
272
|
-
|
|
273
|
-
WORKDIR /app
|
|
274
|
-
|
|
275
|
-
<% if preload? && !ruby_head? %>
|
|
276
|
-
|
|
277
|
-
COPY Gemfile .
|
|
278
|
-
COPY gemfiles gemfiles
|
|
279
|
-
COPY *.gemspec .
|
|
280
|
-
COPY lib/<%= project_lib_subdir %>/version.rb lib/<%= project_lib_subdir %>/version.rb
|
|
281
|
-
RUN bundle install
|
|
282
|
-
COPY .evergreen/patch-debuggers .evergreen/patch-debuggers
|
|
283
|
-
<% if system_ruby? %>
|
|
284
|
-
# Running under docker with root access
|
|
285
|
-
RUN .evergreen/patch-debuggers /var/lib/gems
|
|
286
|
-
<% else %>
|
|
287
|
-
RUN .evergreen/patch-debuggers /opt/rubies
|
|
288
|
-
<% end %>
|
|
289
|
-
|
|
290
|
-
<% end %>
|
|
291
|
-
|
|
292
|
-
<% if fle? %>
|
|
293
|
-
RUN curl --retry 3 -fLo libmongocrypt-all.tar.gz "https://s3.amazonaws.com/mciuploads/libmongocrypt/all/master/latest/libmongocrypt-all.tar.gz"
|
|
294
|
-
RUN tar xf libmongocrypt-all.tar.gz
|
|
295
|
-
|
|
296
|
-
<%= "ENV LIBMONGOCRYPT_PATH #{libmongocrypt_path}" %>
|
|
297
|
-
<% end %>
|
|
298
|
-
|
|
299
|
-
ENV MONGO_ORCHESTRATION_HOME=/tmpfs \
|
|
300
|
-
PROJECT_DIRECTORY=/app \
|
|
301
|
-
<%= @env.map { |k, v| %Q`#{k}="#{v.gsub('$', "\\$").gsub('"', "\\\"")}"` }.join(" \\\n ") %>
|
|
302
|
-
|
|
303
|
-
<% if interactive? %>
|
|
304
|
-
ENV INTERACTIVE=1
|
|
305
|
-
<% end %>
|
|
306
|
-
|
|
307
|
-
COPY . .
|
|
308
|
-
|
|
309
|
-
<% if expose? %>
|
|
310
|
-
|
|
311
|
-
<% ports = [] %>
|
|
312
|
-
|
|
313
|
-
<% 0.upto(num_exposed_ports-1) do |i| %>
|
|
314
|
-
<% ports << 27017 + i %>
|
|
315
|
-
<% end %>
|
|
316
|
-
|
|
317
|
-
<% if @env['OCSP_ALGORITHM'] %>
|
|
318
|
-
<% ports << 8100 %>
|
|
319
|
-
<% end %>
|
|
320
|
-
|
|
321
|
-
EXPOSE <%= ports.map(&:to_s).join(' ') %>
|
|
322
|
-
|
|
323
|
-
<% end %>
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Modeled after
|
|
2
|
-
# https://github.com/mongodb-labs/drivers-evergreen-tools/blob/master/.evergreen/run-load-balancer.sh
|
|
3
|
-
|
|
4
|
-
defaults
|
|
5
|
-
mode tcp
|
|
6
|
-
timeout connect 7s
|
|
7
|
-
timeout client 55s
|
|
8
|
-
timeout server 55s
|
|
9
|
-
|
|
10
|
-
frontend mongos_frontend
|
|
11
|
-
bind *:27017
|
|
12
|
-
use_backend mongos_backend
|
|
13
|
-
|
|
14
|
-
backend mongos_backend
|
|
15
|
-
mode tcp
|
|
16
|
-
server mongos_one 127.0.0.1:27117 check
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# Modeled after
|
|
2
|
-
# https://github.com/mongodb-labs/drivers-evergreen-tools/blob/master/.evergreen/run-load-balancer.sh
|
|
3
|
-
|
|
4
|
-
defaults
|
|
5
|
-
mode tcp
|
|
6
|
-
timeout connect 7s
|
|
7
|
-
timeout client 55s
|
|
8
|
-
timeout server 55s
|
|
9
|
-
|
|
10
|
-
frontend mongos_frontend
|
|
11
|
-
bind *:27017
|
|
12
|
-
use_backend mongos_backend
|
|
13
|
-
|
|
14
|
-
backend mongos_backend
|
|
15
|
-
mode tcp
|
|
16
|
-
server mongos_one 127.0.0.1:27117 check
|
|
17
|
-
server mongos_two 127.0.0.1:27118 check
|