mongo 1.5.0.rc0 → 1.5.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/README.md CHANGED
@@ -208,14 +208,14 @@ keys. This is the PKFactory that comes with the MongoRecord code (an
208
208
  ActiveRecord-like framework for non-Rails apps) and the AR Mongo adapter code
209
209
  (for Rails):
210
210
 
211
- class PKFactory
212
- def create_pk(row)
213
- return row if row[:_id]
214
- row.delete(:_id) # in case it exists but the value is nil
215
- row['_id'] ||= Mongo::ObjectID.new
216
- row
211
+ class PKFactory
212
+ def create_pk(row)
213
+ return row if row[:_id]
214
+ row.delete(:_id) # in case it exists but the value is nil
215
+ row['_id'] ||= Mongo::ObjectID.new
216
+ row
217
+ end
217
218
  end
218
- end
219
219
 
220
220
  A database's PK factory object may be set either when a DB object is created
221
221
  or immediately after you obtain it, but only once. The only reason it is
@@ -1,5 +1,24 @@
1
1
  # MongoDB Ruby Driver History
2
2
 
3
+ ### 1.5.0
4
+ 2011-11-28
5
+
6
+ This releases fixes bugs introduced in 1.4.0 and 1.4.1 that
7
+ were introduced as a result of adding replica set refresh modes.
8
+
9
+ * Removed :async refresh mode.
10
+ * Disabled auto refresh mode by default. If you want the driver
11
+ to automatically check the state of the replica set, you must
12
+ use :sync mode. Note that replica set refresh is designed only to
13
+ account for benign changes to the replica set (adding and removing
14
+ nodes that don't affect current connections).
15
+ * Fixed bug with commands being sent to secondary nodes. The next
16
+ release will allow you to specify where commands can be sent.
17
+ * Support :j safe mode option.
18
+ * Fix :max_scan and :show_disk_loc Cursor options.
19
+
20
+ You can see the remaining issues at https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10005&version=10992
21
+
3
22
  ### 1.5.0.rc0
4
23
  2011-11-18
5
24
 
@@ -86,6 +86,7 @@ module Mongo
86
86
 
87
87
  @db, @name = db, name
88
88
  @connection = @db.connection
89
+ @logger = @connection.logger
89
90
  @cache_time = @db.cache_time
90
91
  @cache = Hash.new(0)
91
92
  unless pk_factory
@@ -225,7 +225,7 @@ module Mongo
225
225
  cmd = BSON::OrderedHash.new
226
226
  cmd[:getlasterror] = 1
227
227
  if opts.is_a?(Hash)
228
- opts.assert_valid_keys(:w, :wtimeout, :fsync)
228
+ opts.assert_valid_keys(:w, :wtimeout, :fsync, :j)
229
229
  cmd.merge!(opts)
230
230
  end
231
231
  message.put_binary(BSON::BSON_CODER.serialize(cmd, false).to_s)
@@ -1,3 +1,3 @@
1
1
  module Mongo
2
- VERSION = "1.5.0.rc0"
2
+ VERSION = "1.5.0"
3
3
  end
@@ -206,6 +206,14 @@ class TestCollection < Test::Unit::TestCase
206
206
  end
207
207
  end
208
208
 
209
+ if @@version >= "2.0.0"
210
+ def test_safe_mode_with_journal_commit_option
211
+ @@test.insert({:foo => 1}, :safe => {:j => true})
212
+ @@test.update({:foo => 1}, {:foo => 2}, :safe => {:j => true})
213
+ @@test.remove({:foo => 2}, :safe => {:j => true})
214
+ end
215
+ end
216
+
209
217
  def test_update
210
218
  id1 = @@test.save("x" => 5)
211
219
  @@test.update({}, {"$inc" => {"x" => 1}})
@@ -661,13 +669,13 @@ class TestCollection < Test::Unit::TestCase
661
669
 
662
670
  @@test.ensure_index([["x", Mongo::DESCENDING]], {})
663
671
  assert_equal 2, @@test.index_information.keys.count
664
- assert @@test.index_information.keys.include? "x_-1"
672
+ assert @@test.index_information.keys.include?("x_-1")
665
673
 
666
674
  @@test.ensure_index([["x", Mongo::ASCENDING]])
667
- assert @@test.index_information.keys.include? "x_1"
675
+ assert @@test.index_information.keys.include?("x_1")
668
676
 
669
677
  @@test.ensure_index([["type", 1], ["date", -1]])
670
- assert @@test.index_information.keys.include? "type_1_date_-1"
678
+ assert @@test.index_information.keys.include?("type_1_date_-1")
671
679
 
672
680
  @@test.drop_index("x_1")
673
681
  assert_equal 3, @@test.index_information.keys.count
@@ -676,7 +684,7 @@ class TestCollection < Test::Unit::TestCase
676
684
 
677
685
  @@test.ensure_index([["x", Mongo::DESCENDING]], {})
678
686
  assert_equal 3, @@test.index_information.keys.count
679
- assert @@test.index_information.keys.include? "x_-1"
687
+ assert @@test.index_information.keys.include?("x_-1")
680
688
 
681
689
  # Make sure that drop_index expires cache properly
682
690
  @@test.ensure_index([['a', 1]])
@@ -125,5 +125,15 @@ class CollectionTest < Test::Unit::TestCase
125
125
 
126
126
  @coll.ensure_index [["x", Mongo::DESCENDING], ["y", Mongo::DESCENDING]]
127
127
  end
128
+
129
+ should "use the connection's logger" do
130
+ @conn = Connection.new('localhost', 27017, :logger => @logger, :connect => false)
131
+ @db = @conn['testing']
132
+ @coll = @db.collection('books')
133
+ @logger.expects(:warn).with do |msg|
134
+ msg == "MONGODB [WARNING] test warning"
135
+ end
136
+ @coll.log(:warn, "test warning")
137
+ end
128
138
  end
129
139
  end
metadata CHANGED
@@ -1,236 +1,221 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mongo
3
- version: !ruby/object:Gem::Version
4
- prerelease: 6
5
- version: 1.5.0.rc0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.5.0
5
+ prerelease:
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Jim Menard
9
9
  - Mike Dirolf
10
10
  - Kyle Banker
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
-
15
- date: 2011-11-18 00:00:00 -05:00
16
- default_executable:
17
- dependencies:
18
- - !ruby/object:Gem::Dependency
14
+ date: 2011-11-28 00:00:00.000000000Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
19
17
  name: bson
20
- prerelease: false
21
- requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirement: &10966820 !ruby/object:Gem::Requirement
22
19
  none: false
23
- requirements:
24
- - - "="
25
- - !ruby/object:Gem::Version
26
- version: 1.5.0.rc0
20
+ requirements:
21
+ - - =
22
+ - !ruby/object:Gem::Version
23
+ version: 1.5.0
27
24
  type: :runtime
28
- version_requirements: *id001
25
+ prerelease: false
26
+ version_requirements: *10966820
29
27
  description: A Ruby driver for MongoDB. For more information about Mongo, see http://www.mongodb.org.
30
28
  email: mongodb-dev@googlegroups.com
31
- executables:
29
+ executables:
32
30
  - mongo_console
33
31
  extensions: []
34
-
35
- extra_rdoc_files:
32
+ extra_rdoc_files:
36
33
  - README.md
37
- files:
34
+ files:
38
35
  - README.md
39
36
  - Rakefile
40
37
  - mongo.gemspec
41
38
  - LICENSE.txt
42
39
  - lib/mongo.rb
43
40
  - lib/mongo/collection.rb
44
- - lib/mongo/connection.rb
45
- - lib/mongo/cursor.rb
46
- - lib/mongo/db.rb
47
- - lib/mongo/exceptions.rb
41
+ - lib/mongo/networking.rb
48
42
  - lib/mongo/gridfs/grid.rb
49
43
  - lib/mongo/gridfs/grid_ext.rb
50
44
  - lib/mongo/gridfs/grid_file_system.rb
51
45
  - lib/mongo/gridfs/grid_io.rb
52
46
  - lib/mongo/gridfs/grid_io_fix.rb
53
- - lib/mongo/networking.rb
54
- - lib/mongo/repl_set_connection.rb
47
+ - lib/mongo/version.rb
48
+ - lib/mongo/util/pool_manager.rb
55
49
  - lib/mongo/util/conversions.rb
56
50
  - lib/mongo/util/core_ext.rb
57
- - lib/mongo/util/logging.rb
58
- - lib/mongo/util/node.rb
51
+ - lib/mongo/util/ssl_socket.rb
59
52
  - lib/mongo/util/pool.rb
60
- - lib/mongo/util/pool_manager.rb
53
+ - lib/mongo/util/node.rb
54
+ - lib/mongo/util/uri_parser.rb
61
55
  - lib/mongo/util/server_version.rb
62
- - lib/mongo/util/ssl_socket.rb
63
56
  - lib/mongo/util/support.rb
64
- - lib/mongo/util/timeout.rb
65
- - lib/mongo/util/uri_parser.rb
66
- - lib/mongo/version.rb
57
+ - lib/mongo/util/logging.rb
58
+ - lib/mongo/connection.rb
59
+ - lib/mongo/exceptions.rb
60
+ - lib/mongo/repl_set_connection.rb
61
+ - lib/mongo/db.rb
62
+ - lib/mongo/cursor.rb
67
63
  - docs/CREDITS.md
68
- - docs/FAQ.md
64
+ - docs/WRITE_CONCERN.md
65
+ - docs/RELEASES.md
69
66
  - docs/GridFS.md
70
67
  - docs/HISTORY.md
71
- - docs/READ_PREFERENCE.md
72
- - docs/RELEASES.md
68
+ - docs/FAQ.md
69
+ - docs/TUTORIAL.md
73
70
  - docs/REPLICA_SETS.md
71
+ - docs/READ_PREFERENCE.md
74
72
  - docs/TAILABLE_CURSORS.md
75
- - docs/TUTORIAL.md
76
- - docs/WRITE_CONCERN.md
77
73
  - bin/mongo_console
78
- - test/auxillary/1.4_features.rb
79
- - test/auxillary/authentication_test.rb
74
+ - test/tools/repl_set_manager.rb
75
+ - test/tools/auth_repl_set_manager.rb
76
+ - test/uri_test.rb
77
+ - test/conversions_test.rb
78
+ - test/grid_io_test.rb
79
+ - test/cursor_fail_test.rb
80
+ - test/unit/cursor_test.rb
81
+ - test/unit/pool_test.rb
82
+ - test/unit/pool_manager_test.rb
83
+ - test/unit/collection_test.rb
84
+ - test/unit/node_test.rb
85
+ - test/unit/db_test.rb
86
+ - test/unit/connection_test.rb
87
+ - test/unit/read_test.rb
88
+ - test/unit/safe_test.rb
89
+ - test/unit/grid_test.rb
90
+ - test/support_test.rb
91
+ - test/cursor_test.rb
92
+ - test/support/keys.rb
93
+ - test/support/hash_with_indifferent_access.rb
94
+ - test/test_helper.rb
95
+ - test/threading_test.rb
96
+ - test/auxillary/repl_set_auth_test.rb
80
97
  - test/auxillary/autoreconnect_test.rb
98
+ - test/auxillary/threaded_authentication_test.rb
99
+ - test/auxillary/authentication_test.rb
100
+ - test/auxillary/1.4_features.rb
81
101
  - test/auxillary/fork_test.rb
82
- - test/auxillary/repl_set_auth_test.rb
83
102
  - test/auxillary/slave_connection_test.rb
84
- - test/auxillary/threaded_authentication_test.rb
103
+ - test/threading/threading_with_large_pool_test.rb
104
+ - test/replica_sets/insert_test.rb
105
+ - test/replica_sets/read_preference_test.rb
106
+ - test/replica_sets/connect_test.rb
107
+ - test/replica_sets/basic_test.rb
108
+ - test/replica_sets/count_test.rb
109
+ - test/replica_sets/refresh_test.rb
110
+ - test/replica_sets/replication_ack_test.rb
111
+ - test/replica_sets/query_test.rb
112
+ - test/replica_sets/refresh_with_threads_test.rb
113
+ - test/replica_sets/rs_test_helper.rb
114
+ - test/collection_test.rb
115
+ - test/cursor_message_test.rb
85
116
  - test/bson/binary_test.rb
86
- - test/bson/bson_string_test.rb
87
- - test/bson/bson_test.rb
88
- - test/bson/byte_buffer_test.rb
89
- - test/bson/hash_with_indifferent_access_test.rb
90
117
  - test/bson/json_test.rb
91
- - test/bson/object_id_test.rb
118
+ - test/bson/byte_buffer_test.rb
92
119
  - test/bson/ordered_hash_test.rb
120
+ - test/bson/object_id_test.rb
93
121
  - test/bson/test_helper.rb
122
+ - test/bson/bson_test.rb
94
123
  - test/bson/timestamp_test.rb
95
- - test/collection_test.rb
124
+ - test/bson/hash_with_indifferent_access_test.rb
125
+ - test/load/unicorn/load.rb
126
+ - test/load/thin/load.rb
127
+ - test/db_test.rb
96
128
  - test/connection_test.rb
97
- - test/conversions_test.rb
98
- - test/cursor_fail_test.rb
99
- - test/cursor_message_test.rb
100
- - test/cursor_test.rb
101
129
  - test/db_api_test.rb
102
- - test/db_connection_test.rb
103
- - test/db_test.rb
104
130
  - test/grid_file_system_test.rb
105
- - test/grid_io_test.rb
106
- - test/grid_test.rb
107
- - test/load/thin/load.rb
108
- - test/load/unicorn/load.rb
109
- - test/pool_test.rb
110
- - test/replica_sets/basic_test.rb
111
- - test/replica_sets/connect_test.rb
112
- - test/replica_sets/count_test.rb
113
- - test/replica_sets/insert_test.rb
114
- - test/replica_sets/query_test.rb
115
- - test/replica_sets/read_preference_test.rb
116
- - test/replica_sets/refresh_test.rb
117
- - test/replica_sets/refresh_with_threads_test.rb
118
- - test/replica_sets/replication_ack_test.rb
119
- - test/replica_sets/rs_test_helper.rb
120
- - test/replica_sets/threading_test.rb
121
131
  - test/safe_test.rb
122
- - test/support/hash_with_indifferent_access.rb
123
- - test/support/keys.rb
124
- - test/support_test.rb
125
- - test/test_helper.rb
126
- - test/threading/threading_with_large_pool_test.rb
127
- - test/threading_test.rb
128
- - test/timeout_test.rb
129
- - test/tools/auth_repl_set_manager.rb
130
- - test/tools/repl_set_manager.rb
131
- - test/unit/collection_test.rb
132
- - test/unit/connection_test.rb
133
- - test/unit/cursor_test.rb
134
- - test/unit/db_test.rb
135
- - test/unit/grid_test.rb
136
- - test/unit/node_test.rb
137
- - test/unit/pool_manager_test.rb
138
- - test/unit/pool_test.rb
139
- - test/unit/read_test.rb
140
- - test/unit/safe_test.rb
141
- - test/uri_test.rb
142
- has_rdoc: true
132
+ - test/db_connection_test.rb
133
+ - test/grid_test.rb
143
134
  homepage: http://www.mongodb.org
144
135
  licenses: []
145
-
146
136
  post_install_message:
147
- rdoc_options:
137
+ rdoc_options:
148
138
  - --main
149
139
  - README.md
150
140
  - --inline-source
151
- require_paths:
141
+ require_paths:
152
142
  - lib
153
- required_ruby_version: !ruby/object:Gem::Requirement
143
+ required_ruby_version: !ruby/object:Gem::Requirement
154
144
  none: false
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- version: "0"
159
- required_rubygems_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ! '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
150
  none: false
161
- requirements:
162
- - - ">"
163
- - !ruby/object:Gem::Version
164
- version: 1.3.1
151
+ requirements:
152
+ - - ! '>='
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
165
155
  requirements: []
166
-
167
156
  rubyforge_project:
168
- rubygems_version: 1.5.2
157
+ rubygems_version: 1.8.10
169
158
  signing_key:
170
159
  specification_version: 3
171
160
  summary: Ruby driver for the MongoDB
172
- test_files:
173
- - test/auxillary/1.4_features.rb
174
- - test/auxillary/authentication_test.rb
161
+ test_files:
162
+ - test/tools/repl_set_manager.rb
163
+ - test/tools/auth_repl_set_manager.rb
164
+ - test/uri_test.rb
165
+ - test/conversions_test.rb
166
+ - test/grid_io_test.rb
167
+ - test/cursor_fail_test.rb
168
+ - test/unit/cursor_test.rb
169
+ - test/unit/pool_test.rb
170
+ - test/unit/pool_manager_test.rb
171
+ - test/unit/collection_test.rb
172
+ - test/unit/node_test.rb
173
+ - test/unit/db_test.rb
174
+ - test/unit/connection_test.rb
175
+ - test/unit/read_test.rb
176
+ - test/unit/safe_test.rb
177
+ - test/unit/grid_test.rb
178
+ - test/support_test.rb
179
+ - test/cursor_test.rb
180
+ - test/support/keys.rb
181
+ - test/support/hash_with_indifferent_access.rb
182
+ - test/test_helper.rb
183
+ - test/threading_test.rb
184
+ - test/auxillary/repl_set_auth_test.rb
175
185
  - test/auxillary/autoreconnect_test.rb
186
+ - test/auxillary/threaded_authentication_test.rb
187
+ - test/auxillary/authentication_test.rb
188
+ - test/auxillary/1.4_features.rb
176
189
  - test/auxillary/fork_test.rb
177
- - test/auxillary/repl_set_auth_test.rb
178
190
  - test/auxillary/slave_connection_test.rb
179
- - test/auxillary/threaded_authentication_test.rb
191
+ - test/threading/threading_with_large_pool_test.rb
192
+ - test/replica_sets/insert_test.rb
193
+ - test/replica_sets/read_preference_test.rb
194
+ - test/replica_sets/connect_test.rb
195
+ - test/replica_sets/basic_test.rb
196
+ - test/replica_sets/count_test.rb
197
+ - test/replica_sets/refresh_test.rb
198
+ - test/replica_sets/replication_ack_test.rb
199
+ - test/replica_sets/query_test.rb
200
+ - test/replica_sets/refresh_with_threads_test.rb
201
+ - test/replica_sets/rs_test_helper.rb
202
+ - test/collection_test.rb
203
+ - test/cursor_message_test.rb
180
204
  - test/bson/binary_test.rb
181
- - test/bson/bson_string_test.rb
182
- - test/bson/bson_test.rb
183
- - test/bson/byte_buffer_test.rb
184
- - test/bson/hash_with_indifferent_access_test.rb
185
205
  - test/bson/json_test.rb
186
- - test/bson/object_id_test.rb
206
+ - test/bson/byte_buffer_test.rb
187
207
  - test/bson/ordered_hash_test.rb
208
+ - test/bson/object_id_test.rb
188
209
  - test/bson/test_helper.rb
210
+ - test/bson/bson_test.rb
189
211
  - test/bson/timestamp_test.rb
190
- - test/collection_test.rb
212
+ - test/bson/hash_with_indifferent_access_test.rb
213
+ - test/load/unicorn/load.rb
214
+ - test/load/thin/load.rb
215
+ - test/db_test.rb
191
216
  - test/connection_test.rb
192
- - test/conversions_test.rb
193
- - test/cursor_fail_test.rb
194
- - test/cursor_message_test.rb
195
- - test/cursor_test.rb
196
217
  - test/db_api_test.rb
197
- - test/db_connection_test.rb
198
- - test/db_test.rb
199
218
  - test/grid_file_system_test.rb
200
- - test/grid_io_test.rb
201
- - test/grid_test.rb
202
- - test/load/thin/load.rb
203
- - test/load/unicorn/load.rb
204
- - test/pool_test.rb
205
- - test/replica_sets/basic_test.rb
206
- - test/replica_sets/connect_test.rb
207
- - test/replica_sets/count_test.rb
208
- - test/replica_sets/insert_test.rb
209
- - test/replica_sets/query_test.rb
210
- - test/replica_sets/read_preference_test.rb
211
- - test/replica_sets/refresh_test.rb
212
- - test/replica_sets/refresh_with_threads_test.rb
213
- - test/replica_sets/replication_ack_test.rb
214
- - test/replica_sets/rs_test_helper.rb
215
- - test/replica_sets/threading_test.rb
216
219
  - test/safe_test.rb
217
- - test/support/hash_with_indifferent_access.rb
218
- - test/support/keys.rb
219
- - test/support_test.rb
220
- - test/test_helper.rb
221
- - test/threading/threading_with_large_pool_test.rb
222
- - test/threading_test.rb
223
- - test/timeout_test.rb
224
- - test/tools/auth_repl_set_manager.rb
225
- - test/tools/repl_set_manager.rb
226
- - test/unit/collection_test.rb
227
- - test/unit/connection_test.rb
228
- - test/unit/cursor_test.rb
229
- - test/unit/db_test.rb
230
- - test/unit/grid_test.rb
231
- - test/unit/node_test.rb
232
- - test/unit/pool_manager_test.rb
233
- - test/unit/pool_test.rb
234
- - test/unit/read_test.rb
235
- - test/unit/safe_test.rb
236
- - test/uri_test.rb
220
+ - test/db_connection_test.rb
221
+ - test/grid_test.rb
@@ -1,42 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- # --
4
- # Copyright (C) 2008-2011 10gen Inc.
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- # ++
18
- module Mongo #:nodoc:
19
- module TimeoutWrapper
20
- extend self
21
-
22
- def timeout_lib=(lib)
23
- @@timeout_lib = lib
24
- end
25
-
26
- def timeout_lib
27
- @@timeout_lib
28
- end
29
-
30
- def timeout(delay, &block)
31
- if timeout_lib
32
- begin
33
- timeout_lib.timeout(delay, &block)
34
- rescue ::Timeout::Error
35
- raise Mongo::OperationTimeout
36
- end
37
- else
38
- yield
39
- end
40
- end
41
- end
42
- end
@@ -1,30 +0,0 @@
1
- # encoding:utf-8
2
- require './test/bson/test_helper'
3
- require 'complex'
4
- require 'bigdecimal'
5
- require 'rational'
6
-
7
- class BSONTest < Test::Unit::TestCase
8
-
9
- include BSON
10
-
11
- def setup
12
- @encoder = BSON::BSON_CODER
13
- end
14
-
15
- def assert_doc_pass(doc, options={})
16
- bson = @encoder.serialize(doc)
17
- if options[:debug]
18
- puts "DEBUGGING DOC:"
19
- p bson.to_a
20
- puts "DESERIALIZES TO:"
21
- end
22
- assert_equal @encoder.serialize(doc).to_a, bson.to_a
23
- assert_equal doc, @encoder.deserialize(bson)
24
- end
25
-
26
- def test_string
27
- assert_doc_pass({:a => "hello"})
28
- end
29
-
30
- end
@@ -1,21 +0,0 @@
1
- require './test/test_helper'
2
- require 'logger'
3
- require 'stringio'
4
- require 'thread'
5
-
6
- class TestPool < Test::Unit::TestCase
7
-
8
- include Mongo
9
- include BSON
10
-
11
- def setup
12
- @conn = standard_connection
13
- end
14
-
15
- def teardown
16
- @conn[MONGO_TEST_DB].get_last_error
17
- end
18
-
19
- def test_foo
20
- end
21
- end
@@ -1,111 +0,0 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- require './test/replica_sets/rs_test_helper'
3
-
4
- class ReplicaSetThreadingTest < Test::Unit::TestCase
5
- include ReplicaSetTest
6
-
7
- def setup_safe_data
8
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]],
9
- :pool_size => 100)
10
- @db = @conn[MONGO_TEST_DB]
11
- @coll = @db.collection('thread-test-collection')
12
- @db.drop_collection('duplicate')
13
- @db.drop_collection('unique')
14
- @duplicate = @db.collection('duplicate')
15
- @unique = @db.collection('unique')
16
-
17
- @duplicate.insert("test" => "insert")
18
- @duplicate.insert("test" => "update")
19
- @unique.insert("test" => "insert")
20
- @unique.insert("test" => "update")
21
- @unique.create_index("test", :unique => true)
22
- end
23
-
24
- def test_safe_update
25
- setup_safe_data
26
- times = []
27
- threads = []
28
- 100.times do |i|
29
- threads[i] = Thread.new do
30
- 10.times do
31
- if i % 2 == 0
32
- assert_raise Mongo::OperationFailure do
33
- t1 = Time.now
34
- @unique.update({"test" => "insert"},
35
- {"$set" => {"test" => "update"}}, :safe => true)
36
- times << Time.now - t1
37
- end
38
- else
39
- t1 = Time.now
40
- @duplicate.update({"test" => "insert"},
41
- {"$set" => {"test" => "update"}}, :safe => true)
42
- times << Time.now - t1
43
- end
44
- end
45
- end
46
- end
47
-
48
- 100.times do |i|
49
- threads[i].join
50
- end
51
- @conn.close
52
- end
53
-
54
- def test_safe_insert
55
- setup_safe_data
56
- threads = []
57
- 100.times do |i|
58
- threads[i] = Thread.new do
59
- if i % 2 == 0
60
- assert_raise Mongo::OperationFailure do
61
- @unique.insert({"test" => "insert"}, :safe => true)
62
- end
63
- else
64
- @duplicate.insert({"test" => "insert"}, :safe => true)
65
- end
66
- end
67
- end
68
-
69
- 100.times do |i|
70
- threads[i].join
71
- end
72
- @conn.close
73
- end
74
-
75
- def setup_replica_set_connection
76
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]],
77
- :pool_size => 100, :auto_refresh => :sync,
78
- :refresh_interval => 2)
79
- @db = @conn[MONGO_TEST_DB]
80
- @coll = @db.collection('thread-test-collection')
81
- end
82
-
83
- def test_threading_with_queries
84
- setup_replica_set_connection
85
- @coll.drop
86
- @coll = @db.collection('thread-test-collection')
87
-
88
- 1000.times do |i|
89
- @coll.insert("x" => i)
90
- end
91
-
92
- threads = []
93
-
94
- 10.times do |i|
95
- threads[i] = Thread.new do
96
- 100.times do
97
- sum = 0
98
- @coll.find().each do |document|
99
- sum += document["x"]
100
- end
101
- assert_equal 499500, sum
102
- end
103
- end
104
- end
105
-
106
- 10.times do |i|
107
- threads[i].join
108
- end
109
- @conn.close
110
- end
111
- end
@@ -1,14 +0,0 @@
1
- require './test/test_helper'
2
-
3
- class TestTimeout < Test::Unit::TestCase
4
-
5
- def test_timeout
6
- @conn = standard_connection(:op_timeout => 2)
7
- assert @conn[MONGO_TEST_DB]['test'].save({:a => 1})
8
- assert @conn[MONGO_TEST_DB]['test'].find.next
9
- assert_raise OperationTimeout do
10
- @conn[MONGO_TEST_DB]['test'].find({'$where' => 'function() { while(true) { this.a == 1 } }'}).next
11
- end
12
- end
13
-
14
- end