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.
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 = []