mongo 1.7.1 → 1.8.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.
- data/{LICENSE.txt → LICENSE} +0 -0
- data/README.md +124 -111
- data/Rakefile +9 -325
- data/VERSION +1 -0
- data/bin/mongo_console +4 -4
- data/examples/admin.rb +43 -0
- data/examples/capped.rb +22 -0
- data/examples/cursor.rb +48 -0
- data/examples/gridfs.rb +44 -0
- data/examples/index_test.rb +126 -0
- data/examples/info.rb +31 -0
- data/examples/queries.rb +74 -0
- data/examples/replica_set.rb +26 -0
- data/examples/simple.rb +25 -0
- data/examples/strict.rb +35 -0
- data/examples/types.rb +36 -0
- data/{test/load → examples/web}/thin/load.rb +3 -1
- data/{test/load → examples/web}/unicorn/load.rb +5 -3
- data/lib/mongo.rb +8 -10
- data/lib/mongo/collection.rb +134 -114
- data/lib/mongo/cursor.rb +21 -14
- data/lib/mongo/db.rb +30 -28
- data/lib/mongo/exceptions.rb +1 -1
- data/lib/mongo/gridfs/grid.rb +8 -7
- data/lib/mongo/gridfs/grid_ext.rb +1 -1
- data/lib/mongo/gridfs/grid_file_system.rb +6 -5
- data/lib/mongo/gridfs/grid_io.rb +22 -19
- data/lib/mongo/legacy.rb +82 -0
- data/lib/mongo/{connection.rb → mongo_client.rb} +82 -61
- data/lib/mongo/{repl_set_connection.rb → mongo_replica_set_client.rb} +54 -39
- data/lib/mongo/{sharded_connection.rb → mongo_sharded_client.rb} +9 -9
- data/lib/mongo/networking.rb +25 -20
- data/lib/mongo/util/conversions.rb +1 -1
- data/lib/mongo/util/core_ext.rb +1 -1
- data/lib/mongo/util/logging.rb +20 -4
- data/lib/mongo/util/node.rb +16 -16
- data/lib/mongo/util/pool.rb +56 -27
- data/lib/mongo/util/pool_manager.rb +28 -27
- data/lib/mongo/util/server_version.rb +1 -1
- data/lib/mongo/util/sharding_pool_manager.rb +8 -8
- data/lib/mongo/util/ssl_socket.rb +1 -5
- data/lib/mongo/util/support.rb +24 -8
- data/lib/mongo/util/tcp_socket.rb +0 -4
- data/lib/mongo/util/uri_parser.rb +54 -38
- data/lib/mongo/util/write_concern.rb +67 -0
- data/mongo.gemspec +21 -32
- data/test/auxillary/{1.4_features.rb → 1.4_feature_test.rb} +4 -5
- data/test/auxillary/authentication_test.rb +18 -20
- data/test/auxillary/autoreconnect_test.rb +3 -5
- data/test/auxillary/fork_test.rb +5 -7
- data/test/auxillary/repl_set_auth_test.rb +13 -15
- data/test/auxillary/slave_connection_test.rb +8 -7
- data/test/auxillary/threaded_authentication_test.rb +15 -17
- data/test/bson/binary_test.rb +1 -1
- data/test/bson/bson_test.rb +60 -36
- data/test/bson/byte_buffer_test.rb +1 -1
- data/test/bson/hash_with_indifferent_access_test.rb +2 -2
- data/test/bson/json_test.rb +1 -2
- data/test/bson/object_id_test.rb +1 -2
- data/test/bson/ordered_hash_test.rb +1 -1
- data/test/bson/timestamp_test.rb +1 -1
- data/test/{collection_test.rb → functional/collection_test.rb} +57 -57
- data/test/{connection_test.rb → functional/connection_test.rb} +75 -89
- data/test/{conversions_test.rb → functional/conversions_test.rb} +1 -1
- data/test/{cursor_fail_test.rb → functional/cursor_fail_test.rb} +3 -29
- data/test/{cursor_message_test.rb → functional/cursor_message_test.rb} +1 -1
- data/test/{cursor_test.rb → functional/cursor_test.rb} +5 -1
- data/test/{db_api_test.rb → functional/db_api_test.rb} +8 -9
- data/test/{db_connection_test.rb → functional/db_connection_test.rb} +3 -5
- data/test/{db_test.rb → functional/db_test.rb} +13 -13
- data/test/{grid_file_system_test.rb → functional/grid_file_system_test.rb} +2 -2
- data/test/{grid_io_test.rb → functional/grid_io_test.rb} +6 -6
- data/test/{grid_test.rb → functional/grid_test.rb} +4 -10
- data/test/{pool_test.rb → functional/pool_test.rb} +1 -1
- data/test/functional/safe_test.rb +84 -0
- data/test/{support_test.rb → functional/support_test.rb} +1 -1
- data/test/{threading_test.rb → functional/threading_test.rb} +9 -9
- data/test/{timeout_test.rb → functional/timeout_test.rb} +1 -1
- data/test/{uri_test.rb → functional/uri_test.rb} +1 -1
- data/test/functional/write_concern_test.rb +104 -0
- data/test/replica_set/basic_test.rb +139 -0
- data/test/replica_set/client_test.rb +255 -0
- data/test/replica_set/complex_connect_test.rb +62 -0
- data/test/replica_set/connection_test.rb +255 -0
- data/test/{replica_sets → replica_set}/count_test.rb +17 -14
- data/test/replica_set/cursor_test.rb +75 -0
- data/test/{replica_sets → replica_set}/insert_test.rb +19 -16
- data/test/replica_set/query_test.rb +64 -0
- data/test/replica_set/refresh_test.rb +153 -0
- data/test/{replica_sets → replica_set}/replication_ack_test.rb +21 -17
- data/test/sharded_cluster/basic_test.rb +31 -50
- data/test/support/hash_with_indifferent_access.rb +1 -1
- data/test/test_helper.rb +56 -9
- data/test/threading/threading_with_large_pool_test.rb +8 -8
- data/test/tools/mongo_config.rb +270 -58
- data/test/tools/mongo_config_test.rb +146 -0
- data/test/unit/client_test.rb +230 -0
- data/test/unit/collection_test.rb +45 -32
- data/test/unit/connection_test.rb +82 -74
- data/test/unit/cursor_test.rb +14 -6
- data/test/unit/db_test.rb +8 -8
- data/test/unit/grid_test.rb +11 -11
- data/test/unit/node_test.rb +24 -24
- data/test/unit/pool_manager_test.rb +13 -13
- data/test/unit/pool_test.rb +1 -1
- data/test/unit/read_test.rb +21 -26
- data/test/unit/safe_test.rb +52 -33
- data/test/unit/util_test.rb +55 -0
- data/test/unit/write_concern_test.rb +161 -0
- metadata +158 -171
- data/docs/CREDITS.md +0 -123
- data/docs/FAQ.md +0 -116
- data/docs/GRID_FS.md +0 -158
- data/docs/HISTORY.md +0 -392
- data/docs/READ_PREFERENCE.md +0 -99
- data/docs/RELEASES.md +0 -54
- data/docs/REPLICA_SETS.md +0 -113
- data/docs/TAILABLE_CURSORS.md +0 -51
- data/docs/TUTORIAL.md +0 -356
- data/docs/WRITE_CONCERN.md +0 -31
- data/lib/mongo/gridfs/grid_io_fix.rb +0 -38
- data/lib/mongo/version.rb +0 -3
- data/test/bson/test_helper.rb +0 -30
- data/test/replica_sets/basic_test.rb +0 -119
- data/test/replica_sets/complex_connect_test.rb +0 -57
- data/test/replica_sets/complex_read_preference_test.rb +0 -237
- data/test/replica_sets/connect_test.rb +0 -156
- data/test/replica_sets/cursor_test.rb +0 -70
- data/test/replica_sets/pooled_insert_test.rb +0 -57
- data/test/replica_sets/query_test.rb +0 -50
- data/test/replica_sets/read_preference_test.rb +0 -234
- data/test/replica_sets/refresh_test.rb +0 -156
- data/test/replica_sets/refresh_with_threads_test.rb +0 -60
- data/test/replica_sets/rs_test_helper.rb +0 -39
- data/test/safe_test.rb +0 -68
- data/test/sharded_cluster/mongo_config_test.rb +0 -126
- data/test/sharded_cluster/sc_test_helper.rb +0 -39
- data/test/tools/repl_set_manager.rb +0 -418
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
require 'logger'
|
3
3
|
|
4
4
|
class CursorFailTest < Test::Unit::TestCase
|
@@ -11,37 +11,11 @@ class CursorFailTest < Test::Unit::TestCase
|
|
11
11
|
@@version = @@connection.server_version
|
12
12
|
|
13
13
|
def setup
|
14
|
-
@@coll.remove
|
15
|
-
@@coll.insert('a' => 1) # collection not created until it's used
|
14
|
+
@@coll.remove({})
|
15
|
+
@@coll.insert({'a' => 1}) # collection not created until it's used
|
16
16
|
@@coll_full_name = "#{MONGO_TEST_DB}.test"
|
17
17
|
end
|
18
18
|
|
19
|
-
def test_refill_via_get_more
|
20
|
-
assert_equal 1, @@coll.count
|
21
|
-
1000.times { |i|
|
22
|
-
assert_equal 1 + i, @@coll.count
|
23
|
-
@@coll.insert('a' => i)
|
24
|
-
}
|
25
|
-
|
26
|
-
assert_equal 1001, @@coll.count
|
27
|
-
count = 0
|
28
|
-
@@coll.find.each { |obj|
|
29
|
-
count += obj['a']
|
30
|
-
}
|
31
|
-
assert_equal 1001, @@coll.count
|
32
|
-
|
33
|
-
# do the same thing again for debugging
|
34
|
-
assert_equal 1001, @@coll.count
|
35
|
-
count2 = 0
|
36
|
-
@@coll.find.each { |obj|
|
37
|
-
count2 += obj['a']
|
38
|
-
}
|
39
|
-
assert_equal 1001, @@coll.count
|
40
|
-
|
41
|
-
assert_equal count, count2
|
42
|
-
assert_equal 499501, count
|
43
|
-
end
|
44
|
-
|
45
19
|
def test_refill_via_get_more_alt_coll
|
46
20
|
coll = @@db.collection('test-alt-coll')
|
47
21
|
coll.remove
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
require 'logger'
|
3
3
|
|
4
4
|
class CursorTest < Test::Unit::TestCase
|
@@ -93,6 +93,10 @@ class CursorTest < Test::Unit::TestCase
|
|
93
93
|
assert_kind_of Numeric, explaination['nscanned']
|
94
94
|
end
|
95
95
|
|
96
|
+
def test_each_with_no_block
|
97
|
+
assert_kind_of(Enumerator, @@coll.find().each) if defined? Enumerator
|
98
|
+
end
|
99
|
+
|
96
100
|
def test_count
|
97
101
|
@@coll.remove
|
98
102
|
|
@@ -1,13 +1,13 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
class DBAPITest < Test::Unit::TestCase
|
4
4
|
include Mongo
|
5
5
|
include BSON
|
6
6
|
|
7
|
-
@@
|
8
|
-
@@db = @@
|
7
|
+
@@client = standard_connection
|
8
|
+
@@db = @@client.db(MONGO_TEST_DB)
|
9
9
|
@@coll = @@db.collection('test')
|
10
|
-
@@version = @@
|
10
|
+
@@version = @@client.server_version
|
11
11
|
|
12
12
|
def setup
|
13
13
|
@@coll.remove
|
@@ -329,8 +329,7 @@ class DBAPITest < Test::Unit::TestCase
|
|
329
329
|
|
330
330
|
@@db.create_collection('foobar')
|
331
331
|
|
332
|
-
|
333
|
-
coll = @@db.create_collection('foobar', opts)
|
332
|
+
coll = @@db.create_collection('foobar')
|
334
333
|
assert_equal true, coll.safe
|
335
334
|
end
|
336
335
|
|
@@ -429,9 +428,9 @@ class DBAPITest < Test::Unit::TestCase
|
|
429
428
|
end
|
430
429
|
|
431
430
|
def test_array
|
432
|
-
@@coll.remove({'$atomic' => true}
|
433
|
-
@@coll.insert({'b' => [1, 2, 3]}
|
434
|
-
@@coll.insert({'b' => [1, 2, 3]}
|
431
|
+
@@coll.remove({'$atomic' => true})
|
432
|
+
@@coll.insert({'b' => [1, 2, 3]})
|
433
|
+
@@coll.insert({'b' => [1, 2, 3]})
|
435
434
|
rows = @@coll.find({}, {:fields => ['b']}).to_a
|
436
435
|
assert_equal 2, rows.length
|
437
436
|
assert_equal [1, 2, 3], rows[1]['b']
|
@@ -1,13 +1,11 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
class DBConnectionTest < Test::Unit::TestCase
|
4
4
|
|
5
|
-
include Mongo
|
6
|
-
|
7
5
|
def test_no_exceptions
|
8
6
|
host = ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost'
|
9
|
-
port = ENV['MONGO_RUBY_DRIVER_PORT'] ||
|
10
|
-
db =
|
7
|
+
port = ENV['MONGO_RUBY_DRIVER_PORT'] || MongoClient::DEFAULT_PORT
|
8
|
+
db = MongoClient.new(host, port).db(MONGO_TEST_DB)
|
11
9
|
coll = db.collection('test')
|
12
10
|
coll.remove
|
13
11
|
db.get_last_error
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
require 'digest/md5'
|
3
3
|
require 'stringio'
|
4
4
|
require 'logger'
|
@@ -14,14 +14,14 @@ class DBTest < Test::Unit::TestCase
|
|
14
14
|
|
15
15
|
include Mongo
|
16
16
|
|
17
|
-
@@
|
18
|
-
@@db = @@
|
17
|
+
@@client = standard_connection
|
18
|
+
@@db = @@client.db(MONGO_TEST_DB)
|
19
19
|
@@users = @@db.collection('system.users')
|
20
|
-
@@version = @@
|
20
|
+
@@version = @@client.server_version
|
21
21
|
|
22
22
|
def test_close
|
23
|
-
@@
|
24
|
-
assert !@@
|
23
|
+
@@client.close
|
24
|
+
assert !@@client.connected?
|
25
25
|
begin
|
26
26
|
@@db.collection('test').insert('a' => 1)
|
27
27
|
fail "expected 'NilClass' exception"
|
@@ -44,7 +44,7 @@ class DBTest < Test::Unit::TestCase
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def test_get_and_drop_collection
|
47
|
-
db = @@
|
47
|
+
db = @@client.db(MONGO_TEST_DB, :strict => true)
|
48
48
|
db.create_collection('foo')
|
49
49
|
assert db.collection('foo')
|
50
50
|
assert db.drop_collection('foo')
|
@@ -160,11 +160,11 @@ class DBTest < Test::Unit::TestCase
|
|
160
160
|
|
161
161
|
def test_authenticate_with_connection_uri
|
162
162
|
@@db.add_user('spongebob', 'squarepants')
|
163
|
-
assert Mongo::
|
163
|
+
assert Mongo::MongoClient.from_uri("mongodb://spongebob:squarepants@#{host_port}/#{@@db.name}")
|
164
164
|
|
165
165
|
assert_raise Mongo::AuthenticationError do
|
166
|
-
|
167
|
-
|
166
|
+
client = Mongo::MongoClient.from_uri("mongodb://wrong:info@#{host_port}/#{@@db.name}")
|
167
|
+
client['test']['foo'].find_one
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
@@ -244,8 +244,8 @@ class DBTest < Test::Unit::TestCase
|
|
244
244
|
end
|
245
245
|
|
246
246
|
def test_text_port_number_raises_no_errors
|
247
|
-
|
248
|
-
db =
|
247
|
+
client = standard_connection
|
248
|
+
db = client[MONGO_TEST_DB]
|
249
249
|
db.collection('users').remove
|
250
250
|
end
|
251
251
|
|
@@ -287,7 +287,7 @@ class DBTest < Test::Unit::TestCase
|
|
287
287
|
|
288
288
|
context "database profiling" do
|
289
289
|
setup do
|
290
|
-
@db = @@
|
290
|
+
@db = @@client[MONGO_TEST_DB]
|
291
291
|
@coll = @db['test']
|
292
292
|
@coll.remove
|
293
293
|
@r1 = @coll.insert('a' => 1) # collection not created until it's used
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
class GridFileSystemTest < Test::Unit::TestCase
|
4
4
|
context "GridFileSystem:" do
|
@@ -16,7 +16,7 @@ class GridFileSystemTest < Test::Unit::TestCase
|
|
16
16
|
setup do
|
17
17
|
@chunks_data = "CHUNKS" * 50000
|
18
18
|
@grid = GridFileSystem.new(@db)
|
19
|
-
@opts = {:
|
19
|
+
@opts = {:w => 1}
|
20
20
|
@original_opts = @opts.dup
|
21
21
|
@grid.open('sample.file', 'w', @opts) do |f|
|
22
22
|
f.write @chunks_data
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
class GridIOTest < Test::Unit::TestCase
|
4
4
|
|
@@ -186,24 +186,24 @@ class GridIOTest < Test::Unit::TestCase
|
|
186
186
|
|
187
187
|
context "Grid MD5 check" do
|
188
188
|
should "run in safe mode" do
|
189
|
-
file = GridIO.new(@files, @chunks, 'smallfile', 'w'
|
189
|
+
file = GridIO.new(@files, @chunks, 'smallfile', 'w')
|
190
190
|
file.write("DATA" * 100)
|
191
191
|
assert file.close
|
192
192
|
assert_equal file.server_md5, file.client_md5
|
193
193
|
end
|
194
194
|
|
195
195
|
should "validate with a large file" do
|
196
|
-
io = File.open(File.join(
|
197
|
-
file = GridIO.new(@files, @chunks, 'bigfile', 'w'
|
196
|
+
io = File.open(File.join(TEST_DATA, 'sample_file.pdf'), 'r')
|
197
|
+
file = GridIO.new(@files, @chunks, 'bigfile', 'w')
|
198
198
|
file.write(io)
|
199
199
|
assert file.close
|
200
200
|
assert_equal file.server_md5, file.client_md5
|
201
201
|
end
|
202
202
|
|
203
203
|
should "raise an exception when check fails" do
|
204
|
-
io = File.open(File.join(
|
204
|
+
io = File.open(File.join(TEST_DATA, 'sample_file.pdf'), 'r')
|
205
205
|
@db.stubs(:command).returns({'md5' => '12345'})
|
206
|
-
file = GridIO.new(@files, @chunks, 'bigfile', 'w'
|
206
|
+
file = GridIO.new(@files, @chunks, 'bigfile', 'w')
|
207
207
|
file.write(io)
|
208
208
|
assert_raise GridMD5Failure do
|
209
209
|
assert file.close
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
include Mongo
|
3
3
|
|
4
4
|
def read_and_write_stream(filename, read_length, opts={})
|
5
|
-
io = File.open(File.join(
|
5
|
+
io = File.open(File.join(TEST_DATA, filename), 'r+b')
|
6
6
|
id = @grid.put(io, opts.merge!(:filename => filename + read_length.to_s))
|
7
7
|
file = @grid.get(id)
|
8
8
|
io.rewind
|
@@ -59,12 +59,6 @@ class GridTest < Test::Unit::TestCase
|
|
59
59
|
assert_equal 'sample', file['filename']
|
60
60
|
end
|
61
61
|
|
62
|
-
should "not be able to overwrite an exising file" do
|
63
|
-
assert_raise GridError do
|
64
|
-
@grid.put(@data, :filename => 'sample', :_id => @id, :safe => true)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
62
|
should "return nil if it doesn't exist" do
|
69
63
|
assert_nil @grid.exist?(:metadata => 'foo')
|
70
64
|
end
|
@@ -170,7 +164,7 @@ class GridTest < Test::Unit::TestCase
|
|
170
164
|
setup do
|
171
165
|
@grid = Grid.new(@db, 'test-fs')
|
172
166
|
filename = 'sample_data'
|
173
|
-
@io = File.open(File.join(
|
167
|
+
@io = File.open(File.join(TEST_DATA, filename), 'r')
|
174
168
|
id = @grid.put(@io, :filename => filename)
|
175
169
|
@file = @grid.get(id)
|
176
170
|
@io.rewind
|
@@ -203,7 +197,7 @@ class GridTest < Test::Unit::TestCase
|
|
203
197
|
setup do
|
204
198
|
@grid = Grid.new(@db, 'test-fs')
|
205
199
|
filename = 'empty_data'
|
206
|
-
@io = File.open(File.join(
|
200
|
+
@io = File.open(File.join(TEST_DATA, filename), 'r')
|
207
201
|
id = silently do
|
208
202
|
@grid.put(@io, :filename => filename)
|
209
203
|
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
include Mongo
|
3
|
+
|
4
|
+
class SafeTest < Test::Unit::TestCase
|
5
|
+
context "Safe mode propogation: " do
|
6
|
+
setup do
|
7
|
+
@connection = standard_connection({:safe => true}, true) # Legacy
|
8
|
+
@db = @connection[MONGO_TEST_DB]
|
9
|
+
@collection = @db['test-safe']
|
10
|
+
@collection.create_index([[:a, 1]], :unique => true)
|
11
|
+
@collection.remove
|
12
|
+
end
|
13
|
+
|
14
|
+
should "propogate safe option on insert" do
|
15
|
+
@collection.insert({:a => 1})
|
16
|
+
|
17
|
+
assert_raise_error(OperationFailure, "duplicate key") do
|
18
|
+
@collection.insert({:a => 1})
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
should "allow safe override on insert" do
|
23
|
+
@collection.insert({:a => 1})
|
24
|
+
@collection.insert({:a => 1}, :safe => false)
|
25
|
+
end
|
26
|
+
|
27
|
+
should "allow safe override on save" do
|
28
|
+
@collection.insert({:a => 1})
|
29
|
+
id = @collection.insert({:a => 2})
|
30
|
+
assert_nothing_raised do
|
31
|
+
@collection.save({:_id => id.to_s, :a => 1}, :safe => false)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
should "propogate safe option on save" do
|
36
|
+
@collection.insert({:a => 1})
|
37
|
+
id = @collection.insert({:a => 2})
|
38
|
+
assert_raise(OperationFailure) do
|
39
|
+
@collection.save({:_id => id.to_s, :a => 1})
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
should "propogate safe option on update" do
|
44
|
+
@collection.insert({:a => 1})
|
45
|
+
@collection.insert({:a => 2})
|
46
|
+
|
47
|
+
assert_raise_error(OperationFailure, "duplicate key") do
|
48
|
+
@collection.update({:a => 2}, {:a => 1})
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
should "allow safe override on update" do
|
53
|
+
@collection.insert({:a => 1})
|
54
|
+
@collection.insert({:a => 2})
|
55
|
+
@collection.update({:a => 2}, {:a => 1}, :safe => false)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "Safe error objects" do
|
60
|
+
setup do
|
61
|
+
@connection = standard_connection({:safe => true}, true) # Legacy
|
62
|
+
@db = @connection[MONGO_TEST_DB]
|
63
|
+
@collection = @db['test']
|
64
|
+
@collection.remove
|
65
|
+
@collection.insert({:a => 1})
|
66
|
+
@collection.insert({:a => 1})
|
67
|
+
@collection.insert({:a => 1})
|
68
|
+
end
|
69
|
+
|
70
|
+
should "return object on update" do
|
71
|
+
response = @collection.update({:a => 1}, {"$set" => {:a => 2}},
|
72
|
+
:multi => true)
|
73
|
+
|
74
|
+
assert response['updatedExisting']
|
75
|
+
assert_equal 3, response['n']
|
76
|
+
end
|
77
|
+
|
78
|
+
should "return object on remove" do
|
79
|
+
response = @collection.remove({})
|
80
|
+
assert_equal 3, response['n']
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
class TestThreading < Test::Unit::TestCase
|
4
4
|
|
5
5
|
include Mongo
|
6
6
|
|
7
|
-
@@
|
8
|
-
@@db
|
9
|
-
@@coll
|
7
|
+
@@client = standard_connection(:pool_size => 10, :pool_timeout => 30)
|
8
|
+
@@db = @@client[MONGO_TEST_DB]
|
9
|
+
@@coll = @@db.collection('thread-test-collection')
|
10
10
|
|
11
11
|
def set_up_safe_data
|
12
12
|
@@db.drop_collection('duplicate')
|
@@ -31,12 +31,12 @@ class TestThreading < Test::Unit::TestCase
|
|
31
31
|
if i % 2 == 0
|
32
32
|
assert_raise Mongo::OperationFailure do
|
33
33
|
t1 = Time.now
|
34
|
-
@unique.update({"test" => "insert"}, {"$set" => {"test" => "update"}}
|
34
|
+
@unique.update({"test" => "insert"}, {"$set" => {"test" => "update"}})
|
35
35
|
times << Time.now - t1
|
36
36
|
end
|
37
37
|
else
|
38
38
|
t1 = Time.now
|
39
|
-
@duplicate.update({"test" => "insert"}, {"$set" => {"test" => "update"}}
|
39
|
+
@duplicate.update({"test" => "insert"}, {"$set" => {"test" => "update"}})
|
40
40
|
times << Time.now - t1
|
41
41
|
end
|
42
42
|
end
|
@@ -55,10 +55,10 @@ class TestThreading < Test::Unit::TestCase
|
|
55
55
|
threads[i] = Thread.new do
|
56
56
|
if i % 2 == 0
|
57
57
|
assert_raise Mongo::OperationFailure do
|
58
|
-
@unique.insert({"test" => "insert"}
|
58
|
+
@unique.insert({"test" => "insert"})
|
59
59
|
end
|
60
60
|
else
|
61
|
-
@duplicate.insert({"test" => "insert"}
|
61
|
+
@duplicate.insert({"test" => "insert"})
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
@@ -73,7 +73,7 @@ class TestThreading < Test::Unit::TestCase
|
|
73
73
|
@@coll = @@db.collection('thread-test-collection')
|
74
74
|
|
75
75
|
1000.times do |i|
|
76
|
-
@@coll.insert("x" => i
|
76
|
+
@@coll.insert({"x" => i})
|
77
77
|
end
|
78
78
|
|
79
79
|
threads = []
|