mongo 2.18.1 → 2.18.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +1 -1
  4. data/lib/mongo/bulk_write.rb +6 -4
  5. data/lib/mongo/client.rb +1 -1
  6. data/lib/mongo/collection/view/iterable.rb +15 -0
  7. data/lib/mongo/collection/view/writable.rb +0 -2
  8. data/lib/mongo/collection/view.rb +1 -0
  9. data/lib/mongo/collection.rb +150 -45
  10. data/lib/mongo/crypt/auto_encrypter.rb +1 -0
  11. data/lib/mongo/crypt/explicit_encrypter.rb +1 -0
  12. data/lib/mongo/crypt/kms.rb +0 -1
  13. data/lib/mongo/crypt.rb +11 -0
  14. data/lib/mongo/error/invalid_read_option.rb +1 -1
  15. data/lib/mongo/grid/file/chunk.rb +2 -1
  16. data/lib/mongo/grid/file/info.rb +2 -1
  17. data/lib/mongo/operation/aggregate.rb +1 -2
  18. data/lib/mongo/operation/collections_info.rb +3 -15
  19. data/lib/mongo/operation/command.rb +1 -2
  20. data/lib/mongo/operation/count.rb +1 -2
  21. data/lib/mongo/operation/create.rb +1 -2
  22. data/lib/mongo/operation/create_index.rb +1 -2
  23. data/lib/mongo/operation/create_user.rb +1 -2
  24. data/lib/mongo/operation/delete.rb +0 -1
  25. data/lib/mongo/operation/distinct.rb +1 -2
  26. data/lib/mongo/operation/drop.rb +1 -2
  27. data/lib/mongo/operation/drop_database.rb +1 -2
  28. data/lib/mongo/operation/drop_index.rb +1 -2
  29. data/lib/mongo/operation/explain.rb +1 -3
  30. data/lib/mongo/operation/find/builder.rb +0 -1
  31. data/lib/mongo/operation/find.rb +1 -3
  32. data/lib/mongo/operation/get_more.rb +1 -3
  33. data/lib/mongo/operation/indexes.rb +1 -17
  34. data/lib/mongo/operation/insert.rb +0 -1
  35. data/lib/mongo/operation/kill_cursors.rb +1 -2
  36. data/lib/mongo/operation/list_collections.rb +1 -2
  37. data/lib/mongo/operation/map_reduce.rb +1 -2
  38. data/lib/mongo/operation/parallel_scan.rb +1 -2
  39. data/lib/mongo/operation/remove_user.rb +1 -2
  40. data/lib/mongo/operation/shared/{polymorphic_operation.rb → op_msg_executable.rb} +11 -6
  41. data/lib/mongo/operation/update.rb +0 -1
  42. data/lib/mongo/operation/update_user.rb +1 -2
  43. data/lib/mongo/operation/users_info.rb +1 -2
  44. data/lib/mongo/operation/write_command.rb +1 -2
  45. data/lib/mongo/operation.rb +1 -3
  46. data/lib/mongo/protocol/bit_vector.rb +3 -1
  47. data/lib/mongo/protocol/caching_hash.rb +3 -20
  48. data/lib/mongo/protocol/message.rb +4 -8
  49. data/lib/mongo/protocol/msg.rb +1 -0
  50. data/lib/mongo/protocol/serializers.rb +24 -17
  51. data/lib/mongo/protocol.rb +0 -3
  52. data/lib/mongo/query_cache.rb +20 -20
  53. data/lib/mongo/server/app_metadata/environment.rb +255 -0
  54. data/lib/mongo/server/app_metadata/truncator.rb +142 -0
  55. data/lib/mongo/server/app_metadata.rb +29 -42
  56. data/lib/mongo/session.rb +1 -1
  57. data/lib/mongo/version.rb +1 -1
  58. data/spec/integration/command_spec.rb +1 -23
  59. data/spec/integration/connection/faas_env_spec.rb +63 -0
  60. data/spec/integration/find_options_spec.rb +227 -0
  61. data/spec/integration/ocsp_verifier_spec.rb +1 -1
  62. data/spec/lite_spec_helper.rb +9 -0
  63. data/spec/mongo/address_spec.rb +1 -1
  64. data/spec/mongo/client_construction_spec.rb +7 -7
  65. data/spec/mongo/client_spec.rb +1 -9
  66. data/spec/mongo/cluster_spec.rb +2 -2
  67. data/spec/mongo/collection_crud_spec.rb +56 -0
  68. data/spec/mongo/collection_spec.rb +11 -1
  69. data/spec/mongo/crypt/kms_spec.rb +12 -9
  70. data/spec/mongo/crypt_spec.rb +21 -0
  71. data/spec/mongo/index/view_spec.rb +1 -0
  72. data/spec/mongo/protocol/caching_hash_spec.rb +0 -45
  73. data/spec/mongo/protocol/msg_spec.rb +2 -4
  74. data/spec/mongo/server/app_metadata/environment_spec.rb +193 -0
  75. data/spec/mongo/server/app_metadata/truncator_spec.rb +158 -0
  76. data/spec/mongo/server/app_metadata_spec.rb +33 -47
  77. data/spec/mongo/socket/ssl_spec.rb +2 -8
  78. data/spec/runners/crud/requirement.rb +2 -2
  79. data/spec/shared/lib/mrss/docker_runner.rb +4 -0
  80. data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
  81. data/spec/shared/lib/mrss/server_version_registry.rb +16 -23
  82. data/spec/shared/share/Dockerfile.erb +24 -19
  83. data/spec/shared/shlib/server.sh +31 -7
  84. data/spec/shared/shlib/set_env.sh +4 -4
  85. data/spec/solo/clean_exit_spec.rb +3 -10
  86. data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +15 -6
  87. data/spec/spec_tests/data/command_monitoring_unified/redacted-commands.yml +8 -0
  88. data/spec/support/aws_utils.rb +3 -3
  89. data/spec/support/certificates/atlas-ocsp-ca.crt +67 -67
  90. data/spec/support/certificates/atlas-ocsp.crt +103 -103
  91. data/spec/support/shared/app_metadata.rb +14 -2
  92. data.tar.gz.sig +0 -0
  93. metadata +1203 -1239
  94. metadata.gz.sig +0 -0
  95. data/lib/mongo/operation/aggregate/command.rb +0 -55
  96. data/lib/mongo/operation/collections_info/command.rb +0 -48
  97. data/lib/mongo/operation/command/command.rb +0 -41
  98. data/lib/mongo/operation/count/command.rb +0 -47
  99. data/lib/mongo/operation/create/command.rb +0 -47
  100. data/lib/mongo/operation/create_index/command.rb +0 -61
  101. data/lib/mongo/operation/create_user/command.rb +0 -46
  102. data/lib/mongo/operation/delete/command.rb +0 -52
  103. data/lib/mongo/operation/distinct/command.rb +0 -47
  104. data/lib/mongo/operation/drop/command.rb +0 -41
  105. data/lib/mongo/operation/drop_database/command.rb +0 -41
  106. data/lib/mongo/operation/drop_index/command.rb +0 -45
  107. data/lib/mongo/operation/explain/command.rb +0 -58
  108. data/lib/mongo/operation/explain/legacy.rb +0 -52
  109. data/lib/mongo/operation/find/builder/legacy.rb +0 -123
  110. data/lib/mongo/operation/find/command.rb +0 -51
  111. data/lib/mongo/operation/find/legacy/result.rb +0 -46
  112. data/lib/mongo/operation/find/legacy.rb +0 -52
  113. data/lib/mongo/operation/get_more/command.rb +0 -43
  114. data/lib/mongo/operation/get_more/legacy.rb +0 -39
  115. data/lib/mongo/operation/indexes/command.rb +0 -42
  116. data/lib/mongo/operation/indexes/legacy.rb +0 -48
  117. data/lib/mongo/operation/insert/command.rb +0 -55
  118. data/lib/mongo/operation/kill_cursors/command.rb +0 -48
  119. data/lib/mongo/operation/list_collections/command.rb +0 -46
  120. data/lib/mongo/operation/map_reduce/command.rb +0 -51
  121. data/lib/mongo/operation/parallel_scan/command.rb +0 -57
  122. data/lib/mongo/operation/remove_user/command.rb +0 -46
  123. data/lib/mongo/operation/shared/op_msg_or_command.rb +0 -41
  124. data/lib/mongo/operation/shared/op_msg_or_find_command.rb +0 -44
  125. data/lib/mongo/operation/update/command.rb +0 -53
  126. data/lib/mongo/operation/update_user/command.rb +0 -45
  127. data/lib/mongo/operation/users_info/command.rb +0 -46
  128. data/lib/mongo/operation/write_command/command.rb +0 -51
  129. data/lib/mongo/protocol/delete.rb +0 -172
  130. data/lib/mongo/protocol/insert.rb +0 -181
  131. data/lib/mongo/protocol/update.rb +0 -214
  132. data/spec/mongo/operation/delete/command_spec.rb +0 -115
  133. data/spec/mongo/operation/find/legacy_spec.rb +0 -131
  134. data/spec/mongo/operation/get_more_spec.rb +0 -63
  135. data/spec/mongo/operation/insert/command_spec.rb +0 -118
  136. data/spec/mongo/operation/update/command_spec.rb +0 -122
  137. data/spec/mongo/protocol/delete_spec.rb +0 -185
  138. data/spec/mongo/protocol/insert_spec.rb +0 -179
  139. data/spec/mongo/protocol/update_spec.rb +0 -204
