mongo 1.7.1 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. data/{LICENSE.txt → LICENSE} +0 -0
  2. data/README.md +124 -111
  3. data/Rakefile +9 -325
  4. data/VERSION +1 -0
  5. data/bin/mongo_console +4 -4
  6. data/examples/admin.rb +43 -0
  7. data/examples/capped.rb +22 -0
  8. data/examples/cursor.rb +48 -0
  9. data/examples/gridfs.rb +44 -0
  10. data/examples/index_test.rb +126 -0
  11. data/examples/info.rb +31 -0
  12. data/examples/queries.rb +74 -0
  13. data/examples/replica_set.rb +26 -0
  14. data/examples/simple.rb +25 -0
  15. data/examples/strict.rb +35 -0
  16. data/examples/types.rb +36 -0
  17. data/{test/load → examples/web}/thin/load.rb +3 -1
  18. data/{test/load → examples/web}/unicorn/load.rb +5 -3
  19. data/lib/mongo.rb +8 -10
  20. data/lib/mongo/collection.rb +134 -114
  21. data/lib/mongo/cursor.rb +21 -14
  22. data/lib/mongo/db.rb +30 -28
  23. data/lib/mongo/exceptions.rb +1 -1
  24. data/lib/mongo/gridfs/grid.rb +8 -7
  25. data/lib/mongo/gridfs/grid_ext.rb +1 -1
  26. data/lib/mongo/gridfs/grid_file_system.rb +6 -5
  27. data/lib/mongo/gridfs/grid_io.rb +22 -19
  28. data/lib/mongo/legacy.rb +82 -0
  29. data/lib/mongo/{connection.rb → mongo_client.rb} +82 -61
  30. data/lib/mongo/{repl_set_connection.rb → mongo_replica_set_client.rb} +54 -39
  31. data/lib/mongo/{sharded_connection.rb → mongo_sharded_client.rb} +9 -9
  32. data/lib/mongo/networking.rb +25 -20
  33. data/lib/mongo/util/conversions.rb +1 -1
  34. data/lib/mongo/util/core_ext.rb +1 -1
  35. data/lib/mongo/util/logging.rb +20 -4
  36. data/lib/mongo/util/node.rb +16 -16
  37. data/lib/mongo/util/pool.rb +56 -27
  38. data/lib/mongo/util/pool_manager.rb +28 -27
  39. data/lib/mongo/util/server_version.rb +1 -1
  40. data/lib/mongo/util/sharding_pool_manager.rb +8 -8
  41. data/lib/mongo/util/ssl_socket.rb +1 -5
  42. data/lib/mongo/util/support.rb +24 -8
  43. data/lib/mongo/util/tcp_socket.rb +0 -4
  44. data/lib/mongo/util/uri_parser.rb +54 -38
  45. data/lib/mongo/util/write_concern.rb +67 -0
  46. data/mongo.gemspec +21 -32
  47. data/test/auxillary/{1.4_features.rb → 1.4_feature_test.rb} +4 -5
  48. data/test/auxillary/authentication_test.rb +18 -20
  49. data/test/auxillary/autoreconnect_test.rb +3 -5
  50. data/test/auxillary/fork_test.rb +5 -7
  51. data/test/auxillary/repl_set_auth_test.rb +13 -15
  52. data/test/auxillary/slave_connection_test.rb +8 -7
  53. data/test/auxillary/threaded_authentication_test.rb +15 -17
  54. data/test/bson/binary_test.rb +1 -1
  55. data/test/bson/bson_test.rb +60 -36
  56. data/test/bson/byte_buffer_test.rb +1 -1
  57. data/test/bson/hash_with_indifferent_access_test.rb +2 -2
  58. data/test/bson/json_test.rb +1 -2
  59. data/test/bson/object_id_test.rb +1 -2
  60. data/test/bson/ordered_hash_test.rb +1 -1
  61. data/test/bson/timestamp_test.rb +1 -1
  62. data/test/{collection_test.rb → functional/collection_test.rb} +57 -57
  63. data/test/{connection_test.rb → functional/connection_test.rb} +75 -89
  64. data/test/{conversions_test.rb → functional/conversions_test.rb} +1 -1
  65. data/test/{cursor_fail_test.rb → functional/cursor_fail_test.rb} +3 -29
  66. data/test/{cursor_message_test.rb → functional/cursor_message_test.rb} +1 -1
  67. data/test/{cursor_test.rb → functional/cursor_test.rb} +5 -1
  68. data/test/{db_api_test.rb → functional/db_api_test.rb} +8 -9
  69. data/test/{db_connection_test.rb → functional/db_connection_test.rb} +3 -5
  70. data/test/{db_test.rb → functional/db_test.rb} +13 -13
  71. data/test/{grid_file_system_test.rb → functional/grid_file_system_test.rb} +2 -2
  72. data/test/{grid_io_test.rb → functional/grid_io_test.rb} +6 -6
  73. data/test/{grid_test.rb → functional/grid_test.rb} +4 -10
  74. data/test/{pool_test.rb → functional/pool_test.rb} +1 -1
  75. data/test/functional/safe_test.rb +84 -0
  76. data/test/{support_test.rb → functional/support_test.rb} +1 -1
  77. data/test/{threading_test.rb → functional/threading_test.rb} +9 -9
  78. data/test/{timeout_test.rb → functional/timeout_test.rb} +1 -1
  79. data/test/{uri_test.rb → functional/uri_test.rb} +1 -1
  80. data/test/functional/write_concern_test.rb +104 -0
  81. data/test/replica_set/basic_test.rb +139 -0
  82. data/test/replica_set/client_test.rb +255 -0
  83. data/test/replica_set/complex_connect_test.rb +62 -0
  84. data/test/replica_set/connection_test.rb +255 -0
  85. data/test/{replica_sets → replica_set}/count_test.rb +17 -14
  86. data/test/replica_set/cursor_test.rb +75 -0
  87. data/test/{replica_sets → replica_set}/insert_test.rb +19 -16
  88. data/test/replica_set/query_test.rb +64 -0
  89. data/test/replica_set/refresh_test.rb +153 -0
  90. data/test/{replica_sets → replica_set}/replication_ack_test.rb +21 -17
  91. data/test/sharded_cluster/basic_test.rb +31 -50
  92. data/test/support/hash_with_indifferent_access.rb +1 -1
  93. data/test/test_helper.rb +56 -9
  94. data/test/threading/threading_with_large_pool_test.rb +8 -8
  95. data/test/tools/mongo_config.rb +270 -58
  96. data/test/tools/mongo_config_test.rb +146 -0
  97. data/test/unit/client_test.rb +230 -0
  98. data/test/unit/collection_test.rb +45 -32
  99. data/test/unit/connection_test.rb +82 -74
  100. data/test/unit/cursor_test.rb +14 -6
  101. data/test/unit/db_test.rb +8 -8
  102. data/test/unit/grid_test.rb +11 -11
  103. data/test/unit/node_test.rb +24 -24
  104. data/test/unit/pool_manager_test.rb +13 -13
  105. data/test/unit/pool_test.rb +1 -1
  106. data/test/unit/read_test.rb +21 -26
  107. data/test/unit/safe_test.rb +52 -33
  108. data/test/unit/util_test.rb +55 -0
  109. data/test/unit/write_concern_test.rb +161 -0
  110. metadata +158 -171
  111. data/docs/CREDITS.md +0 -123
  112. data/docs/FAQ.md +0 -116
  113. data/docs/GRID_FS.md +0 -158
  114. data/docs/HISTORY.md +0 -392
  115. data/docs/READ_PREFERENCE.md +0 -99
  116. data/docs/RELEASES.md +0 -54
  117. data/docs/REPLICA_SETS.md +0 -113
  118. data/docs/TAILABLE_CURSORS.md +0 -51
  119. data/docs/TUTORIAL.md +0 -356
  120. data/docs/WRITE_CONCERN.md +0 -31
  121. data/lib/mongo/gridfs/grid_io_fix.rb +0 -38
  122. data/lib/mongo/version.rb +0 -3
  123. data/test/bson/test_helper.rb +0 -30
  124. data/test/replica_sets/basic_test.rb +0 -119
  125. data/test/replica_sets/complex_connect_test.rb +0 -57
  126. data/test/replica_sets/complex_read_preference_test.rb +0 -237
  127. data/test/replica_sets/connect_test.rb +0 -156
  128. data/test/replica_sets/cursor_test.rb +0 -70
  129. data/test/replica_sets/pooled_insert_test.rb +0 -57
  130. data/test/replica_sets/query_test.rb +0 -50
  131. data/test/replica_sets/read_preference_test.rb +0 -234
  132. data/test/replica_sets/refresh_test.rb +0 -156
  133. data/test/replica_sets/refresh_with_threads_test.rb +0 -60
  134. data/test/replica_sets/rs_test_helper.rb +0 -39
  135. data/test/safe_test.rb +0 -68
  136. data/test/sharded_cluster/mongo_config_test.rb +0 -126
  137. data/test/sharded_cluster/sc_test_helper.rb +0 -39
  138. data/test/tools/repl_set_manager.rb +0 -418
