mongo 1.6.2 → 1.6.4
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.
- data/README.md +44 -22
- data/Rakefile +17 -4
- data/docs/GridFS.md +2 -2
- data/docs/HISTORY.md +15 -1
- data/docs/RELEASES.md +4 -4
- data/docs/TUTORIAL.md +12 -0
- data/docs/WRITE_CONCERN.md +1 -1
- data/lib/mongo/collection.rb +1 -1
- data/lib/mongo/connection.rb +35 -47
- data/lib/mongo/cursor.rb +10 -9
- data/lib/mongo/db.rb +1 -1
- data/lib/mongo/gridfs/grid_ext.rb +4 -4
- data/lib/mongo/gridfs/grid_file_system.rb +3 -3
- data/lib/mongo/gridfs/grid_io.rb +1 -1
- data/lib/mongo/networking.rb +5 -0
- data/lib/mongo/repl_set_connection.rb +47 -21
- data/lib/mongo/util/conversions.rb +23 -0
- data/lib/mongo/util/logging.rb +13 -18
- data/lib/mongo/util/node.rb +1 -5
- data/lib/mongo/util/pool.rb +0 -1
- data/lib/mongo/util/ssl_socket.rb +3 -1
- data/lib/mongo/util/support.rb +1 -0
- data/lib/mongo/util/tcp_socket.rb +15 -32
- data/lib/mongo/util/uri_parser.rb +100 -35
- data/lib/mongo/version.rb +1 -1
- data/test/auxillary/1.4_features.rb +1 -1
- data/test/auxillary/authentication_test.rb +1 -1
- data/test/auxillary/autoreconnect_test.rb +1 -1
- data/test/auxillary/fork_test.rb +1 -1
- data/test/auxillary/repl_set_auth_test.rb +1 -1
- data/test/auxillary/slave_connection_test.rb +1 -1
- data/test/auxillary/threaded_authentication_test.rb +1 -1
- data/test/bson/binary_test.rb +1 -1
- data/test/bson/bson_test.rb +8 -1
- data/test/bson/byte_buffer_test.rb +1 -1
- data/test/bson/hash_with_indifferent_access_test.rb +1 -1
- data/test/bson/json_test.rb +1 -1
- data/test/bson/object_id_test.rb +11 -1
- data/test/bson/ordered_hash_test.rb +1 -1
- data/test/bson/timestamp_test.rb +1 -1
- data/test/collection_test.rb +1 -1
- data/test/connection_test.rb +25 -1
- data/test/conversions_test.rb +1 -1
- data/test/cursor_fail_test.rb +1 -1
- data/test/cursor_message_test.rb +1 -1
- data/test/cursor_test.rb +1 -1
- data/test/db_api_test.rb +57 -3
- data/test/db_connection_test.rb +1 -1
- data/test/db_test.rb +1 -1
- data/test/grid_file_system_test.rb +1 -1
- data/test/grid_io_test.rb +30 -1
- data/test/grid_test.rb +1 -1
- data/test/pool_test.rb +1 -1
- data/test/replica_sets/basic_test.rb +10 -0
- data/test/replica_sets/connect_test.rb +45 -0
- data/test/replica_sets/read_preference_test.rb +2 -1
- data/test/replica_sets/refresh_with_threads_test.rb +2 -0
- data/test/replica_sets/rs_test_helper.rb +1 -1
- data/test/safe_test.rb +1 -1
- data/test/support_test.rb +1 -1
- data/test/threading/threading_with_large_pool_test.rb +1 -1
- data/test/threading_test.rb +1 -1
- data/test/timeout_test.rb +1 -1
- data/test/tools/repl_set_manager.rb +1 -0
- data/test/unit/collection_test.rb +1 -1
- data/test/unit/connection_test.rb +89 -1
- data/test/unit/cursor_test.rb +1 -1
- data/test/unit/db_test.rb +1 -1
- data/test/unit/grid_test.rb +1 -1
- data/test/unit/node_test.rb +1 -1
- data/test/unit/pool_manager_test.rb +1 -1
- data/test/unit/pool_test.rb +1 -1
- data/test/unit/read_test.rb +1 -1
- data/test/unit/safe_test.rb +1 -1
- data/test/uri_test.rb +25 -5
- metadata +5 -5
@@ -42,7 +42,7 @@ class ReadPreferenceTest < Test::Unit::TestCase
|
|
42
42
|
@rs.add_arbiter
|
43
43
|
@rs.remove_secondary_node
|
44
44
|
|
45
|
-
@conn = ReplSetConnection.new(build_seeds(
|
45
|
+
@conn = ReplSetConnection.new(build_seeds(3), :read => :secondary_only)
|
46
46
|
|
47
47
|
@db = @conn.db(MONGO_TEST_DB)
|
48
48
|
@coll = @db.collection("test-sets")
|
@@ -108,6 +108,7 @@ class ReadPreferenceTest < Test::Unit::TestCase
|
|
108
108
|
@coll.save({:a => 50}, :safe => {:w => 2, :wtimeout => 10000})
|
109
109
|
end
|
110
110
|
@rs.restart_killed_nodes
|
111
|
+
sleep(1)
|
111
112
|
@coll.save({:a => 50}, :safe => {:w => 2, :wtimeout => 10000})
|
112
113
|
assert_equal 4, @coll.find.to_a.length
|
113
114
|
end
|
data/test/safe_test.rb
CHANGED
data/test/support_test.rb
CHANGED
data/test/threading_test.rb
CHANGED
data/test/timeout_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
include Mongo
|
3
3
|
|
4
4
|
class ConnectionTest < Test::Unit::TestCase
|
@@ -130,5 +130,93 @@ class ConnectionTest < Test::Unit::TestCase
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
end
|
133
|
+
|
134
|
+
context "initializing with ENV['MONGODB_URI']" do
|
135
|
+
setup do
|
136
|
+
@old_mongodb_uri = ENV['MONGODB_URI']
|
137
|
+
end
|
138
|
+
|
139
|
+
teardown do
|
140
|
+
ENV['MONGODB_URI'] = @old_mongodb_uri
|
141
|
+
end
|
142
|
+
|
143
|
+
should "parse a simple uri" do
|
144
|
+
ENV['MONGODB_URI'] = "mongodb://localhost?connect=false"
|
145
|
+
@conn = Connection.new
|
146
|
+
assert_equal ['localhost', 27017], @conn.host_to_try
|
147
|
+
end
|
148
|
+
|
149
|
+
should "allow a complex host names" do
|
150
|
+
host_name = "foo.bar-12345.org"
|
151
|
+
ENV['MONGODB_URI'] = "mongodb://#{host_name}?connect=false"
|
152
|
+
@conn = Connection.new
|
153
|
+
assert_equal [host_name, 27017], @conn.host_to_try
|
154
|
+
end
|
155
|
+
|
156
|
+
should "allow db without username and password" do
|
157
|
+
host_name = "foo.bar-12345.org"
|
158
|
+
ENV['MONGODB_URI'] = "mongodb://#{host_name}/foo?connect=false"
|
159
|
+
@conn = Connection.new
|
160
|
+
assert_equal [host_name, 27017], @conn.host_to_try
|
161
|
+
end
|
162
|
+
|
163
|
+
should "set safe options on connection" do
|
164
|
+
host_name = "localhost"
|
165
|
+
opts = "safe=true&w=2&wtimeoutMS=1000&fsync=true&journal=true&connect=false"
|
166
|
+
ENV['MONGODB_URI'] = "mongodb://#{host_name}/foo?#{opts}"
|
167
|
+
@conn = Connection.new
|
168
|
+
assert_equal({:w => 2, :wtimeout => 1000, :fsync => true, :j => true}, @conn.safe)
|
169
|
+
end
|
170
|
+
|
171
|
+
should "set timeout options on connection" do
|
172
|
+
host_name = "localhost"
|
173
|
+
opts = "connectTimeoutMS=1000&socketTimeoutMS=5000&connect=false"
|
174
|
+
ENV['MONGODB_URI'] = "mongodb://#{host_name}/foo?#{opts}"
|
175
|
+
@conn = Connection.new
|
176
|
+
assert_equal 1, @conn.connect_timeout
|
177
|
+
assert_equal 5, @conn.op_timeout
|
178
|
+
end
|
179
|
+
|
180
|
+
should "parse a uri with a hyphen & underscore in the username or password" do
|
181
|
+
ENV['MONGODB_URI'] = "mongodb://hyphen-user_name:p-s_s@localhost:27017/db?connect=false"
|
182
|
+
@conn = Connection.new
|
183
|
+
assert_equal ['localhost', 27017], @conn.host_to_try
|
184
|
+
auth_hash = { 'db_name' => 'db', 'username' => 'hyphen-user_name', "password" => 'p-s_s' }
|
185
|
+
assert_equal auth_hash, @conn.auths[0]
|
186
|
+
end
|
187
|
+
|
188
|
+
should "attempt to connect" do
|
189
|
+
TCPSocket.stubs(:new).returns(new_mock_socket)
|
190
|
+
ENV['MONGODB_URI'] = "mongodb://localhost?connect=false" # connect=false ??
|
191
|
+
@conn = Connection.new
|
192
|
+
|
193
|
+
admin_db = new_mock_db
|
194
|
+
admin_db.expects(:command).returns({'ok' => 1, 'ismaster' => 1})
|
195
|
+
@conn.expects(:[]).with('admin').returns(admin_db)
|
196
|
+
@conn.connect
|
197
|
+
end
|
198
|
+
|
199
|
+
should "raise an error on invalid uris" do
|
200
|
+
ENV['MONGODB_URI'] = "mongo://localhost"
|
201
|
+
assert_raise MongoArgumentError do
|
202
|
+
Connection.new
|
203
|
+
end
|
204
|
+
|
205
|
+
ENV['MONGODB_URI'] = "mongodb://localhost:abc"
|
206
|
+
assert_raise MongoArgumentError do
|
207
|
+
Connection.new
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
should "require all of username, if password and db are specified" do
|
212
|
+
ENV['MONGODB_URI'] = "mongodb://kyle:jones@localhost/db?connect=false"
|
213
|
+
assert Connection.new
|
214
|
+
|
215
|
+
ENV['MONGODB_URI'] = "mongodb://kyle:password@localhost"
|
216
|
+
assert_raise MongoArgumentError do
|
217
|
+
Connection.new
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
133
221
|
end
|
134
222
|
end
|
data/test/unit/cursor_test.rb
CHANGED
data/test/unit/db_test.rb
CHANGED
data/test/unit/grid_test.rb
CHANGED
data/test/unit/node_test.rb
CHANGED
data/test/unit/pool_test.rb
CHANGED
data/test/unit/read_test.rb
CHANGED
data/test/unit/safe_test.rb
CHANGED
data/test/uri_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require File.expand_path("../test_helper", __FILE__)
|
2
2
|
|
3
3
|
class URITest < Test::Unit::TestCase
|
4
4
|
include Mongo
|
@@ -63,9 +63,10 @@ class URITest < Test::Unit::TestCase
|
|
63
63
|
assert_equal "test", parser.auths[1]["db_name"]
|
64
64
|
end
|
65
65
|
|
66
|
-
def
|
66
|
+
def test_opts_with_semincolon_separator
|
67
67
|
parser = Mongo::URIParser.new('mongodb://localhost:27018?connect=direct;slaveok=true;safe=true')
|
68
68
|
assert_equal 'direct', parser.connect
|
69
|
+
assert parser.direct?
|
69
70
|
assert parser.slaveok
|
70
71
|
assert parser.safe
|
71
72
|
end
|
@@ -73,10 +74,25 @@ class URITest < Test::Unit::TestCase
|
|
73
74
|
def test_opts_with_amp_separator
|
74
75
|
parser = Mongo::URIParser.new('mongodb://localhost:27018?connect=direct&slaveok=true&safe=true')
|
75
76
|
assert_equal 'direct', parser.connect
|
77
|
+
assert parser.direct?
|
76
78
|
assert parser.slaveok
|
77
79
|
assert parser.safe
|
78
80
|
end
|
79
81
|
|
82
|
+
def test_opts_with_uri_encoded_stuff
|
83
|
+
parser = Mongo::URIParser.new('mongodb://localhost:27018?connect=%64%69%72%65%63%74&slaveok=%74%72%75%65&safe=true')
|
84
|
+
assert_equal 'direct', parser.connect
|
85
|
+
assert parser.direct?
|
86
|
+
assert parser.slaveok
|
87
|
+
assert parser.safe
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_opts_made_invalid_by_mixed_separators
|
91
|
+
assert_raise_error MongoArgumentError, "must not mix URL separators ; and &" do
|
92
|
+
Mongo::URIParser.new('mongodb://localhost:27018?replicaset=foo;bar&slaveok=true&safe=true')
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
80
96
|
def test_opts_safe
|
81
97
|
parser = Mongo::URIParser.new('mongodb://localhost:27018?safe=true;w=2;journal=true;fsync=true;wtimeoutMS=200')
|
82
98
|
assert parser.safe
|
@@ -93,12 +109,16 @@ class URITest < Test::Unit::TestCase
|
|
93
109
|
end
|
94
110
|
|
95
111
|
def test_opts_replica_set
|
96
|
-
assert_raise_error MongoArgumentError, "specify that connect=replicaset" do
|
97
|
-
Mongo::URIParser.new('mongodb://localhost:27018?replicaset=foo')
|
98
|
-
end
|
99
112
|
parser = Mongo::URIParser.new('mongodb://localhost:27018?connect=replicaset;replicaset=foo')
|
100
113
|
assert_equal 'foo', parser.replicaset
|
101
114
|
assert_equal 'replicaset', parser.connect
|
115
|
+
assert parser.replicaset?
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_opts_conflicting_replica_set
|
119
|
+
assert_raise_error MongoArgumentError, "connect=direct conflicts with setting a replicaset name" do
|
120
|
+
Mongo::URIParser.new('mongodb://localhost:27018?connect=direct;replicaset=foo')
|
121
|
+
end
|
102
122
|
end
|
103
123
|
|
104
124
|
def test_case_insensitivity
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2012-
|
15
|
+
date: 2012-06-06 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: bson
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
requirements:
|
22
22
|
- - ~>
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 1.6.
|
24
|
+
version: 1.6.4
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.6.
|
32
|
+
version: 1.6.4
|
33
33
|
description: A Ruby driver for MongoDB. For more information about Mongo, see http://www.mongodb.org.
|
34
34
|
email: mongodb-dev@googlegroups.com
|
35
35
|
executables:
|
@@ -165,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
165
|
version: '0'
|
166
166
|
requirements: []
|
167
167
|
rubyforge_project:
|
168
|
-
rubygems_version: 1.8.
|
168
|
+
rubygems_version: 1.8.24
|
169
169
|
signing_key:
|
170
170
|
specification_version: 3
|
171
171
|
summary: Ruby driver for MongoDB
|