mongo 1.8.6 → 1.9.0
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/Rakefile +13 -1
- data/VERSION +1 -1
- data/bin/mongo_console +15 -0
- data/lib/mongo.rb +14 -0
- data/lib/mongo/collection.rb +80 -42
- data/lib/mongo/cursor.rb +15 -1
- data/lib/mongo/db.rb +56 -19
- data/lib/mongo/exceptions.rb +14 -0
- data/lib/mongo/gridfs/grid.rb +16 -3
- data/lib/mongo/gridfs/grid_ext.rb +14 -0
- data/lib/mongo/gridfs/grid_file_system.rb +16 -3
- data/lib/mongo/gridfs/grid_io.rb +17 -3
- data/lib/mongo/legacy.rb +14 -0
- data/lib/mongo/mongo_client.rb +93 -40
- data/lib/mongo/mongo_replica_set_client.rb +21 -0
- data/lib/mongo/mongo_sharded_client.rb +15 -1
- data/lib/mongo/networking.rb +14 -0
- data/lib/mongo/util/conversions.rb +16 -2
- data/lib/mongo/util/core_ext.rb +14 -31
- data/lib/mongo/util/logging.rb +23 -7
- data/lib/mongo/util/node.rb +17 -2
- data/lib/mongo/util/pool.rb +17 -1
- data/lib/mongo/util/pool_manager.rb +15 -2
- data/lib/mongo/util/read_preference.rb +14 -0
- data/lib/mongo/util/server_version.rb +15 -0
- data/lib/mongo/util/sharding_pool_manager.rb +13 -0
- data/lib/mongo/util/socket_util.rb +14 -0
- data/lib/mongo/util/ssl_socket.rb +48 -7
- data/lib/mongo/util/support.rb +14 -0
- data/lib/mongo/util/tcp_socket.rb +18 -4
- data/lib/mongo/util/thread_local_variable_manager.rb +14 -0
- data/lib/mongo/util/unix_socket.rb +20 -6
- data/lib/mongo/util/uri_parser.rb +16 -8
- data/lib/mongo/util/write_concern.rb +16 -2
- data/test/functional/authentication_test.rb +26 -1
- data/test/functional/collection_test.rb +140 -41
- data/test/functional/connection_test.rb +19 -6
- data/test/functional/conversions_test.rb +14 -0
- data/test/functional/cursor_fail_test.rb +14 -0
- data/test/functional/cursor_message_test.rb +14 -0
- data/test/functional/cursor_test.rb +15 -1
- data/test/functional/db_api_test.rb +15 -1
- data/test/functional/db_connection_test.rb +14 -0
- data/test/functional/db_test.rb +14 -0
- data/test/functional/grid_file_system_test.rb +16 -4
- data/test/functional/grid_io_test.rb +14 -0
- data/test/functional/grid_test.rb +14 -0
- data/test/functional/pool_test.rb +22 -6
- data/test/functional/safe_test.rb +14 -0
- data/test/functional/ssl_test.rb +109 -0
- data/test/functional/support_test.rb +14 -0
- data/test/functional/threading_test.rb +22 -8
- data/test/functional/timeout_test.rb +20 -6
- data/test/functional/uri_test.rb +14 -14
- data/test/functional/write_concern_test.rb +14 -0
- data/test/replica_set/authentication_test.rb +28 -2
- data/test/replica_set/basic_test.rb +14 -0
- data/test/replica_set/client_test.rb +14 -0
- data/test/replica_set/complex_connect_test.rb +14 -0
- data/test/replica_set/connection_test.rb +14 -0
- data/test/replica_set/count_test.rb +14 -0
- data/test/replica_set/cursor_test.rb +14 -0
- data/test/replica_set/insert_test.rb +14 -0
- data/test/replica_set/max_values_test.rb +14 -0
- data/test/replica_set/pinning_test.rb +14 -0
- data/test/replica_set/query_test.rb +14 -0
- data/test/replica_set/read_preference_test.rb +14 -0
- data/test/replica_set/refresh_test.rb +14 -0
- data/test/replica_set/replication_ack_test.rb +14 -0
- data/test/replica_set/ssl_test.rb +114 -0
- data/test/sharded_cluster/basic_test.rb +14 -0
- data/test/shared/authentication.rb +55 -0
- data/test/test_helper.rb +15 -1
- data/test/threading/basic_test.rb +14 -0
- data/test/tools/mongo_config.rb +16 -1
- data/test/tools/mongo_config_test.rb +15 -1
- data/test/unit/client_test.rb +14 -0
- data/test/unit/collection_test.rb +14 -0
- data/test/unit/connection_test.rb +14 -0
- data/test/unit/cursor_test.rb +14 -0
- data/test/unit/db_test.rb +15 -1
- data/test/unit/grid_test.rb +14 -0
- data/test/unit/mongo_sharded_client_test.rb +14 -0
- data/test/unit/node_test.rb +15 -0
- data/test/unit/pool_manager_test.rb +15 -0
- data/test/unit/pool_test.rb +14 -0
- data/test/unit/read_pref_test.rb +14 -0
- data/test/unit/read_test.rb +14 -0
- data/test/unit/safe_test.rb +14 -0
- data/test/unit/sharding_pool_manager_test.rb +15 -0
- data/test/unit/util_test.rb +14 -0
- data/test/unit/write_concern_test.rb +15 -1
- metadata +8 -4
- metadata.gz.sig +0 -0
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
require 'mongo/exceptions'
|
3
17
|
require 'mongo/util/conversions'
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
require 'logger'
|
3
17
|
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
require 'logger'
|
3
17
|
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
require 'logger'
|
3
17
|
|
@@ -198,7 +212,7 @@ class CursorTest < Test::Unit::TestCase
|
|
198
212
|
@@coll.save({:t => 't1'})
|
199
213
|
@@coll.save({:t => 't1'})
|
200
214
|
@@coll.save({:t => 't1'})
|
201
|
-
sleep(
|
215
|
+
sleep(1)
|
202
216
|
t2 = Time.now
|
203
217
|
t2_id = ObjectId.from_time(t2)
|
204
218
|
@@coll.save({:t => 't2'})
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
|
3
17
|
class DBAPITest < Test::Unit::TestCase
|
@@ -614,7 +628,7 @@ HERE
|
|
614
628
|
:initial => {"count" => 0}, :reduce => "function (obj, prev) { prev.count++; }")[0]["count"]
|
615
629
|
|
616
630
|
finalize = "function (obj) { obj.f = obj.count - 1; }"
|
617
|
-
assert_equal 2, test.group(:initial => {"count" => 0},
|
631
|
+
assert_equal 2, test.group(:initial => {"count" => 0},
|
618
632
|
:reduce => "function (obj, prev) { prev.count++; }", :finalize => finalize)[0]["f"]
|
619
633
|
|
620
634
|
test.insert("a" => 2, "b" => 3)
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
|
3
17
|
class DBConnectionTest < Test::Unit::TestCase
|
data/test/functional/db_test.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
require 'digest/md5'
|
3
17
|
require 'stringio'
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
|
3
17
|
class GridFileSystemTest < Test::Unit::TestCase
|
@@ -73,7 +87,7 @@ class GridFileSystemTest < Test::Unit::TestCase
|
|
73
87
|
end
|
74
88
|
|
75
89
|
should "return the first n bytes even with an offset" do
|
76
|
-
data = @grid.open('sample.file', 'r') do |f|
|
90
|
+
data = @grid.open('sample.file', 'r') do |f|
|
77
91
|
f.seek(1000)
|
78
92
|
f.read(288888)
|
79
93
|
end
|
@@ -123,7 +137,6 @@ class GridFileSystemTest < Test::Unit::TestCase
|
|
123
137
|
@old = @grid.open('sample', 'r')
|
124
138
|
|
125
139
|
@new_data = "DATA" * 10
|
126
|
-
sleep(2)
|
127
140
|
@grid.open('sample', 'w') do |f|
|
128
141
|
f.write @new_data
|
129
142
|
end
|
@@ -145,7 +158,6 @@ class GridFileSystemTest < Test::Unit::TestCase
|
|
145
158
|
|
146
159
|
context "and on a second overwrite" do
|
147
160
|
setup do
|
148
|
-
sleep(2)
|
149
161
|
@new_data = "NEW" * 1000
|
150
162
|
@grid.open('sample', 'w') do |f|
|
151
163
|
f.write @new_data
|
@@ -176,7 +188,7 @@ class GridFileSystemTest < Test::Unit::TestCase
|
|
176
188
|
assert !@ids.include?(id)
|
177
189
|
assert_equal @versions, @db['fs.files'].find({'filename' => 'sample'}).count
|
178
190
|
end
|
179
|
-
|
191
|
+
|
180
192
|
should "delete old versions on write with :delete_old is passed in" do
|
181
193
|
@grid.open('sample', 'w', :delete_old => true) do |f|
|
182
194
|
f.write @new_data
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
|
3
17
|
class GridIOTest < Test::Unit::TestCase
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
include Mongo
|
3
17
|
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
require 'thread'
|
3
17
|
|
@@ -5,7 +19,7 @@ class PoolTest < Test::Unit::TestCase
|
|
5
19
|
include Mongo
|
6
20
|
|
7
21
|
def setup
|
8
|
-
@client ||= standard_connection({:pool_size =>
|
22
|
+
@client ||= standard_connection({:pool_size => 15, :pool_timeout => 5})
|
9
23
|
@db = @client.db(MONGO_TEST_DB)
|
10
24
|
@collection = @db.collection("pool_test")
|
11
25
|
end
|
@@ -18,7 +32,7 @@ class PoolTest < Test::Unit::TestCase
|
|
18
32
|
threads << Thread.new do
|
19
33
|
original_socket = pool.checkout
|
20
34
|
pool.checkin(original_socket)
|
21
|
-
|
35
|
+
500.times do
|
22
36
|
socket = pool.checkout
|
23
37
|
assert_equal original_socket, socket
|
24
38
|
pool.checkin(socket)
|
@@ -30,17 +44,19 @@ class PoolTest < Test::Unit::TestCase
|
|
30
44
|
end
|
31
45
|
|
32
46
|
def test_pool_affinity_max_size
|
33
|
-
|
47
|
+
docs = []
|
48
|
+
8000.times {|x| docs << {:value => x}}
|
49
|
+
@collection.insert(docs)
|
50
|
+
|
34
51
|
threads = []
|
35
52
|
threads << Thread.new do
|
36
53
|
@collection.find({"value" => {"$lt" => 100}}).each {|e| e}
|
37
54
|
Thread.pass
|
38
|
-
sleep(
|
55
|
+
sleep(0.125)
|
39
56
|
@collection.find({"value" => {"$gt" => 100}}).each {|e| e}
|
40
57
|
end
|
41
|
-
sleep(1)
|
42
58
|
threads << Thread.new do
|
43
|
-
@collection.find({'$where' => "function() {for(i=0;i<
|
59
|
+
@collection.find({'$where' => "function() {for(i=0;i<1000;i++) {this.value};}"}).each {|e| e}
|
44
60
|
end
|
45
61
|
threads.each(&:join)
|
46
62
|
end
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
include Mongo
|
3
17
|
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SSLCertValidationTest < Test::Unit::TestCase
|
4
|
+
include Mongo
|
5
|
+
|
6
|
+
CERT_PATH = "#{Dir.pwd}/test/fixtures/certificates/"
|
7
|
+
CLIENT_CERT = "#{CERT_PATH}client.pem"
|
8
|
+
CA_CERT = "#{CERT_PATH}ca.pem"
|
9
|
+
|
10
|
+
# This test doesn't connect, no server config required
|
11
|
+
def test_ssl_configuration
|
12
|
+
# raises when ssl=false and ssl opts specified
|
13
|
+
assert_raise MongoArgumentError do
|
14
|
+
MongoClient.new('server', 27017, :connect => false,
|
15
|
+
:ssl => false,
|
16
|
+
:ssl_cert => CLIENT_CERT)
|
17
|
+
end
|
18
|
+
|
19
|
+
# raises when ssl=nil and ssl opts specified
|
20
|
+
assert_raise MongoArgumentError do
|
21
|
+
MongoClient.new('server', 27017, :connect => false,
|
22
|
+
:ssl_key => CLIENT_CERT)
|
23
|
+
end
|
24
|
+
|
25
|
+
# raises when verify=true and no ca_cert
|
26
|
+
assert_raise MongoArgumentError do
|
27
|
+
MongoClient.new('server', 27017, :connect => false,
|
28
|
+
:ssl => true,
|
29
|
+
:ssl_key => CLIENT_CERT,
|
30
|
+
:ssl_cert => CLIENT_CERT,
|
31
|
+
:ssl_verify => true)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Requires MongoDB built with SSL and the follow options:
|
36
|
+
#
|
37
|
+
# mongod --dbpath /path/to/data/directory --sslOnNormalPorts \
|
38
|
+
# --sslPEMKeyFile /path/to/server.pem \
|
39
|
+
# --sslCAFile /path/to/ca.pem \
|
40
|
+
# --sslCRLFile /path/to/crl.pem \
|
41
|
+
# --sslWeakCertificateValidation
|
42
|
+
#
|
43
|
+
# Make sure you have 'server' as an alias for localhost in /etc/hosts
|
44
|
+
#
|
45
|
+
def test_ssl_basic
|
46
|
+
client = MongoClient.new('server', 27017, :connect => false,
|
47
|
+
:ssl => true)
|
48
|
+
assert client.connect
|
49
|
+
end
|
50
|
+
|
51
|
+
# Requires MongoDB built with SSL and the follow options:
|
52
|
+
#
|
53
|
+
# mongod --dbpath /path/to/data/directory --sslOnNormalPorts \
|
54
|
+
# --sslPEMKeyFile /path/to/server.pem \
|
55
|
+
# --sslCAFile /path/to/ca.pem \
|
56
|
+
# --sslCRLFile /path/to/crl.pem
|
57
|
+
#
|
58
|
+
# Make sure you have 'server' as an alias for localhost in /etc/hosts
|
59
|
+
#
|
60
|
+
def test_ssl_with_cert
|
61
|
+
client = MongoClient.new('server', 27017, :connect => false,
|
62
|
+
:ssl => true,
|
63
|
+
:ssl_cert => CLIENT_CERT,
|
64
|
+
:ssl_key => CLIENT_CERT)
|
65
|
+
assert client.connect
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_ssl_with_peer_cert_validation
|
69
|
+
client = MongoClient.new('server', 27017, :connect => false,
|
70
|
+
:ssl => true,
|
71
|
+
:ssl_key => CLIENT_CERT,
|
72
|
+
:ssl_cert => CLIENT_CERT,
|
73
|
+
:ssl_verify => true,
|
74
|
+
:ssl_ca_cert => CA_CERT)
|
75
|
+
assert client.connect
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_ssl_peer_cert_validation_hostname_fail
|
79
|
+
client = MongoClient.new('localhost', 27017, :connect => false,
|
80
|
+
:ssl => true,
|
81
|
+
:ssl_key => CLIENT_CERT,
|
82
|
+
:ssl_cert => CLIENT_CERT,
|
83
|
+
:ssl_verify => true,
|
84
|
+
:ssl_ca_cert => CA_CERT)
|
85
|
+
assert_raise ConnectionFailure do
|
86
|
+
client.connect
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# Requires mongod built with SSL and the follow options:
|
91
|
+
#
|
92
|
+
# mongod --dbpath /path/to/data/directory --sslOnNormalPorts \
|
93
|
+
# --sslPEMKeyFile /path/to/server.pem \
|
94
|
+
# --sslCAFile /path/to/ca.pem \
|
95
|
+
# --sslCRLFile /path/to/crl_client_revoked.pem
|
96
|
+
#
|
97
|
+
# Make sure you have 'server' as an alias for localhost in /etc/hosts
|
98
|
+
#
|
99
|
+
def test_ssl_with_invalid_cert
|
100
|
+
assert_raise ConnectionFailure do
|
101
|
+
MongoClient.new('server', 27017, :ssl => true,
|
102
|
+
:ssl_key => CLIENT_CERT,
|
103
|
+
:ssl_cert => CLIENT_CERT,
|
104
|
+
:ssl_verify => true,
|
105
|
+
:ssl_ca_cert => CA_CERT)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
|
3
17
|
class SupportTest < Test::Unit::TestCase
|
@@ -1,10 +1,24 @@
|
|
1
|
+
# Copyright (C) 2013 10gen Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
1
15
|
require 'test_helper'
|
2
16
|
|
3
17
|
class TestThreading < Test::Unit::TestCase
|
4
18
|
|
5
19
|
include Mongo
|
6
20
|
|
7
|
-
@@client = standard_connection(:pool_size =>
|
21
|
+
@@client = standard_connection(:pool_size => 2, :pool_timeout => 30)
|
8
22
|
@@db = @@client[MONGO_TEST_DB]
|
9
23
|
@@coll = @@db.collection('thread-test-collection')
|
10
24
|
|
@@ -25,7 +39,7 @@ class TestThreading < Test::Unit::TestCase
|
|
25
39
|
times = []
|
26
40
|
set_up_safe_data
|
27
41
|
threads = []
|
28
|
-
|
42
|
+
25.times do |i|
|
29
43
|
threads[i] = Thread.new do
|
30
44
|
100.times do
|
31
45
|
if i % 2 == 0
|
@@ -43,7 +57,7 @@ class TestThreading < Test::Unit::TestCase
|
|
43
57
|
end
|
44
58
|
end
|
45
59
|
|
46
|
-
|
60
|
+
25.times do |i|
|
47
61
|
threads[i].join
|
48
62
|
end
|
49
63
|
end
|
@@ -51,7 +65,7 @@ class TestThreading < Test::Unit::TestCase
|
|
51
65
|
def test_safe_insert
|
52
66
|
set_up_safe_data
|
53
67
|
threads = []
|
54
|
-
|
68
|
+
25.times do |i|
|
55
69
|
threads[i] = Thread.new do
|
56
70
|
if i % 2 == 0
|
57
71
|
assert_raise Mongo::OperationFailure do
|
@@ -63,7 +77,7 @@ class TestThreading < Test::Unit::TestCase
|
|
63
77
|
end
|
64
78
|
end
|
65
79
|
|
66
|
-
|
80
|
+
25.times do |i|
|
67
81
|
threads[i].join
|
68
82
|
end
|
69
83
|
end
|
@@ -72,9 +86,9 @@ class TestThreading < Test::Unit::TestCase
|
|
72
86
|
@@coll.drop
|
73
87
|
@@coll = @@db.collection('thread-test-collection')
|
74
88
|
|
75
|
-
|
76
|
-
|
77
|
-
|
89
|
+
docs = []
|
90
|
+
1000.times {|i| docs << {:x => i}}
|
91
|
+
@@coll.insert(docs)
|
78
92
|
|
79
93
|
threads = []
|
80
94
|
|