@@ -1,4 +1,4 @@
1
- require File.expand_path("../test_helper", __FILE__)
1
+ require 'test_helper'
2
2
  require 'mongo/exceptions'
3
3
  require 'mongo/util/conversions'
4
4
 
@@ -1,4 +1,4 @@
1
- require File.expand_path("../test_helper", __FILE__)
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 File.expand_path("../test_helper", __FILE__)
1
+ require 'test_helper'
2
2
  require 'logger'
3
3
 
4
4
  class CursorMessageTest < Test::Unit::TestCase
@@ -1,4 +1,4 @@
1
- require File.expand_path("../test_helper", __FILE__)
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 File.expand_path("../test_helper", __FILE__)
1
+ require 'test_helper'
2
2
 
3
3
  class DBAPITest < Test::Unit::TestCase
4
4
  include Mongo
5
5
  include BSON
6
6
 
7
- @@conn = standard_connection
8
- @@db = @@conn.db(MONGO_TEST_DB)
7
+ @@client = standard_connection
8
+ @@db = @@client.db(MONGO_TEST_DB)
9
9
  @@coll = @@db.collection('test')
10
- @@version = @@conn.server_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
- opts = {:safe => true}
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}, :safe => true)
433
- @@coll.insert({'b' => [1, 2, 3]}, :safe => true)
434
- @@coll.insert({'b' => [1, 2, 3]}, :safe => true)
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 File.expand_path("../test_helper", __FILE__)
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'] || Connection::DEFAULT_PORT
10
- db = Connection.new(host, port).db(MONGO_TEST_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 File.expand_path("../test_helper", __FILE__)
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
- @@conn = standard_connection
18
- @@db = @@conn.db(MONGO_TEST_DB)
17
+ @@client = standard_connection
18
+ @@db = @@client.db(MONGO_TEST_DB)
19
19
  @@users = @@db.collection('system.users')
20
- @@version = @@conn.server_version
20
+ @@version = @@client.server_version
21
21
 
22
22
  def test_close
23
- @@conn.close
24
- assert !@@conn.connected?
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 = @@conn.db(MONGO_TEST_DB, :strict => true)
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::Connection.from_uri("mongodb://spongebob:squarepants@#{host_port}/#{@@db.name}")
163
+ assert Mongo::MongoClient.from_uri("mongodb://spongebob:squarepants@#{host_port}/#{@@db.name}")
164
164
 
165
165
  assert_raise Mongo::AuthenticationError do
166
- con = Mongo::Connection.from_uri("mongodb://wrong:info@#{host_port}/#{@@db.name}")
167
- con['test']['foo'].find_one
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
- conn = standard_connection
248
- db = conn[MONGO_TEST_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 = @@conn[MONGO_TEST_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 File.expand_path("../test_helper", __FILE__)
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 = {:safe => true}
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 File.expand_path("../test_helper", __FILE__)
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', :safe => true)
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(File.dirname(__FILE__), 'data', 'sample_file.pdf'), 'r')
197
- file = GridIO.new(@files, @chunks, 'bigfile', 'w', :safe => true)
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(File.dirname(__FILE__), 'data', 'sample_file.pdf'), 'r')
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', :safe => true)
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 File.expand_path("../test_helper", __FILE__)
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(File.dirname(__FILE__), 'data', filename), 'r+b')
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(File.dirname(__FILE__), 'data', filename), 'r')
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(File.dirname(__FILE__), 'data', filename), 'r')
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
@@ -1,4 +1,4 @@
1
- require File.expand_path("../test_helper", __FILE__)
1
+ require 'test_helper'
2
2
  require 'thread'
3
3
 
4
4
  class PoolTest < Test::Unit::TestCase
@@ -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,4 +1,4 @@
1
- require File.expand_path("../test_helper", __FILE__)
1
+ require 'test_helper'
2
2
 
3
3
  class SupportTest < Test::Unit::TestCase
4
4
 
@@ -1,12 +1,12 @@
1
- require File.expand_path("../test_helper", __FILE__)
1
+ require 'test_helper'
2
2
 
3
3
  class TestThreading < Test::Unit::TestCase
4
4
 
5
5
  include Mongo
6
6
 
7
- @@con = standard_connection(:pool_size => 10, :pool_timeout => 30)
8
- @@db = @@con[MONGO_TEST_DB]
9
- @@coll = @@db.collection('thread-test-collection')
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"}}, :safe => true)
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"}}, :safe => true)
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"}, :safe => true)
58
+ @unique.insert({"test" => "insert"})
59
59
  end
60
60
  else
61
- @duplicate.insert({"test" => "insert"}, :safe => true)
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, :safe => true)
76
+ @@coll.insert({"x" => i})
77
77
  end
78
78
 
79
79
  threads = []