@@ -1,204 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: utf-8
3
-
4
- require 'lite_spec_helper'
5
- require 'support/shared/protocol'
6
-
7
- describe Mongo::Protocol::Update do
8
-
9
- let(:opcode) { 2001 }
10
- let(:db) { SpecConfig.instance.test_db }
11
- let(:collection_name) { 'protocol-test' }
12
- let(:ns) { "#{db}.#{collection_name}" }
13
- let(:selector) { { :name => 'Tyler' } }
14
- let(:update_doc) { { :name => 'Bob' } }
15
- let(:options) { Hash.new }
16
-
17
- let(:message) do
18
- described_class.new(db, collection_name, selector, update_doc, options)
19
- end
20
-
21
- describe '#initialize' do
22
-
23
- it 'sets the namespace' do
24
- expect(message.namespace).to eq(ns)
25
- end
26
-
27
- it 'sets the selector' do
28
- expect(message.selector).to eq(selector)
29
- end
30
-
31
- it 'sets the update document' do
32
- expect(message.update).to eq(update_doc)
33
- end
34
- end
35
-
36
- describe '#==' do
37
-
38
- context 'when the other is an update' do
39
-
40
- context 'when the fields are equal' do
41
- let(:other) do
42
- described_class.new(db, collection_name, selector, update_doc, options)
43
- end
44
-
45
- it 'returns true' do
46
- expect(message).to eq(other)
47
- end
48
- end
49
-
50
- context 'when the database is not equal' do
51
- let(:other) do
52
- described_class.new('tyler', collection_name, selector, update_doc, options)
53
- end
54
-
55
- it 'returns false' do
56
- expect(message).not_to eq(other)
57
- end
58
- end
59
-
60
- context 'when the collection is not equal' do
61
- let(:other) do
62
- described_class.new(db, 'tyler', selector, update_doc, options)
63
- end
64
-
65
- it 'returns false' do
66
- expect(message).not_to eq(other)
67
- end
68
- end
69
-
70
- context 'when the selector is not equal' do
71
- let(:other) do
72
- described_class.new(db, collection_name, { :a => 1 }, update_doc, options)
73
- end
74
-
75
- it 'returns false' do
76
- expect(message).not_to eq(other)
77
- end
78
- end
79
-
80
- context 'when the update document is not equal' do
81
- let(:other) do
82
- described_class.new(db, collection_name, selector, { :a => 1 }, options)
83
- end
84
-
85
- it 'returns false' do
86
- expect(message).not_to eq(other)
87
- end
88
- end
89
-
90
- context 'when the options are not equal' do
91
- let(:other) do
92
- described_class.new(db, collection_name, selector, update_doc,
93
- :flags => :upsert)
94
- end
95
-
96
- it 'returns false' do
97
- expect(message).not_to eq(other)
98
- end
99
- end
100
- end
101
-
102
- context 'when the other is not a query' do
103
- let(:other) do
104
- expect(message).not_to eq('test')
105
- end
106
- end
107
- end
108
-
109
- describe '#hash' do
110
- let(:values) do
111
- message.send(:fields).map do |field|
112
- message.instance_variable_get(field[:name])
113
- end
114
- end
115
-
116
- it 'returns a hash of the field values' do
117
- expect(message.hash).to eq(values.hash)
118
- end
119
- end
120
-
121
- describe '#replyable?' do
122
-
123
- it 'returns false' do
124
- expect(message).to_not be_replyable
125
- end
126
- end
127
-
128
- describe '#serialize' do
129
- let(:bytes) { message.serialize }
130
-
131
- include_examples 'message with a header'
132
-
133
- describe 'zero' do
134
- let(:field) { bytes.to_s[16..19] }
135
-
136
- it 'serializes a zero' do
137
- expect(field).to be_int32(0)
138
- end
139
- end
140
-
141
- describe 'namespace' do
142
- let(:field) { bytes.to_s[20..36] }
143
- it 'serializes the namespace' do
144
- expect(field).to be_cstring(ns)
145
- end
146
- end
147
-
148
- describe 'flags' do
149
- let(:field) { bytes.to_s[37..40] }
150
-
151
- context 'when no flags are provided' do
152
- it 'does not set any bits' do
153
- expect(field).to be_int32(0)
154
- end
155
- end
156
-
157
- context 'when flags are provided' do
158
- let(:options) { { :flags => flags } }
159
-
160
- context 'upsert flag' do
161
- let(:flags) { [:upsert] }
162
- it 'sets the first bit' do
163
- expect(field).to be_int32(1)
164
- end
165
- end
166
-
167
- context 'multi update' do
168
- let(:flags) { [:multi_update] }
169
- it 'sets the second bit' do
170
- expect(field).to be_int32(2)
171
- end
172
- end
173
- end
174
- end
175
-
176
- describe 'selector' do
177
- let(:field) { bytes.to_s[41..61] }
178
- it 'serializes the selector' do
179
- expect(field).to be_bson(selector)
180
- end
181
- end
182
-
183
- describe 'update' do
184
- let(:field) { bytes.to_s[62..80] }
185
- it 'serializes the update' do
186
- expect(field).to be_bson(update_doc)
187
- end
188
- end
189
- end
190
-
191
- describe '#registry' do
192
-
193
- context 'when the class is loaded' do
194
-
195
- it 'registers the op code in the Protocol Registry' do
196
- expect(Mongo::Protocol::Registry.get(described_class::OP_CODE)).to be(described_class)
197
- end
198
-
199
- it 'creates an #op_code instance method' do
200
- expect(message.op_code).to eq(described_class::OP_CODE)
201
- end
202
- end
203
- end
204
- end