mongo 2.2.7 → 2.3.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.tar.gz.sig +0 -0
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/lib/mongo.rb +1 -1
- data/lib/mongo/address.rb +1 -1
- data/lib/mongo/address/ipv4.rb +1 -1
- data/lib/mongo/address/ipv6.rb +1 -1
- data/lib/mongo/address/unix.rb +1 -1
- data/lib/mongo/auth.rb +1 -1
- data/lib/mongo/auth/cr.rb +1 -1
- data/lib/mongo/auth/ldap.rb +1 -1
- data/lib/mongo/auth/roles.rb +1 -1
- data/lib/mongo/auth/user.rb +1 -1
- data/lib/mongo/auth/user/view.rb +5 -5
- data/lib/mongo/auth/x509.rb +1 -1
- data/lib/mongo/bson.rb +1 -1
- data/lib/mongo/bulk_write.rb +4 -4
- data/lib/mongo/bulk_write/combineable.rb +1 -1
- data/lib/mongo/bulk_write/ordered_combiner.rb +1 -1
- data/lib/mongo/bulk_write/result.rb +1 -1
- data/lib/mongo/bulk_write/result_combiner.rb +1 -1
- data/lib/mongo/bulk_write/transformable.rb +1 -1
- data/lib/mongo/bulk_write/unordered_combiner.rb +1 -1
- data/lib/mongo/bulk_write/validatable.rb +1 -1
- data/lib/mongo/client.rb +2 -2
- data/lib/mongo/cluster.rb +15 -3
- data/lib/mongo/cluster/cursor_reaper.rb +174 -0
- data/lib/mongo/cluster/topology.rb +1 -1
- data/lib/mongo/cluster/topology/replica_set.rb +1 -1
- data/lib/mongo/cluster/topology/sharded.rb +1 -1
- data/lib/mongo/cluster/topology/single.rb +1 -1
- data/lib/mongo/cluster/topology/unknown.rb +1 -1
- data/lib/mongo/collection.rb +5 -4
- data/lib/mongo/collection/view.rb +4 -4
- data/lib/mongo/collection/view/aggregation.rb +2 -2
- data/lib/mongo/collection/view/builder.rb +1 -1
- data/lib/mongo/collection/view/builder/aggregation.rb +1 -1
- data/lib/mongo/collection/view/builder/find_command.rb +1 -1
- data/lib/mongo/collection/view/builder/flags.rb +1 -1
- data/lib/mongo/collection/view/builder/map_reduce.rb +1 -1
- data/lib/mongo/collection/view/builder/modifiers.rb +1 -1
- data/lib/mongo/collection/view/builder/op_query.rb +1 -1
- data/lib/mongo/collection/view/explainable.rb +1 -1
- data/lib/mongo/collection/view/immutable.rb +1 -1
- data/lib/mongo/collection/view/iterable.rb +2 -2
- data/lib/mongo/collection/view/map_reduce.rb +3 -3
- data/lib/mongo/collection/view/readable.rb +23 -6
- data/lib/mongo/collection/view/writable.rb +3 -3
- data/lib/mongo/cursor.rb +50 -7
- data/lib/mongo/cursor/builder.rb +1 -1
- data/lib/mongo/cursor/builder/get_more_command.rb +1 -1
- data/lib/mongo/cursor/builder/kill_cursors_command.rb +29 -1
- data/lib/mongo/cursor/builder/op_get_more.rb +1 -1
- data/lib/mongo/cursor/builder/op_kill_cursors.rb +29 -1
- data/lib/mongo/database.rb +4 -4
- data/lib/mongo/database/view.rb +2 -2
- data/lib/mongo/dbref.rb +4 -3
- data/lib/mongo/error.rb +1 -1
- data/lib/mongo/error/bulk_write_error.rb +1 -1
- data/lib/mongo/error/closed_stream.rb +1 -1
- data/lib/mongo/error/extra_file_chunk.rb +1 -1
- data/lib/mongo/error/file_not_found.rb +1 -1
- data/lib/mongo/error/invalid_bulk_operation.rb +1 -1
- data/lib/mongo/error/invalid_bulk_operation_type.rb +1 -1
- data/lib/mongo/error/invalid_collection_name.rb +1 -1
- data/lib/mongo/error/invalid_database_name.rb +1 -1
- data/lib/mongo/error/invalid_document.rb +1 -1
- data/lib/mongo/error/invalid_file.rb +1 -1
- data/lib/mongo/error/invalid_file_revision.rb +1 -1
- data/lib/mongo/error/invalid_nonce.rb +1 -1
- data/lib/mongo/error/invalid_replacement_document.rb +1 -1
- data/lib/mongo/error/invalid_server_preference.rb +1 -1
- data/lib/mongo/error/invalid_signature.rb +1 -1
- data/lib/mongo/error/invalid_update_document.rb +1 -1
- data/lib/mongo/error/invalid_uri.rb +1 -1
- data/lib/mongo/error/invalid_write_concern.rb +1 -1
- data/lib/mongo/error/max_bson_size.rb +1 -1
- data/lib/mongo/error/max_message_size.rb +1 -1
- data/lib/mongo/error/missing_file_chunk.rb +1 -1
- data/lib/mongo/error/multi_index_drop.rb +1 -1
- data/lib/mongo/error/need_primary_server.rb +1 -1
- data/lib/mongo/error/no_server_available.rb +4 -2
- data/lib/mongo/error/operation_failure.rb +1 -1
- data/lib/mongo/error/parser.rb +1 -1
- data/lib/mongo/error/socket_error.rb +1 -1
- data/lib/mongo/error/socket_timeout_error.rb +1 -1
- data/lib/mongo/error/unchangeable_collection_option.rb +1 -1
- data/lib/mongo/error/unexpected_chunk_length.rb +1 -1
- data/lib/mongo/error/unexpected_response.rb +1 -1
- data/lib/mongo/error/unsupported_features.rb +1 -1
- data/lib/mongo/event.rb +1 -1
- data/lib/mongo/event/description_changed.rb +1 -1
- data/lib/mongo/event/publisher.rb +1 -1
- data/lib/mongo/event/subscriber.rb +1 -1
- data/lib/mongo/grid.rb +1 -1
- data/lib/mongo/grid/file.rb +6 -2
- data/lib/mongo/grid/file/chunk.rb +6 -4
- data/lib/mongo/grid/file/info.rb +7 -3
- data/lib/mongo/grid/fs_bucket.rb +12 -6
- data/lib/mongo/grid/stream.rb +1 -1
- data/lib/mongo/grid/stream/read.rb +2 -4
- data/lib/mongo/grid/stream/write.rb +4 -3
- data/lib/mongo/index.rb +1 -1
- data/lib/mongo/index/view.rb +5 -4
- data/lib/mongo/loggable.rb +1 -1
- data/lib/mongo/logger.rb +1 -1
- data/lib/mongo/monitoring.rb +1 -1
- data/lib/mongo/operation.rb +1 -1
- data/lib/mongo/operation/commands.rb +1 -1
- data/lib/mongo/operation/commands/aggregate.rb +7 -7
- data/lib/mongo/operation/commands/aggregate/result.rb +1 -1
- data/lib/mongo/operation/commands/collections_info.rb +10 -9
- data/lib/mongo/operation/commands/collections_info/result.rb +1 -1
- data/lib/mongo/operation/commands/command.rb +1 -1
- data/lib/mongo/operation/commands/indexes.rb +12 -11
- data/lib/mongo/operation/commands/list_collections.rb +1 -1
- data/lib/mongo/operation/commands/list_collections/result.rb +1 -1
- data/lib/mongo/operation/commands/list_indexes.rb +1 -1
- data/lib/mongo/operation/commands/list_indexes/result.rb +1 -1
- data/lib/mongo/operation/commands/map_reduce.rb +1 -1
- data/lib/mongo/operation/commands/map_reduce/result.rb +1 -1
- data/lib/mongo/operation/commands/user_query.rb +11 -10
- data/lib/mongo/operation/commands/users_info.rb +2 -2
- data/lib/mongo/operation/commands/users_info/result.rb +1 -1
- data/lib/mongo/operation/executable.rb +8 -7
- data/lib/mongo/operation/kill_cursors.rb +2 -2
- data/lib/mongo/operation/limited.rb +1 -1
- data/lib/mongo/operation/read.rb +1 -1
- data/lib/mongo/operation/read/get_more.rb +2 -2
- data/lib/mongo/operation/read/query.rb +1 -1
- data/lib/mongo/operation/read/query/result.rb +1 -1
- data/lib/mongo/operation/read_preference.rb +10 -10
- data/lib/mongo/operation/result.rb +1 -1
- data/lib/mongo/operation/specifiable.rb +2 -2
- data/lib/mongo/operation/write.rb +1 -1
- data/lib/mongo/operation/write/bulk.rb +1 -1
- data/lib/mongo/operation/write/bulk/bulkable.rb +9 -9
- data/lib/mongo/operation/write/bulk/delete.rb +3 -3
- data/lib/mongo/operation/write/bulk/delete/result.rb +1 -1
- data/lib/mongo/operation/write/bulk/insert.rb +5 -5
- data/lib/mongo/operation/write/bulk/insert/result.rb +1 -1
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +1 -1
- data/lib/mongo/operation/write/bulk/mergable.rb +1 -1
- data/lib/mongo/operation/write/bulk/update.rb +3 -3
- data/lib/mongo/operation/write/bulk/update/result.rb +1 -1
- data/lib/mongo/operation/write/command.rb +1 -1
- data/lib/mongo/operation/write/command/create_index.rb +1 -1
- data/lib/mongo/operation/write/command/create_user.rb +1 -1
- data/lib/mongo/operation/write/command/delete.rb +1 -1
- data/lib/mongo/operation/write/command/drop_index.rb +1 -1
- data/lib/mongo/operation/write/command/insert.rb +11 -1
- data/lib/mongo/operation/write/command/remove_user.rb +1 -1
- data/lib/mongo/operation/write/command/update.rb +1 -1
- data/lib/mongo/operation/write/command/update_user.rb +1 -1
- data/lib/mongo/operation/write/command/writable.rb +7 -6
- data/lib/mongo/operation/write/create_index.rb +1 -1
- data/lib/mongo/operation/write/create_user.rb +1 -1
- data/lib/mongo/operation/write/delete.rb +1 -1
- data/lib/mongo/operation/write/delete/result.rb +1 -1
- data/lib/mongo/operation/write/drop_index.rb +5 -5
- data/lib/mongo/operation/write/gle.rb +3 -3
- data/lib/mongo/operation/write/idable.rb +1 -1
- data/lib/mongo/operation/write/insert.rb +5 -5
- data/lib/mongo/operation/write/insert/result.rb +1 -1
- data/lib/mongo/operation/write/remove_user.rb +1 -1
- data/lib/mongo/operation/write/update.rb +1 -1
- data/lib/mongo/operation/write/update/result.rb +1 -1
- data/lib/mongo/operation/write/update_user.rb +1 -1
- data/lib/mongo/operation/write/write_command_enabled.rb +10 -9
- data/lib/mongo/protocol/bit_vector.rb +2 -2
- data/lib/mongo/protocol/delete.rb +1 -1
- data/lib/mongo/protocol/get_more.rb +1 -1
- data/lib/mongo/protocol/insert.rb +5 -1
- data/lib/mongo/protocol/kill_cursors.rb +1 -1
- data/lib/mongo/protocol/message.rb +9 -5
- data/lib/mongo/protocol/query.rb +1 -1
- data/lib/mongo/protocol/reply.rb +1 -1
- data/lib/mongo/protocol/serializers.rb +8 -8
- data/lib/mongo/protocol/update.rb +1 -1
- data/lib/mongo/server.rb +40 -3
- data/lib/mongo/server/connectable.rb +1 -1
- data/lib/mongo/server/connection.rb +4 -2
- data/lib/mongo/server/connection_pool.rb +1 -1
- data/lib/mongo/server/connection_pool/queue.rb +1 -1
- data/lib/mongo/server/context.rb +3 -1
- data/lib/mongo/server/description.rb +1 -1
- data/lib/mongo/server/description/inspector/description_changed.rb +1 -1
- data/lib/mongo/server/monitor.rb +1 -1
- data/lib/mongo/server_selector.rb +2 -1
- data/lib/mongo/server_selector/nearest.rb +1 -1
- data/lib/mongo/server_selector/primary.rb +1 -1
- data/lib/mongo/server_selector/primary_preferred.rb +1 -1
- data/lib/mongo/server_selector/secondary.rb +1 -1
- data/lib/mongo/server_selector/secondary_preferred.rb +1 -1
- data/lib/mongo/server_selector/selectable.rb +12 -7
- data/lib/mongo/socket.rb +1 -1
- data/lib/mongo/socket/ssl.rb +1 -1
- data/lib/mongo/socket/tcp.rb +1 -1
- data/lib/mongo/socket/unix.rb +1 -1
- data/lib/mongo/uri.rb +1 -1
- data/lib/mongo/version.rb +2 -2
- data/lib/mongo/write_concern/acknowledged.rb +1 -1
- data/lib/mongo/write_concern/normalizable.rb +1 -1
- data/lib/mongo/write_concern/unacknowledged.rb +1 -1
- data/mongo.gemspec +1 -1
- data/spec/mongo/client_spec.rb +2 -2
- data/spec/mongo/cluster/cursor_reaper_spec.rb +216 -0
- data/spec/mongo/cluster_spec.rb +36 -5
- data/spec/mongo/collection/view/aggregation_spec.rb +2 -2
- data/spec/mongo/collection/view/map_reduce_spec.rb +2 -2
- data/spec/mongo/collection/view/readable_spec.rb +203 -5
- data/spec/mongo/collection/view_spec.rb +10 -0
- data/spec/mongo/collection_spec.rb +64 -18
- data/spec/mongo/cursor_spec.rb +89 -0
- data/spec/mongo/database_spec.rb +79 -13
- data/spec/mongo/grid/fs_bucket_spec.rb +119 -1
- data/spec/mongo/grid/stream/write_spec.rb +63 -12
- data/spec/mongo/index/view_spec.rb +19 -0
- data/spec/mongo/operation/commands/aggregate_spec.rb +10 -7
- data/spec/mongo/operation/commands/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/commands/command_spec.rb +3 -3
- data/spec/mongo/operation/commands/indexes_spec.rb +1 -1
- data/spec/mongo/operation/commands/map_reduce_spec.rb +2 -2
- data/spec/mongo/operation/kill_cursors_spec.rb +10 -19
- data/spec/mongo/operation/read/get_more_spec.rb +13 -25
- data/spec/mongo/operation/read/query_spec.rb +26 -30
- data/spec/mongo/operation/read_preference_spec.rb +11 -11
- data/spec/mongo/operation/specifiable_spec.rb +31 -0
- data/spec/mongo/operation/write/bulk/delete_spec.rb +16 -18
- data/spec/mongo/operation/write/bulk/insert_spec.rb +17 -18
- data/spec/mongo/operation/write/bulk/update_spec.rb +20 -25
- data/spec/mongo/operation/write/command/delete_spec.rb +26 -32
- data/spec/mongo/operation/write/command/insert_spec.rb +24 -31
- data/spec/mongo/operation/write/command/update_spec.rb +24 -32
- data/spec/mongo/operation/write/create_index_spec.rb +4 -4
- data/spec/mongo/operation/write/create_user_spec.rb +3 -3
- data/spec/mongo/operation/write/delete_spec.rb +51 -22
- data/spec/mongo/operation/write/drop_index_spec.rb +2 -2
- data/spec/mongo/operation/write/insert_spec.rb +42 -11
- data/spec/mongo/operation/write/remove_user_spec.rb +4 -4
- data/spec/mongo/operation/write/update_spec.rb +34 -6
- data/spec/mongo/operation/write/update_user_spec.rb +1 -1
- data/spec/mongo/server/connection_spec.rb +22 -14
- data/spec/mongo/server_selection_spec.rb +2 -2
- data/spec/mongo/server_selector/nearest_spec.rb +4 -4
- data/spec/mongo/server_selector/primary_preferred_spec.rb +4 -4
- data/spec/mongo/server_selector/primary_spec.rb +2 -2
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +4 -4
- data/spec/mongo/server_selector/secondary_spec.rb +3 -3
- data/spec/mongo/server_selector_spec.rb +82 -3
- data/spec/mongo/server_spec.rb +0 -20
- data/spec/support/command_monitoring.rb +1 -1
- data/spec/support/connection_string.rb +1 -1
- data/spec/support/crud.rb +1 -1
- data/spec/support/crud/read.rb +1 -1
- data/spec/support/crud/write.rb +1 -1
- data/spec/support/gridfs.rb +1 -1
- data/spec/support/shared/server_selector.rb +3 -3
- metadata +7 -10
- metadata.gz.sig +0 -0
- data/lib/csasl/csasl.bundle +0 -0
- data/spec/mongo/operation/write/response_spec.rb +0 -85
- data/spec/support/shared/operation.rb +0 -100
@@ -29,7 +29,7 @@ describe Mongo::Operation::Commands::CollectionsInfo do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
let(:info) do
|
32
|
-
docs = op.execute(authorized_primary
|
32
|
+
docs = op.execute(authorized_primary).documents
|
33
33
|
docs.collect { |info| info['name'].sub("#{TEST_DB}.", '') }
|
34
34
|
end
|
35
35
|
|
@@ -43,7 +43,7 @@ describe Mongo::Operation::Commands::Command do
|
|
43
43
|
context 'when the command succeeds' do
|
44
44
|
|
45
45
|
let(:response) do
|
46
|
-
op.execute(authorized_primary
|
46
|
+
op.execute(authorized_primary)
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'returns the reponse' do
|
@@ -59,7 +59,7 @@ describe Mongo::Operation::Commands::Command do
|
|
59
59
|
|
60
60
|
it 'raises an exception' do
|
61
61
|
expect {
|
62
|
-
op.execute(authorized_primary
|
62
|
+
op.execute(authorized_primary)
|
63
63
|
}.to raise_error(Mongo::Error::OperationFailure)
|
64
64
|
end
|
65
65
|
end
|
@@ -72,7 +72,7 @@ describe Mongo::Operation::Commands::Command do
|
|
72
72
|
|
73
73
|
it 'raises an error' do
|
74
74
|
expect {
|
75
|
-
op.execute(authorized_primary
|
75
|
+
op.execute(authorized_primary)
|
76
76
|
}.to raise_error(Mongo::Error::MaxBSONSize)
|
77
77
|
end
|
78
78
|
end
|
@@ -97,7 +97,7 @@ describe Mongo::Operation::Commands::MapReduce do
|
|
97
97
|
context 'when the map/reduce succeeds' do
|
98
98
|
|
99
99
|
let(:response) do
|
100
|
-
op.execute(authorized_primary
|
100
|
+
op.execute(authorized_primary)
|
101
101
|
end
|
102
102
|
|
103
103
|
it 'returns the response' do
|
@@ -117,7 +117,7 @@ describe Mongo::Operation::Commands::MapReduce do
|
|
117
117
|
|
118
118
|
it 'raises an exception' do
|
119
119
|
expect {
|
120
|
-
op.execute(authorized_primary
|
120
|
+
op.execute(authorized_primary)
|
121
121
|
}.to raise_error(Mongo::Error::OperationFailure)
|
122
122
|
end
|
123
123
|
end
|
@@ -1,9 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::KillCursors do
|
4
|
-
include_context 'operation'
|
5
4
|
|
6
|
-
let(:spec)
|
5
|
+
let(:spec) do
|
6
|
+
{ coll_name: TEST_COLL,
|
7
|
+
db_name: TEST_DB,
|
8
|
+
:cursor_ids => [1,2]
|
9
|
+
}
|
10
|
+
end
|
7
11
|
let(:op) { described_class.new(spec) }
|
8
12
|
|
9
13
|
describe '#initialize' do
|
@@ -27,24 +31,11 @@ describe Mongo::Operation::KillCursors do
|
|
27
31
|
end
|
28
32
|
end
|
29
33
|
|
30
|
-
describe '#
|
31
|
-
|
32
|
-
context 'message' do
|
34
|
+
describe '#message' do
|
33
35
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
-
op.execute(primary_context)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'connection' do
|
43
|
-
|
44
|
-
it 'dispatches the message on the connection' do
|
45
|
-
expect(connection).to receive(:dispatch)
|
46
|
-
op.execute(primary_context)
|
47
|
-
end
|
36
|
+
it 'creates a kill cursors wire protocol message with correct specs' do
|
37
|
+
expect(Mongo::Protocol::KillCursors).to receive(:new).with(TEST_COLL, TEST_DB, spec[:cursor_ids])
|
38
|
+
op.send(:message, authorized_primary)
|
48
39
|
end
|
49
40
|
end
|
50
41
|
end
|
@@ -1,14 +1,18 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::Read::GetMore do
|
4
|
-
include_context 'operation'
|
5
4
|
|
6
|
-
let(:to_return)
|
7
|
-
|
5
|
+
let(:to_return) do
|
6
|
+
50
|
7
|
+
end
|
8
|
+
|
9
|
+
let(:cursor_id) do
|
10
|
+
1
|
11
|
+
end
|
8
12
|
|
9
13
|
let(:spec) do
|
10
|
-
{ :db_name =>
|
11
|
-
:coll_name =>
|
14
|
+
{ :db_name => TEST_DB,
|
15
|
+
:coll_name => TEST_COLL,
|
12
16
|
:to_return => to_return,
|
13
17
|
:cursor_id => cursor_id }
|
14
18
|
end
|
@@ -39,27 +43,11 @@ describe Mongo::Operation::Read::GetMore do
|
|
39
43
|
end
|
40
44
|
end
|
41
45
|
|
42
|
-
describe '#
|
46
|
+
describe '#message' do
|
43
47
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
expect(Mongo::Protocol::GetMore).to receive(:new) do |db, coll, to_ret, id|
|
48
|
-
expect(db).to eq(db_name)
|
49
|
-
expect(coll).to eq(coll_name)
|
50
|
-
expect(to_ret).to eq(to_return)
|
51
|
-
expect(id).to eq(cursor_id)
|
52
|
-
end
|
53
|
-
op.execute(primary_context)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context 'connection' do
|
58
|
-
|
59
|
-
it 'dispatches the message on the connection' do
|
60
|
-
expect(connection).to receive(:dispatch)
|
61
|
-
op.execute(primary_context)
|
62
|
-
end
|
48
|
+
it 'creates a get more wire protocol message with correct specs' do
|
49
|
+
expect(Mongo::Protocol::GetMore).to receive(:new).with(TEST_DB, TEST_COLL, to_return, cursor_id)
|
50
|
+
op.send(:message, authorized_primary)
|
63
51
|
end
|
64
52
|
end
|
65
53
|
end
|
@@ -1,15 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::Read::Query do
|
4
|
-
|
5
|
-
|
6
|
-
let(:selector) { {} }
|
4
|
+
|
5
|
+
let(:selector) { { foo: 1 } }
|
7
6
|
let(:query_options) { {} }
|
8
7
|
let(:spec) do
|
9
8
|
{ :selector => selector,
|
10
9
|
:options => query_options,
|
11
|
-
:db_name =>
|
12
|
-
:coll_name =>
|
10
|
+
:db_name => authorized_collection.database.name,
|
11
|
+
:coll_name => authorized_collection.name,
|
13
12
|
:read => Mongo::ServerSelector.get
|
14
13
|
}
|
15
14
|
end
|
@@ -30,8 +29,8 @@ describe Mongo::Operation::Read::Query do
|
|
30
29
|
let(:other_spec) do
|
31
30
|
{ :selector => { :a => 1 },
|
32
31
|
:options => query_options,
|
33
|
-
:db_name =>
|
34
|
-
:coll_name =>
|
32
|
+
:db_name => authorized_collection.database.name,
|
33
|
+
:coll_name => authorized_collection.name
|
35
34
|
}
|
36
35
|
end
|
37
36
|
let(:other) { described_class.new(other_spec) }
|
@@ -52,34 +51,35 @@ describe Mongo::Operation::Read::Query do
|
|
52
51
|
described_class.new(spec)
|
53
52
|
end
|
54
53
|
|
55
|
-
let(:
|
56
|
-
|
54
|
+
let(:cluster_single) do
|
55
|
+
double('cluster').tap do |c|
|
56
|
+
allow(c).to receive(:single?).and_return(true)
|
57
|
+
end
|
57
58
|
end
|
58
59
|
|
59
|
-
|
60
|
-
|
60
|
+
let(:message) do
|
61
|
+
query.send(:message, authorized_primary)
|
61
62
|
end
|
62
|
-
end
|
63
63
|
|
64
|
-
|
64
|
+
it 'applies the correct flags' do
|
65
|
+
expect(message.flags).to eq(query_options[:flags])
|
66
|
+
end
|
65
67
|
|
66
|
-
context '
|
68
|
+
context 'when the server is a secondary' do
|
67
69
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
expect(sel).to eq(selector)
|
70
|
+
let(:secondary_server_single) do
|
71
|
+
double('secondary_server').tap do |server|
|
72
|
+
allow(server).to receive(:mongos?) { false }
|
73
|
+
allow(server).to receive(:cluster) { cluster_single }
|
73
74
|
end
|
74
|
-
op.execute(primary_context)
|
75
75
|
end
|
76
|
-
end
|
77
76
|
|
78
|
-
|
77
|
+
let(:message) do
|
78
|
+
query.send(:message, secondary_server_single)
|
79
|
+
end
|
79
80
|
|
80
|
-
it '
|
81
|
-
expect(
|
82
|
-
op.execute(primary_context)
|
81
|
+
it 'applies the correct flags' do
|
82
|
+
expect(message.flags).to eq([ :no_cursor_timeout, :slave_ok ])
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
@@ -93,12 +93,8 @@ describe Mongo::Operation::Read::Query do
|
|
93
93
|
authorized_collection.delete_many
|
94
94
|
end
|
95
95
|
|
96
|
-
let(:context) do
|
97
|
-
authorized_client.cluster.next_primary.context
|
98
|
-
end
|
99
|
-
|
100
96
|
it 'does not raise an exception' do
|
101
|
-
expect(op.execute(
|
97
|
+
expect(op.execute(authorized_primary)).to be_a(Mongo::Operation::Read::Query::Result)
|
102
98
|
end
|
103
99
|
end
|
104
100
|
end
|
@@ -26,7 +26,7 @@ describe Mongo::Operation::ReadPreference do
|
|
26
26
|
Mongo::ServerSelector.get
|
27
27
|
end
|
28
28
|
|
29
|
-
let(:
|
29
|
+
let(:operation) do
|
30
30
|
Class.new do
|
31
31
|
include Mongo::Operation::ReadPreference
|
32
32
|
end.new.tap do |rp|
|
@@ -36,8 +36,8 @@ describe Mongo::Operation::ReadPreference do
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
let(:
|
40
|
-
double('
|
39
|
+
let(:server) do
|
40
|
+
double('server').tap do |c|
|
41
41
|
allow(c).to receive(:cluster).and_return(cluster_double)
|
42
42
|
allow(cluster_double).to receive(:single?).and_return(single?)
|
43
43
|
allow(c).to receive(:mongos?).and_return(mongos?)
|
@@ -55,7 +55,7 @@ describe Mongo::Operation::ReadPreference do
|
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'returns a special selector' do
|
58
|
-
expect(
|
58
|
+
expect(operation.send(:update_selector, server)).to eq(expected)
|
59
59
|
end
|
60
60
|
|
61
61
|
context 'when the selector already has $query in it' do
|
@@ -70,7 +70,7 @@ describe Mongo::Operation::ReadPreference do
|
|
70
70
|
end
|
71
71
|
|
72
72
|
it 'returns an unaltered special selector' do
|
73
|
-
expect(
|
73
|
+
expect(operation.send(:update_selector, server)).to eq(expected)
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
@@ -82,7 +82,7 @@ describe Mongo::Operation::ReadPreference do
|
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'returns a selector' do
|
85
|
-
expect(
|
85
|
+
expect(operation.send(:update_selector, server)).to eq(selector)
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
@@ -168,7 +168,7 @@ describe Mongo::Operation::ReadPreference do
|
|
168
168
|
end
|
169
169
|
|
170
170
|
it 'does not set the slave_ok flag' do
|
171
|
-
expect(
|
171
|
+
expect(operation.send(:update_options, server)).to eq(expected)
|
172
172
|
end
|
173
173
|
end
|
174
174
|
|
@@ -183,7 +183,7 @@ describe Mongo::Operation::ReadPreference do
|
|
183
183
|
end
|
184
184
|
|
185
185
|
it 'sets the slave_ok flag' do
|
186
|
-
expect(
|
186
|
+
expect(operation.send(:update_options, server)).to eq(expected)
|
187
187
|
end
|
188
188
|
end
|
189
189
|
end
|
@@ -205,7 +205,7 @@ describe Mongo::Operation::ReadPreference do
|
|
205
205
|
end
|
206
206
|
|
207
207
|
it 'does not set the slave_ok flag' do
|
208
|
-
expect(
|
208
|
+
expect(operation.send(:update_options, server)).to eq(expected)
|
209
209
|
end
|
210
210
|
end
|
211
211
|
|
@@ -222,7 +222,7 @@ describe Mongo::Operation::ReadPreference do
|
|
222
222
|
end
|
223
223
|
|
224
224
|
it 'sets the slave_ok flag' do
|
225
|
-
expect(
|
225
|
+
expect(operation.send(:update_options, server)).to eq(expected)
|
226
226
|
end
|
227
227
|
end
|
228
228
|
|
@@ -237,7 +237,7 @@ describe Mongo::Operation::ReadPreference do
|
|
237
237
|
end
|
238
238
|
|
239
239
|
it 'does not set the slave_ok flag' do
|
240
|
-
expect(
|
240
|
+
expect(operation.send(:update_options, server)).to eq(expected)
|
241
241
|
end
|
242
242
|
end
|
243
243
|
end
|
@@ -50,4 +50,35 @@ describe Mongo::Operation::Specifiable do
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
53
|
+
|
54
|
+
describe '#read' do
|
55
|
+
|
56
|
+
context 'when read is specified' do
|
57
|
+
|
58
|
+
let(:spec) do
|
59
|
+
{
|
60
|
+
read: { mode: :secondary}
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
let(:server_selector) do
|
65
|
+
Mongo::ServerSelector.get(spec[:read])
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'converts the read option to a ServerSelector' do
|
69
|
+
expect(specifiable.read).to be_a(Mongo::ServerSelector::Secondary)
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'uses the read option provided' do
|
73
|
+
expect(specifiable.read).to eq(server_selector)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'when read is not specified' do
|
78
|
+
|
79
|
+
it 'returns a Primary ServerSelector object' do
|
80
|
+
expect(specifiable.read).to eq(Mongo::ServerSelector.get(Mongo::ServerSelector::PRIMARY))
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
53
84
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::Write::Bulk::Delete do
|
4
|
-
include_context 'operation'
|
5
4
|
|
6
5
|
let(:documents) do
|
7
6
|
[ { 'q' => { foo: 1 }, 'limit' => 1 } ]
|
@@ -9,9 +8,9 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
9
8
|
|
10
9
|
let(:spec) do
|
11
10
|
{ :deletes => documents,
|
12
|
-
:db_name =>
|
13
|
-
:coll_name =>
|
14
|
-
:write_concern =>
|
11
|
+
:db_name => TEST_DB,
|
12
|
+
:coll_name => TEST_COLL,
|
13
|
+
:write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
|
15
14
|
:ordered => true
|
16
15
|
}
|
17
16
|
end
|
@@ -47,9 +46,9 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
47
46
|
|
48
47
|
let(:other_spec) do
|
49
48
|
{ :deletes => other_docs,
|
50
|
-
:db_name =>
|
51
|
-
:coll_name =>
|
52
|
-
:write_concern =>
|
49
|
+
:db_name => TEST_DB,
|
50
|
+
:coll_name => TEST_COLL,
|
51
|
+
:write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
|
53
52
|
:ordered => true
|
54
53
|
}
|
55
54
|
end
|
@@ -93,7 +92,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
93
92
|
end
|
94
93
|
|
95
94
|
it 'deletes the document from the database' do
|
96
|
-
op.execute(authorized_primary
|
95
|
+
op.execute(authorized_primary)
|
97
96
|
expect(authorized_collection.find.count).to eq(1)
|
98
97
|
end
|
99
98
|
end
|
@@ -106,7 +105,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
106
105
|
deletes: documents,
|
107
106
|
db_name: TEST_DB,
|
108
107
|
coll_name: TEST_COLL,
|
109
|
-
write_concern: Mongo::WriteConcern.get(
|
108
|
+
write_concern: Mongo::WriteConcern.get(WRITE_CONCERN)
|
110
109
|
})
|
111
110
|
end
|
112
111
|
|
@@ -117,7 +116,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
117
116
|
end
|
118
117
|
|
119
118
|
it 'deletes the documents from the database' do
|
120
|
-
op.execute(authorized_primary
|
119
|
+
op.execute(authorized_primary)
|
121
120
|
expect(authorized_collection.find.count).to eq(0)
|
122
121
|
end
|
123
122
|
end
|
@@ -135,7 +134,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
135
134
|
{ :deletes => documents,
|
136
135
|
:db_name => TEST_DB,
|
137
136
|
:coll_name => TEST_COLL,
|
138
|
-
:write_concern =>
|
137
|
+
:write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
|
139
138
|
:ordered => true
|
140
139
|
}
|
141
140
|
end
|
@@ -149,11 +148,11 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
149
148
|
context 'when write concern is acknowledged' do
|
150
149
|
|
151
150
|
let(:write_concern) do
|
152
|
-
Mongo::WriteConcern.get(
|
151
|
+
Mongo::WriteConcern.get(WRITE_CONCERN)
|
153
152
|
end
|
154
153
|
|
155
154
|
it 'aborts after first error' do
|
156
|
-
failing_delete.execute(authorized_primary
|
155
|
+
failing_delete.execute(authorized_primary)
|
157
156
|
expect(authorized_collection.find.count).to eq(2)
|
158
157
|
end
|
159
158
|
end
|
@@ -165,7 +164,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
165
164
|
end
|
166
165
|
|
167
166
|
it 'aborts after first error' do
|
168
|
-
failing_delete.execute(authorized_primary
|
167
|
+
failing_delete.execute(authorized_primary)
|
169
168
|
expect(authorized_collection.find.count).to eq(2)
|
170
169
|
end
|
171
170
|
end
|
@@ -184,7 +183,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
184
183
|
{ :deletes => documents,
|
185
184
|
:db_name => TEST_DB,
|
186
185
|
:coll_name => TEST_COLL,
|
187
|
-
:write_concern =>
|
186
|
+
:write_concern => Mongo::WriteConcern.get(WRITE_CONCERN),
|
188
187
|
:ordered => false
|
189
188
|
}
|
190
189
|
end
|
@@ -202,7 +201,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
202
201
|
end
|
203
202
|
|
204
203
|
it 'does not abort after first error' do
|
205
|
-
failing_delete.execute(authorized_primary
|
204
|
+
failing_delete.execute(authorized_primary)
|
206
205
|
expect(authorized_collection.find.count).to eq(1)
|
207
206
|
end
|
208
207
|
end
|
@@ -214,8 +213,7 @@ describe Mongo::Operation::Write::Bulk::Delete do
|
|
214
213
|
end
|
215
214
|
|
216
215
|
it 'does not abort after first error' do
|
217
|
-
failing_delete.execute(authorized_primary
|
218
|
-
sleep(1)
|
216
|
+
failing_delete.execute(authorized_primary)
|
219
217
|
expect(authorized_collection.find.count).to eq(1)
|
220
218
|
end
|
221
219
|
end
|