mongo 1.9.2 → 1.10.0.rc0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/LICENSE +1 -1
- data/README.md +94 -334
- data/Rakefile +6 -4
- data/VERSION +1 -1
- data/bin/mongo_console +13 -6
- data/lib/mongo.rb +22 -27
- data/lib/mongo/bulk_write_collection_view.rb +352 -0
- data/lib/mongo/collection.rb +128 -188
- data/lib/mongo/collection_writer.rb +348 -0
- data/lib/mongo/connection.rb +19 -0
- data/lib/mongo/{util → connection}/node.rb +15 -1
- data/lib/mongo/{util → connection}/pool.rb +34 -19
- data/lib/mongo/{util → connection}/pool_manager.rb +8 -2
- data/lib/mongo/{util → connection}/sharding_pool_manager.rb +1 -1
- data/lib/mongo/connection/socket.rb +18 -0
- data/lib/mongo/{util → connection/socket}/socket_util.rb +5 -2
- data/lib/mongo/{util → connection/socket}/ssl_socket.rb +3 -4
- data/lib/mongo/{util → connection/socket}/tcp_socket.rb +25 -15
- data/lib/mongo/{util → connection/socket}/unix_socket.rb +6 -4
- data/lib/mongo/cursor.rb +113 -47
- data/lib/mongo/db.rb +203 -131
- data/lib/mongo/{exceptions.rb → exception.rb} +7 -1
- data/lib/mongo/functional.rb +19 -0
- data/lib/mongo/functional/authentication.rb +303 -0
- data/lib/mongo/{util → functional}/logging.rb +1 -1
- data/lib/mongo/{util → functional}/read_preference.rb +49 -1
- data/lib/mongo/{util → functional}/uri_parser.rb +81 -69
- data/lib/mongo/{util → functional}/write_concern.rb +2 -1
- data/{test/unit/pool_test.rb → lib/mongo/gridfs.rb} +5 -10
- data/lib/mongo/gridfs/grid.rb +1 -3
- data/lib/mongo/gridfs/grid_ext.rb +1 -1
- data/lib/mongo/gridfs/grid_file_system.rb +1 -1
- data/lib/mongo/gridfs/grid_io.rb +1 -1
- data/lib/mongo/legacy.rb +63 -8
- data/lib/mongo/mongo_client.rb +128 -154
- data/lib/mongo/mongo_replica_set_client.rb +17 -11
- data/lib/mongo/mongo_sharded_client.rb +2 -1
- data/lib/mongo/networking.rb +19 -10
- data/lib/mongo/utils.rb +19 -0
- data/lib/mongo/{util → utils}/conversions.rb +1 -1
- data/lib/mongo/{util → utils}/core_ext.rb +1 -1
- data/lib/mongo/{util → utils}/server_version.rb +1 -1
- data/lib/mongo/{util → utils}/support.rb +10 -57
- data/lib/mongo/{util → utils}/thread_local_variable_manager.rb +1 -1
- data/test/functional/authentication_test.rb +8 -21
- data/test/functional/bulk_write_collection_view_test.rb +782 -0
- data/test/functional/{connection_test.rb → client_test.rb} +153 -78
- data/test/functional/collection_test.rb +343 -97
- data/test/functional/collection_writer_test.rb +83 -0
- data/test/functional/conversions_test.rb +1 -3
- data/test/functional/cursor_fail_test.rb +3 -3
- data/test/functional/cursor_message_test.rb +3 -3
- data/test/functional/cursor_test.rb +38 -3
- data/test/functional/db_api_test.rb +5 -5
- data/test/functional/db_connection_test.rb +2 -2
- data/test/functional/db_test.rb +35 -11
- data/test/functional/grid_file_system_test.rb +2 -2
- data/test/functional/grid_io_test.rb +2 -2
- data/test/functional/grid_test.rb +2 -2
- data/test/functional/pool_test.rb +2 -3
- data/test/functional/safe_test.rb +5 -5
- data/test/functional/ssl_test.rb +22 -102
- data/test/functional/support_test.rb +1 -1
- data/test/functional/timeout_test.rb +6 -22
- data/test/functional/uri_test.rb +113 -12
- data/test/functional/write_concern_test.rb +6 -6
- data/test/helpers/general.rb +50 -0
- data/test/helpers/test_unit.rb +309 -0
- data/test/replica_set/authentication_test.rb +8 -23
- data/test/replica_set/basic_test.rb +41 -14
- data/test/replica_set/client_test.rb +179 -117
- data/test/replica_set/complex_connect_test.rb +6 -7
- data/test/replica_set/connection_test.rb +46 -38
- data/test/replica_set/count_test.rb +2 -2
- data/test/replica_set/cursor_test.rb +8 -8
- data/test/replica_set/insert_test.rb +64 -2
- data/test/replica_set/max_values_test.rb +59 -10
- data/test/replica_set/pinning_test.rb +2 -2
- data/test/replica_set/query_test.rb +2 -2
- data/test/replica_set/read_preference_test.rb +6 -6
- data/test/replica_set/refresh_test.rb +7 -7
- data/test/replica_set/replication_ack_test.rb +5 -5
- data/test/replica_set/ssl_test.rb +24 -106
- data/test/sharded_cluster/basic_test.rb +43 -15
- data/test/shared/authentication/basic_auth_shared.rb +215 -0
- data/test/shared/authentication/sasl_plain_shared.rb +96 -0
- data/test/shared/ssl_shared.rb +173 -0
- data/test/test_helper.rb +31 -199
- data/test/threading/basic_test.rb +29 -3
- data/test/tools/mongo_config.rb +45 -20
- data/test/tools/mongo_config_test.rb +1 -1
- data/test/unit/client_test.rb +136 -57
- data/test/unit/collection_test.rb +31 -55
- data/test/unit/connection_test.rb +135 -72
- data/test/unit/cursor_test.rb +2 -2
- data/test/unit/db_test.rb +19 -15
- data/test/unit/grid_test.rb +2 -2
- data/test/unit/mongo_sharded_client_test.rb +17 -15
- data/test/unit/node_test.rb +2 -2
- data/test/unit/pool_manager_test.rb +7 -5
- data/test/unit/read_pref_test.rb +82 -2
- data/test/unit/read_test.rb +14 -14
- data/test/unit/safe_test.rb +9 -9
- data/test/unit/sharding_pool_manager_test.rb +11 -5
- data/test/unit/write_concern_test.rb +9 -9
- metadata +71 -56
- metadata.gz.sig +0 -0
- data/test/functional/threading_test.rb +0 -109
- data/test/shared/authentication.rb +0 -121
- data/test/unit/util_test.rb +0 -69
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013
|
1
|
+
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -36,8 +36,8 @@ class ComplexConnectTest < Test::Unit::TestCase
|
|
36
36
|
|
37
37
|
version = @client.server_version
|
38
38
|
|
39
|
-
@client[
|
40
|
-
assert @client[
|
39
|
+
@client[TEST_DB]['complext-connect-test'].insert({:a => 1})
|
40
|
+
assert @client[TEST_DB]['complext-connect-test'].find_one
|
41
41
|
|
42
42
|
config = primary['local']['system.replset'].find_one
|
43
43
|
old_config = config.dup
|
@@ -55,19 +55,18 @@ class ComplexConnectTest < Test::Unit::TestCase
|
|
55
55
|
end
|
56
56
|
@rs.start
|
57
57
|
|
58
|
-
|
59
58
|
assert_raise ConnectionFailure do
|
60
|
-
primary
|
59
|
+
perform_step_down(primary)
|
61
60
|
end
|
62
61
|
|
63
62
|
# isMaster is currently broken in 2.1+ when called on removed nodes
|
64
63
|
puts version
|
65
64
|
if version < "2.1"
|
66
65
|
rescue_connection_failure do
|
67
|
-
assert @client[
|
66
|
+
assert @client[TEST_DB]['complext-connect-test'].find_one
|
68
67
|
end
|
69
68
|
|
70
|
-
assert @client[
|
69
|
+
assert @client[TEST_DB]['complext-connect-test'].find_one
|
71
70
|
end
|
72
71
|
|
73
72
|
primary = MongoClient.new(host, @rs.primary.port)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013
|
1
|
+
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
require 'test_helper'
|
16
16
|
|
17
|
-
class
|
17
|
+
class ReplicaSetConnectionTest < Test::Unit::TestCase
|
18
18
|
|
19
19
|
def setup
|
20
20
|
ensure_cluster(:rs)
|
@@ -59,33 +59,37 @@ class ConnectionTest < Test::Unit::TestCase
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def test_connect_with_connection_string_in_env_var
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
62
|
+
uri = "mongodb://#{@rs.repl_set_seeds_uri}?replicaset=#{@rs.repl_set_name}"
|
63
|
+
with_preserved_env_uri(uri) do
|
64
|
+
@connection = ReplSetConnection.new
|
65
|
+
assert !@connection.nil?
|
66
|
+
assert_equal 3, @connection.seeds.length
|
67
|
+
assert_equal @rs.replicas[0].host, @connection.seeds[0][0]
|
68
|
+
assert_equal @rs.replicas[1].host, @connection.seeds[1][0]
|
69
|
+
assert_equal @rs.replicas[2].host, @connection.seeds[2][0]
|
70
|
+
assert_equal @rs.replicas[0].port, @connection.seeds[0][1]
|
71
|
+
assert_equal @rs.replicas[1].port, @connection.seeds[1][1]
|
72
|
+
assert_equal @rs.replicas[2].port, @connection.seeds[2][1]
|
73
|
+
assert_equal @rs.repl_set_name, @connection.replica_set_name
|
74
|
+
assert @connection.connected?
|
75
|
+
end
|
74
76
|
end
|
75
77
|
|
76
78
|
def test_connect_with_connection_string_in_implicit_mongodb_uri
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
79
|
+
uri = "mongodb://#{@rs.repl_set_seeds_uri}?replicaset=#{@rs.repl_set_name}"
|
80
|
+
with_preserved_env_uri(uri) do
|
81
|
+
@connection = Connection.from_uri
|
82
|
+
assert !@connection.nil?
|
83
|
+
assert_equal 3, @connection.seeds.length
|
84
|
+
assert_equal @rs.replicas[0].host, @connection.seeds[0][0]
|
85
|
+
assert_equal @rs.replicas[1].host, @connection.seeds[1][0]
|
86
|
+
assert_equal @rs.replicas[2].host, @connection.seeds[2][0]
|
87
|
+
assert_equal @rs.replicas[0].port, @connection.seeds[0][1]
|
88
|
+
assert_equal @rs.replicas[1].port, @connection.seeds[1][1]
|
89
|
+
assert_equal @rs.replicas[2].port, @connection.seeds[2][1]
|
90
|
+
assert_equal @rs.repl_set_name, @connection.replica_set_name
|
91
|
+
assert @connection.connected?
|
92
|
+
end
|
89
93
|
end
|
90
94
|
|
91
95
|
def test_connect_with_new_seed_format
|
@@ -110,21 +114,25 @@ class ConnectionTest < Test::Unit::TestCase
|
|
110
114
|
end
|
111
115
|
|
112
116
|
def test_connect_with_full_connection_string_in_env_var
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
117
|
+
uri = "mongodb://#{@rs.repl_set_seeds_uri}?replicaset=#{@rs.repl_set_name};safe=true;w=2;fsync=true;slaveok=true"
|
118
|
+
with_preserved_env_uri(uri) do
|
119
|
+
@connection = ReplSetConnection.new
|
120
|
+
assert !@connection.nil?
|
121
|
+
assert @connection.connected?
|
122
|
+
assert_equal 2, @connection.write_concern[:w]
|
123
|
+
assert @connection.write_concern[:fsync]
|
124
|
+
assert @connection.read_pool
|
125
|
+
end
|
120
126
|
end
|
121
127
|
|
122
128
|
def test_connect_options_override_env_var
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
129
|
+
uri = "mongodb://#{@rs.repl_set_seeds_uri}?replicaset=#{@rs.repl_set_name};safe=true;w=2;fsync=true;slaveok=true"
|
130
|
+
with_preserved_env_uri(uri) do
|
131
|
+
@connection = ReplSetConnection.new({:safe => {:w => 1}})
|
132
|
+
assert !@connection.nil?
|
133
|
+
assert @connection.connected?
|
134
|
+
assert_equal 1, @connection.write_concern[:w]
|
135
|
+
end
|
128
136
|
end
|
129
137
|
|
130
138
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013
|
1
|
+
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -21,7 +21,7 @@ class ReplicaSetCountTest < Test::Unit::TestCase
|
|
21
21
|
@client = MongoReplicaSetClient.new(@rs.repl_set_seeds, :read => :primary_preferred)
|
22
22
|
assert @client.primary_pool
|
23
23
|
@primary = MongoClient.new(@client.primary_pool.host, @client.primary_pool.port)
|
24
|
-
@db = @client.db(
|
24
|
+
@db = @client.db(TEST_DB)
|
25
25
|
@db.drop_collection("test-sets")
|
26
26
|
@coll = @db.collection("test-sets")
|
27
27
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013
|
1
|
+
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -67,7 +67,7 @@ class ReplicaSetCursorTest < Test::Unit::TestCase
|
|
67
67
|
# Setup ReplicaSet Connection
|
68
68
|
@client = MongoReplicaSetClient.new(@rs.repl_set_seeds, :read => read)
|
69
69
|
|
70
|
-
@db = @client.db(
|
70
|
+
@db = @client.db(TEST_DB)
|
71
71
|
@db.drop_collection("cursor_tests")
|
72
72
|
@coll = @db.collection("cursor_tests")
|
73
73
|
insert_docs
|
@@ -107,24 +107,24 @@ class ReplicaSetCursorTest < Test::Unit::TestCase
|
|
107
107
|
read_opts[:comment] = object_id
|
108
108
|
|
109
109
|
# set profiling level to 2 on client and member to which the query will be routed
|
110
|
-
@client.db(
|
110
|
+
@client.db(TEST_DB).profiling_level = :all
|
111
111
|
@client.secondaries.each do |node|
|
112
112
|
node = Mongo::MongoClient.new(node[0], node[1], :slave_ok => true)
|
113
|
-
node.db(
|
113
|
+
node.db(TEST_DB).profiling_level = :all
|
114
114
|
end
|
115
115
|
|
116
116
|
@cursor = @coll.find({}, read_opts)
|
117
117
|
@cursor.next
|
118
118
|
|
119
119
|
# on client and other members set profiling level to 0
|
120
|
-
@client.db(
|
120
|
+
@client.db(TEST_DB).profiling_level = :off
|
121
121
|
@client.secondaries.each do |node|
|
122
122
|
node = Mongo::MongoClient.new(node[0], node[1], :slave_ok => true)
|
123
|
-
node.db(
|
123
|
+
node.db(TEST_DB).profiling_level = :off
|
124
124
|
end
|
125
125
|
# do a query on system.profile of the reader to see if it was used for the query
|
126
|
-
profiled_queries = @read.db(
|
127
|
-
'ns' => "#{
|
126
|
+
profiled_queries = @read.db(TEST_DB).collection('system.profile').find({
|
127
|
+
'ns' => "#{TEST_DB}.cursor_tests", "query.$comment" => object_id })
|
128
128
|
|
129
129
|
assert_equal 1, profiled_queries.count
|
130
130
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013
|
1
|
+
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -19,7 +19,8 @@ class ReplicaSetInsertTest < Test::Unit::TestCase
|
|
19
19
|
def setup
|
20
20
|
ensure_cluster(:rs)
|
21
21
|
@client = MongoReplicaSetClient.new @rs.repl_set_seeds
|
22
|
-
@
|
22
|
+
@version = @client.server_version
|
23
|
+
@db = @client.db(TEST_DB)
|
23
24
|
@db.drop_collection("test-sets")
|
24
25
|
@coll = @db.collection("test-sets")
|
25
26
|
end
|
@@ -61,4 +62,65 @@ class ReplicaSetInsertTest < Test::Unit::TestCase
|
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
65
|
+
context "Bulk API CollectionView" do
|
66
|
+
setup do
|
67
|
+
setup
|
68
|
+
end
|
69
|
+
|
70
|
+
should "handle error with deferred write concern error - spec Merging Results" do
|
71
|
+
with_write_commands_and_operations(@db.connection) do |wire_version|
|
72
|
+
@coll.remove
|
73
|
+
@coll.ensure_index(BSON::OrderedHash[:a, Mongo::ASCENDING], {:unique => true})
|
74
|
+
bulk = @coll.initialize_ordered_bulk_op
|
75
|
+
bulk.insert({:a => 1})
|
76
|
+
bulk.find({:a => 2}).upsert.update({'$set' => {:a => 2}})
|
77
|
+
bulk.insert({:a => 1})
|
78
|
+
ex = assert_raise BulkWriteError do
|
79
|
+
bulk.execute({:w => 5, :wtimeout => 1})
|
80
|
+
end
|
81
|
+
result = ex.result
|
82
|
+
assert_match_document(
|
83
|
+
{
|
84
|
+
"ok" => 1,
|
85
|
+
"n" => 1,
|
86
|
+
"writeConcernError" => [
|
87
|
+
{
|
88
|
+
"errmsg" => /waiting for replication timed out|timed out waiting for slaves|timeout/,
|
89
|
+
"code" => 64,
|
90
|
+
"errInfo" => {"wtimeout" => true},
|
91
|
+
"index" => 0
|
92
|
+
}
|
93
|
+
],
|
94
|
+
"code" => 65,
|
95
|
+
"errmsg" => "batch item errors occurred",
|
96
|
+
"nInserted" => 1
|
97
|
+
}, result, "wire_version:#{wire_version}")
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
should "handle unordered errors with deferred write concern error - spec Merging Results" do # TODO - spec review
|
102
|
+
with_write_commands_and_operations(@db.connection) do |wire_version|
|
103
|
+
@coll.remove
|
104
|
+
@coll.ensure_index(BSON::OrderedHash[:a, Mongo::ASCENDING], {:unique => true})
|
105
|
+
bulk = @coll.initialize_unordered_bulk_op
|
106
|
+
bulk.insert({:a => 1})
|
107
|
+
bulk.find({:a => 2}).upsert.update({'$set' => {:a => 1}})
|
108
|
+
bulk.insert({:a => 3})
|
109
|
+
ex = assert_raise BulkWriteError do
|
110
|
+
bulk.execute({:w => 5, :wtimeout => 1})
|
111
|
+
end
|
112
|
+
result = ex.result # unordered varies, don't use assert_bulk_exception
|
113
|
+
assert_equal(1, result["ok"], "wire_version:#{wire_version}")
|
114
|
+
assert_equal(2, result["n"], "wire_version:#{wire_version}")
|
115
|
+
assert(result["nInserted"] >= 1, "wire_version:#{wire_version}")
|
116
|
+
assert_equal(65, result["code"], "wire_version:#{wire_version}")
|
117
|
+
assert_equal("batch item errors occurred", result["errmsg"], "wire_version:#{wire_version}")
|
118
|
+
assert(result["writeErrors"].size >= 1, "wire_version:#{wire_version}")
|
119
|
+
assert(result["writeConcernError"].size >= 1, "wire_version:#{wire_version}") if wire_version >= 2
|
120
|
+
assert(@coll.size >= 1, "wire_version:#{wire_version}")
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
|
64
126
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013
|
1
|
+
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -29,25 +29,31 @@ class MaxValuesTest < Test::Unit::TestCase
|
|
29
29
|
}
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
33
|
-
assert @client.max_message_size
|
32
|
+
def test_initial_max_and_min_values
|
34
33
|
assert @client.max_bson_size
|
34
|
+
assert @client.max_message_size
|
35
|
+
assert @client.max_wire_version
|
36
|
+
assert @client.min_wire_version
|
35
37
|
end
|
36
38
|
|
37
|
-
def
|
39
|
+
def test_updated_max_and_min_sizes_after_node_config_change
|
38
40
|
@db.stubs(:command).returns(
|
39
41
|
@ismaster.merge({'ismaster' => true}),
|
40
42
|
@ismaster.merge({'secondary' => true, 'maxMessageSizeBytes' => 1024 * MESSAGE_SIZE_FACTOR}),
|
41
|
-
@ismaster.merge({'secondary' => true, 'maxBsonObjectSize' => 1024})
|
43
|
+
@ismaster.merge({'secondary' => true, 'maxBsonObjectSize' => 1024}),
|
44
|
+
@ismaster.merge({'secondary' => true, 'maxWireVersion' => 0}),
|
45
|
+
@ismaster.merge({'secondary' => true, 'minWireVersion' => 0})
|
42
46
|
)
|
43
47
|
@client.local_manager.stubs(:refresh_required?).returns(true)
|
44
48
|
@client.refresh
|
45
49
|
|
46
50
|
assert_equal 1024, @client.max_bson_size
|
47
51
|
assert_equal 1024 * MESSAGE_SIZE_FACTOR, @client.max_message_size
|
52
|
+
assert_equal 0, @client.max_wire_version
|
53
|
+
assert_equal 0, @client.min_wire_version
|
48
54
|
end
|
49
55
|
|
50
|
-
def
|
56
|
+
def test_no_values_in_config
|
51
57
|
@db.stubs(:command).returns(
|
52
58
|
@ismaster.merge({'ismaster' => true}),
|
53
59
|
@ismaster.merge({'secondary' => true}),
|
@@ -58,6 +64,8 @@ class MaxValuesTest < Test::Unit::TestCase
|
|
58
64
|
|
59
65
|
assert_equal DEFAULT_MAX_BSON_SIZE, @client.max_bson_size
|
60
66
|
assert_equal DEFAULT_MAX_BSON_SIZE * MESSAGE_SIZE_FACTOR, @client.max_message_size
|
67
|
+
assert_equal 0, @client.max_wire_version
|
68
|
+
assert_equal 0, @client.min_wire_version
|
61
69
|
end
|
62
70
|
|
63
71
|
def test_only_bson_size_in_config
|
@@ -71,20 +79,61 @@ class MaxValuesTest < Test::Unit::TestCase
|
|
71
79
|
|
72
80
|
assert_equal 1024, @client.max_bson_size
|
73
81
|
assert_equal 1024 * MESSAGE_SIZE_FACTOR, @client.max_message_size
|
82
|
+
assert_equal 0, @client.max_wire_version
|
83
|
+
assert_equal 0, @client.min_wire_version
|
74
84
|
end
|
75
85
|
|
76
|
-
def
|
86
|
+
def test_values_in_config
|
87
|
+
#ismaster is called three times on the first node
|
77
88
|
@db.stubs(:command).returns(
|
78
|
-
@ismaster.merge({'ismaster' => true, 'maxMessageSizeBytes' => 1024 * 2 * MESSAGE_SIZE_FACTOR,
|
79
|
-
|
80
|
-
@ismaster.merge({'
|
89
|
+
@ismaster.merge({'ismaster' => true, 'maxMessageSizeBytes' => 1024 * 2 * MESSAGE_SIZE_FACTOR,
|
90
|
+
'maxBsonObjectSize' => 1024, 'maxWireVersion' => 2, 'minWireVersion' => 1}),
|
91
|
+
@ismaster.merge({'ismaster' => true, 'maxMessageSizeBytes' => 1024 * 2 * MESSAGE_SIZE_FACTOR,
|
92
|
+
'maxBsonObjectSize' => 1024, 'maxWireVersion' => 2, 'minWireVersion' => 1}),
|
93
|
+
@ismaster.merge({'ismaster' => true, 'maxMessageSizeBytes' => 1024 * 2 * MESSAGE_SIZE_FACTOR,
|
94
|
+
'maxBsonObjectSize' => 1024, 'maxWireVersion' => 2, 'minWireVersion' => 1}),
|
95
|
+
@ismaster.merge({'secondary' => true, 'maxMessageSizeBytes' => 1024 * 2 * MESSAGE_SIZE_FACTOR,
|
96
|
+
'maxBsonObjectSize' => 1024, 'maxWireVersion' => 2, 'minWireVersion' => 0}),
|
97
|
+
@ismaster.merge({'secondary' => true, 'maxMessageSizeBytes' => 1024 * 2 * MESSAGE_SIZE_FACTOR,
|
98
|
+
'maxBsonObjectSize' => 1024, 'maxWireVersion' => 1, 'minWireVersion' => 0})
|
81
99
|
)
|
82
100
|
@client.local_manager.stubs(:refresh_required?).returns(true)
|
83
101
|
@client.refresh
|
84
102
|
|
85
103
|
assert_equal 1024, @client.max_bson_size
|
86
104
|
assert_equal 1024 * 2 * MESSAGE_SIZE_FACTOR, @client.max_message_size
|
105
|
+
assert_equal 1, @client.max_wire_version # minimum of all max_wire_version
|
106
|
+
assert_equal 1, @client.min_wire_version # maximum of all min_wire_version
|
87
107
|
end
|
88
108
|
|
109
|
+
def test_wire_version_not_in_range
|
110
|
+
min_wire_version, max_wire_version = [Mongo::MongoClient::MIN_WIRE_VERSION-1, Mongo::MongoClient::MIN_WIRE_VERSION-1]
|
111
|
+
#ismaster is called three times on the first node
|
112
|
+
@db.stubs(:command).returns(
|
113
|
+
@ismaster.merge({'ismaster' => true, 'maxWireVersion' => max_wire_version, 'minWireVersion' => min_wire_version}),
|
114
|
+
@ismaster.merge({'ismaster' => true, 'maxWireVersion' => max_wire_version, 'minWireVersion' => min_wire_version}),
|
115
|
+
@ismaster.merge({'ismaster' => true, 'maxWireVersion' => max_wire_version, 'minWireVersion' => min_wire_version}),
|
116
|
+
@ismaster.merge({'secondary' => true, 'maxWireVersion' => max_wire_version, 'minWireVersion' => min_wire_version}),
|
117
|
+
@ismaster.merge({'secondary' => true, 'maxWireVersion' => max_wire_version, 'minWireVersion' => min_wire_version})
|
118
|
+
)
|
119
|
+
@client.local_manager.stubs(:refresh_required?).returns(true)
|
120
|
+
assert_raises Mongo::ConnectionFailure do
|
121
|
+
@client.refresh
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_use_write_command
|
126
|
+
with_write_commands(@client) do
|
127
|
+
assert_true @client.use_write_command?({:w => 1})
|
128
|
+
assert_false @client.use_write_command?({:w => 0})
|
129
|
+
end
|
130
|
+
with_write_operations(@client) do
|
131
|
+
assert_false @client.use_write_command?({:w => 1})
|
132
|
+
assert_false @client.use_write_command?({:w => 0})
|
133
|
+
end
|
134
|
+
@client.local_manager.primary_pool.node.expects(:wire_version_feature?).at_least_once.returns(true)
|
135
|
+
assert_true @client.use_write_command?({:w => 1})
|
136
|
+
assert_false @client.use_write_command?({:w => 0})
|
137
|
+
end
|
89
138
|
end
|
90
139
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013
|
1
|
+
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -18,7 +18,7 @@ class ReplicaSetPinningTest < Test::Unit::TestCase
|
|
18
18
|
def setup
|
19
19
|
ensure_cluster(:rs)
|
20
20
|
@client = MongoReplicaSetClient.new(@rs.repl_set_seeds, :name => @rs.repl_set_name)
|
21
|
-
@db = @client.db(
|
21
|
+
@db = @client.db(TEST_DB)
|
22
22
|
@coll = @db.collection("test-sets")
|
23
23
|
@coll.insert({:a => 1})
|
24
24
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013
|
1
|
+
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -19,7 +19,7 @@ class ReplicaSetQueryTest < Test::Unit::TestCase
|
|
19
19
|
def setup
|
20
20
|
ensure_cluster(:rs)
|
21
21
|
@client = MongoReplicaSetClient.new @rs.repl_set_seeds
|
22
|
-
@db = @client.db(
|
22
|
+
@db = @client.db(TEST_DB)
|
23
23
|
@db.drop_collection("test-sets")
|
24
24
|
@coll = @db.collection("test-sets")
|
25
25
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013
|
1
|
+
# Copyright (C) 2009-2013 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -22,7 +22,7 @@ class ReadPreferenceTest < Test::Unit::TestCase
|
|
22
22
|
# Insert data
|
23
23
|
primary = @rs.primary
|
24
24
|
conn = Connection.new(primary.host, primary.port)
|
25
|
-
db = conn.db(
|
25
|
+
db = conn.db(TEST_DB)
|
26
26
|
coll = db.collection("test-sets")
|
27
27
|
coll.save({:a => 20}, {:w => 2})
|
28
28
|
end
|
@@ -103,7 +103,7 @@ class ReadPreferenceTest < Test::Unit::TestCase
|
|
103
103
|
|
104
104
|
# Test that reads are going to the right members
|
105
105
|
assert_raise_error ConnectionFailure do
|
106
|
-
@primary[
|
106
|
+
@primary[TEST_DB]['test-sets'].find_one
|
107
107
|
end
|
108
108
|
assert_query_route(@primary_preferred, @secondary_direct)
|
109
109
|
assert_query_route(@secondary, @secondary_direct)
|
@@ -142,7 +142,7 @@ class ReadPreferenceTest < Test::Unit::TestCase
|
|
142
142
|
assert_query_route(@primary, @primary_direct)
|
143
143
|
assert_query_route(@primary_preferred, @primary_direct)
|
144
144
|
assert_raise_error ConnectionFailure do
|
145
|
-
@secondary[
|
145
|
+
@secondary[TEST_DB]['test-sets'].find_one
|
146
146
|
end
|
147
147
|
assert_query_route(@secondary_preferred, @primary_direct)
|
148
148
|
|
@@ -166,7 +166,7 @@ class ReadPreferenceTest < Test::Unit::TestCase
|
|
166
166
|
|
167
167
|
def test_write_lots_of_data
|
168
168
|
@conn = make_connection(:secondary_preferred)
|
169
|
-
@db = @conn[
|
169
|
+
@db = @conn[TEST_DB]
|
170
170
|
@coll = @db.collection("test-sets", {:w => 2})
|
171
171
|
|
172
172
|
6000.times do |n|
|
@@ -206,7 +206,7 @@ class ReadPreferenceTest < Test::Unit::TestCase
|
|
206
206
|
#puts "#{test_connection.read_pool.port} #{expected_target.read_pool.port}"
|
207
207
|
queries_before = query_count(expected_target)
|
208
208
|
assert_nothing_raised do
|
209
|
-
test_connection[
|
209
|
+
test_connection[TEST_DB]['test-sets'].find_one
|
210
210
|
end
|
211
211
|
queries_after = query_count(expected_target)
|
212
212
|
assert_equal 1, queries_after - queries_before
|