mongo 0.15.1 → 0.16
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE.txt +202 -0
- data/README.rdoc +15 -2
- data/Rakefile +17 -3
- data/bin/autoreconnect.rb +26 -0
- data/bin/fail_if_no_c.rb +11 -0
- data/lib/mongo.rb +9 -2
- data/lib/mongo/admin.rb +1 -1
- data/lib/mongo/collection.rb +86 -25
- data/lib/mongo/connection.rb +11 -0
- data/lib/mongo/constants.rb +15 -0
- data/lib/mongo/cursor.rb +176 -36
- data/lib/mongo/db.rb +84 -97
- data/lib/mongo/errors.rb +7 -1
- data/lib/mongo/types/objectid.rb +5 -0
- data/lib/mongo/util/byte_buffer.rb +12 -0
- data/lib/mongo/util/server_version.rb +69 -0
- data/lib/mongo/{message.rb → util/support.rb} +7 -4
- data/mongo-ruby-driver.gemspec +9 -86
- data/test/test_admin.rb +2 -2
- data/test/test_bson.rb +14 -0
- data/test/test_byte_buffer.rb +14 -0
- data/test/test_chunk.rb +4 -4
- data/test/test_collection.rb +107 -17
- data/test/test_connection.rb +13 -4
- data/test/test_cursor.rb +17 -14
- data/test/test_db.rb +7 -7
- data/test/test_db_api.rb +31 -19
- data/test/test_db_connection.rb +1 -1
- data/test/test_grid_store.rb +8 -8
- data/test/test_helper.rb +25 -0
- data/test/test_objectid.rb +11 -1
- data/test/test_slave_connection.rb +37 -0
- data/test/test_threading.rb +1 -1
- data/test/unit/cursor_test.rb +122 -0
- metadata +26 -46
- data/bin/mongo_console +0 -21
- data/bin/run_test_script +0 -19
- data/bin/standard_benchmark +0 -109
- data/lib/mongo/message/get_more_message.rb +0 -32
- data/lib/mongo/message/insert_message.rb +0 -37
- data/lib/mongo/message/kill_cursors_message.rb +0 -31
- data/lib/mongo/message/message.rb +0 -80
- data/lib/mongo/message/message_header.rb +0 -45
- data/lib/mongo/message/msg_message.rb +0 -29
- data/lib/mongo/message/opcodes.rb +0 -27
- data/lib/mongo/message/query_message.rb +0 -69
- data/lib/mongo/message/remove_message.rb +0 -37
- data/lib/mongo/message/update_message.rb +0 -38
- data/lib/mongo/query.rb +0 -118
- data/test/mongo-qa/admin +0 -26
- data/test/mongo-qa/capped +0 -22
- data/test/mongo-qa/count1 +0 -18
- data/test/mongo-qa/dbs +0 -22
- data/test/mongo-qa/find +0 -10
- data/test/mongo-qa/find1 +0 -15
- data/test/mongo-qa/gridfs_in +0 -16
- data/test/mongo-qa/gridfs_out +0 -17
- data/test/mongo-qa/indices +0 -49
- data/test/mongo-qa/remove +0 -25
- data/test/mongo-qa/stress1 +0 -35
- data/test/mongo-qa/test1 +0 -11
- data/test/mongo-qa/update +0 -18
- data/test/test_message.rb +0 -35
data/test/test_connection.rb
CHANGED
@@ -19,6 +19,17 @@ class TestConnection < Test::Unit::TestCase
|
|
19
19
|
@mongo.db('ruby-mongo-test').error
|
20
20
|
end
|
21
21
|
|
22
|
+
def test_server_info
|
23
|
+
server_info = @mongo.server_info
|
24
|
+
assert server_info.keys.include? "version"
|
25
|
+
assert server_info.keys.include? "bits"
|
26
|
+
assert_equal 1.0, server_info["ok"]
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_server_version
|
30
|
+
assert_match /\d\.\d+(\.\d+)?/, @mongo.server_version.to_s
|
31
|
+
end
|
32
|
+
|
22
33
|
def test_invalid_database_names
|
23
34
|
assert_raise TypeError do @mongo.db(4) end
|
24
35
|
|
@@ -61,10 +72,8 @@ class TestConnection < Test::Unit::TestCase
|
|
61
72
|
logger = Logger.new(output)
|
62
73
|
logger.level = Logger::DEBUG
|
63
74
|
db = Connection.new(@host, @port, :logger => logger).db('ruby-mongo-test')
|
64
|
-
db['test'].find().to_a
|
65
75
|
|
66
|
-
assert output.string.include?("
|
67
|
-
assert !output.string.include?("db.test.remove")
|
76
|
+
assert output.string.include?("2004")
|
68
77
|
end
|
69
78
|
|
70
79
|
def test_connection_logger
|
@@ -81,7 +90,7 @@ class TestConnection < Test::Unit::TestCase
|
|
81
90
|
def test_drop_database
|
82
91
|
db = @mongo.db('ruby-mongo-will-be-deleted')
|
83
92
|
coll = db.collection('temp')
|
84
|
-
coll.
|
93
|
+
coll.remove
|
85
94
|
coll.insert(:name => 'temp')
|
86
95
|
assert_equal 1, coll.count()
|
87
96
|
assert @mongo.database_names.include?('ruby-mongo-will-be-deleted')
|
data/test/test_cursor.rb
CHANGED
@@ -7,18 +7,20 @@ class CursorTest < Test::Unit::TestCase
|
|
7
7
|
|
8
8
|
include Mongo
|
9
9
|
|
10
|
-
@@
|
11
|
-
ENV['MONGO_RUBY_DRIVER_PORT'] || Connection::DEFAULT_PORT)
|
10
|
+
@@connection = Connection.new(ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost',
|
11
|
+
ENV['MONGO_RUBY_DRIVER_PORT'] || Connection::DEFAULT_PORT)
|
12
|
+
@@db = @@connection.db('ruby-mongo-test')
|
12
13
|
@@coll = @@db.collection('test')
|
14
|
+
@@version = @@connection.server_version
|
13
15
|
|
14
16
|
def setup
|
15
|
-
@@coll.
|
17
|
+
@@coll.remove
|
16
18
|
@@coll.insert('a' => 1) # collection not created until it's used
|
17
19
|
@@coll_full_name = 'ruby-mongo-test.test'
|
18
20
|
end
|
19
21
|
|
20
22
|
def teardown
|
21
|
-
@@coll.
|
23
|
+
@@coll.remove
|
22
24
|
@@db.error
|
23
25
|
end
|
24
26
|
|
@@ -32,7 +34,7 @@ class CursorTest < Test::Unit::TestCase
|
|
32
34
|
end
|
33
35
|
|
34
36
|
def test_count
|
35
|
-
@@coll.
|
37
|
+
@@coll.remove
|
36
38
|
|
37
39
|
assert_equal 0, @@coll.find().count()
|
38
40
|
|
@@ -59,7 +61,7 @@ class CursorTest < Test::Unit::TestCase
|
|
59
61
|
end
|
60
62
|
|
61
63
|
def test_sort
|
62
|
-
@@coll.
|
64
|
+
@@coll.remove
|
63
65
|
5.times{|x| @@coll.insert({"a" => x}) }
|
64
66
|
|
65
67
|
assert_kind_of Cursor, @@coll.find().sort(:a, 1)
|
@@ -89,7 +91,7 @@ class CursorTest < Test::Unit::TestCase
|
|
89
91
|
end
|
90
92
|
|
91
93
|
def test_limit
|
92
|
-
@@coll.
|
94
|
+
@@coll.remove
|
93
95
|
|
94
96
|
10.times do |i|
|
95
97
|
@@coll.save("x" => i)
|
@@ -119,7 +121,7 @@ class CursorTest < Test::Unit::TestCase
|
|
119
121
|
end
|
120
122
|
|
121
123
|
def test_skip
|
122
|
-
@@coll.
|
124
|
+
@@coll.remove
|
123
125
|
|
124
126
|
10.times do |i|
|
125
127
|
@@coll.save("x" => i)
|
@@ -153,7 +155,7 @@ class CursorTest < Test::Unit::TestCase
|
|
153
155
|
end
|
154
156
|
|
155
157
|
def test_limit_skip_chaining
|
156
|
-
@@coll.
|
158
|
+
@@coll.remove
|
157
159
|
10.times do |i|
|
158
160
|
@@coll.save("x" => i)
|
159
161
|
end
|
@@ -202,7 +204,7 @@ class CursorTest < Test::Unit::TestCase
|
|
202
204
|
|
203
205
|
def test_refill_via_get_more_alt_coll
|
204
206
|
coll = @@db.collection('test-alt-coll')
|
205
|
-
coll.
|
207
|
+
coll.remove
|
206
208
|
coll.insert('a' => 1) # collection not created until it's used
|
207
209
|
assert_equal 1, coll.count
|
208
210
|
|
@@ -318,12 +320,13 @@ class CursorTest < Test::Unit::TestCase
|
|
318
320
|
end
|
319
321
|
|
320
322
|
def test_count_with_fields
|
321
|
-
@@coll.
|
323
|
+
@@coll.remove
|
322
324
|
@@coll.save("x" => 1)
|
323
325
|
|
324
|
-
@@
|
325
|
-
|
326
|
+
if @@version < "1.1.3"
|
327
|
+
assert_equal(0, @@coll.find({}, :fields => ["a"]).count())
|
328
|
+
else
|
329
|
+
assert_equal(1, @@coll.find({}, :fields => ["a"]).count())
|
326
330
|
end
|
327
|
-
assert_equal(0, @@coll.find({}, :fields => ["a"]).count())
|
328
331
|
end
|
329
332
|
end
|
data/test/test_db.rb
CHANGED
@@ -25,12 +25,12 @@ class DBTest < Test::Unit::TestCase
|
|
25
25
|
def setup
|
26
26
|
@spongebob = 'spongebob'
|
27
27
|
@spongebob_password = 'squarepants'
|
28
|
-
@@users.
|
28
|
+
@@users.remove
|
29
29
|
@@users.insert(:user => @spongebob, :pwd => @@db.send(:hash_password, @spongebob, @spongebob_password))
|
30
30
|
end
|
31
31
|
|
32
32
|
def teardown
|
33
|
-
@@users.
|
33
|
+
@@users.remove if @@users
|
34
34
|
@@db.error
|
35
35
|
end
|
36
36
|
|
@@ -61,7 +61,7 @@ class DBTest < Test::Unit::TestCase
|
|
61
61
|
|
62
62
|
def test_full_coll_name
|
63
63
|
coll = @@db.collection('test')
|
64
|
-
assert_equal 'ruby-mongo-test.test', @@db.
|
64
|
+
assert_equal 'ruby-mongo-test.test', @@db.full_collection_name(coll.name)
|
65
65
|
end
|
66
66
|
|
67
67
|
def test_collection_names
|
@@ -101,7 +101,7 @@ class DBTest < Test::Unit::TestCase
|
|
101
101
|
def test_pk_factory
|
102
102
|
db = Connection.new(@@host, @@port).db('ruby-mongo-test', :pk => TestPKFactory.new)
|
103
103
|
coll = db.collection('test')
|
104
|
-
coll.
|
104
|
+
coll.remove
|
105
105
|
|
106
106
|
insert_id = coll.insert('name' => 'Fred', 'age' => 42)
|
107
107
|
# new id gets added to returned object
|
@@ -118,7 +118,7 @@ class DBTest < Test::Unit::TestCase
|
|
118
118
|
assert_equal oid, db_oid
|
119
119
|
assert_equal data, row
|
120
120
|
|
121
|
-
coll.
|
121
|
+
coll.remove
|
122
122
|
end
|
123
123
|
|
124
124
|
def test_pk_factory_reset
|
@@ -190,7 +190,7 @@ class DBTest < Test::Unit::TestCase
|
|
190
190
|
end
|
191
191
|
|
192
192
|
def test_last_status
|
193
|
-
@@db['test'].
|
193
|
+
@@db['test'].remove
|
194
194
|
@@db['test'].save("i" => 1)
|
195
195
|
|
196
196
|
@@db['test'].update({"i" => 1}, {"$set" => {"i" => 2}})
|
@@ -203,7 +203,7 @@ class DBTest < Test::Unit::TestCase
|
|
203
203
|
def test_text_port_number
|
204
204
|
db = DB.new('ruby-mongo-test', [[@@host, @@port.to_s]])
|
205
205
|
# If there is no error, all is well
|
206
|
-
db.collection('users').
|
206
|
+
db.collection('users').remove
|
207
207
|
end
|
208
208
|
|
209
209
|
end
|
data/test/test_db_api.rb
CHANGED
@@ -6,25 +6,27 @@ require 'test/unit'
|
|
6
6
|
class DBAPITest < Test::Unit::TestCase
|
7
7
|
include Mongo
|
8
8
|
|
9
|
-
@@
|
10
|
-
ENV['MONGO_RUBY_DRIVER_PORT'] || Connection::DEFAULT_PORT)
|
9
|
+
@@connection = Connection.new(ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost',
|
10
|
+
ENV['MONGO_RUBY_DRIVER_PORT'] || Connection::DEFAULT_PORT)
|
11
|
+
@@db = @@connection.db("ruby-mongo-test")
|
11
12
|
@@coll = @@db.collection('test')
|
13
|
+
@@version = @@connection.server_version
|
12
14
|
|
13
15
|
def setup
|
14
|
-
@@coll.
|
16
|
+
@@coll.remove
|
15
17
|
@r1 = {'a' => 1}
|
16
18
|
@@coll.insert(@r1) # collection not created until it's used
|
17
19
|
@@coll_full_name = 'ruby-mongo-test.test'
|
18
20
|
end
|
19
21
|
|
20
22
|
def teardown
|
21
|
-
@@coll.
|
23
|
+
@@coll.remove
|
22
24
|
@@db.error
|
23
25
|
end
|
24
26
|
|
25
27
|
def test_clear
|
26
28
|
assert_equal 1, @@coll.count
|
27
|
-
@@coll.
|
29
|
+
@@coll.remove
|
28
30
|
assert_equal 0, @@coll.count
|
29
31
|
end
|
30
32
|
|
@@ -142,7 +144,7 @@ class DBAPITest < Test::Unit::TestCase
|
|
142
144
|
end
|
143
145
|
|
144
146
|
def test_find_sorting
|
145
|
-
@@coll.
|
147
|
+
@@coll.remove
|
146
148
|
@@coll.insert('a' => 1, 'b' => 2)
|
147
149
|
@@coll.insert('a' => 2, 'b' => 1)
|
148
150
|
@@coll.insert('a' => 3, 'b' => 2)
|
@@ -233,7 +235,7 @@ class DBAPITest < Test::Unit::TestCase
|
|
233
235
|
end
|
234
236
|
|
235
237
|
def test_find_one_no_records
|
236
|
-
@@coll.
|
238
|
+
@@coll.remove
|
237
239
|
x = @@coll.find_one('a' => 1)
|
238
240
|
assert_nil x
|
239
241
|
end
|
@@ -386,16 +388,26 @@ class DBAPITest < Test::Unit::TestCase
|
|
386
388
|
def test_array
|
387
389
|
@@coll << {'b' => [1, 2, 3]}
|
388
390
|
rows = @@coll.find({}, {:fields => ['b']}).to_a
|
389
|
-
|
390
|
-
|
391
|
+
if @@version < "1.1.3"
|
392
|
+
assert_equal 1, rows.length
|
393
|
+
assert_equal [1, 2, 3], rows[0]['b']
|
394
|
+
else
|
395
|
+
assert_equal 2, rows.length
|
396
|
+
assert_equal [1, 2, 3], rows[1]['b']
|
397
|
+
end
|
391
398
|
end
|
392
399
|
|
393
400
|
def test_regex
|
394
401
|
regex = /foobar/i
|
395
402
|
@@coll << {'b' => regex}
|
396
403
|
rows = @@coll.find({}, {:fields => ['b']}).to_a
|
397
|
-
|
398
|
-
|
404
|
+
if @@version < "1.1.3"
|
405
|
+
assert_equal 1, rows.length
|
406
|
+
assert_equal regex, rows[0]['b']
|
407
|
+
else
|
408
|
+
assert_equal 2, rows.length
|
409
|
+
assert_equal regex, rows[1]['b']
|
410
|
+
end
|
399
411
|
end
|
400
412
|
|
401
413
|
def test_non_oid_id
|
@@ -580,7 +592,7 @@ class DBAPITest < Test::Unit::TestCase
|
|
580
592
|
end
|
581
593
|
|
582
594
|
def test_deref
|
583
|
-
@@coll.
|
595
|
+
@@coll.remove
|
584
596
|
|
585
597
|
assert_equal nil, @@db.dereference(DBRef.new("test", ObjectID.new))
|
586
598
|
@@coll.insert({"x" => "hello"})
|
@@ -592,13 +604,13 @@ class DBAPITest < Test::Unit::TestCase
|
|
592
604
|
@@coll.insert(obj)
|
593
605
|
assert_equal obj, @@db.dereference(DBRef.new("test", 4))
|
594
606
|
|
595
|
-
@@coll.
|
607
|
+
@@coll.remove
|
596
608
|
@@coll.insert({"x" => "hello"})
|
597
609
|
assert_equal nil, @@db.dereference(DBRef.new("test", nil))
|
598
610
|
end
|
599
611
|
|
600
612
|
def test_save
|
601
|
-
@@coll.
|
613
|
+
@@coll.remove
|
602
614
|
|
603
615
|
a = {"hello" => "world"}
|
604
616
|
|
@@ -622,13 +634,13 @@ class DBAPITest < Test::Unit::TestCase
|
|
622
634
|
end
|
623
635
|
|
624
636
|
def test_save_long
|
625
|
-
@@coll.
|
637
|
+
@@coll.remove
|
626
638
|
@@coll.insert("x" => 9223372036854775807)
|
627
639
|
assert_equal 9223372036854775807, @@coll.find_one()["x"]
|
628
640
|
end
|
629
641
|
|
630
642
|
def test_find_by_oid
|
631
|
-
@@coll.
|
643
|
+
@@coll.remove
|
632
644
|
|
633
645
|
@@coll.save("hello" => "mike")
|
634
646
|
id = @@coll.save("hello" => "world")
|
@@ -644,7 +656,7 @@ class DBAPITest < Test::Unit::TestCase
|
|
644
656
|
end
|
645
657
|
|
646
658
|
def test_save_with_object_that_has_id_but_does_not_actually_exist_in_collection
|
647
|
-
@@coll.
|
659
|
+
@@coll.remove
|
648
660
|
|
649
661
|
a = {'_id' => '1', 'hello' => 'world'}
|
650
662
|
@@coll.save(a)
|
@@ -658,7 +670,7 @@ class DBAPITest < Test::Unit::TestCase
|
|
658
670
|
end
|
659
671
|
|
660
672
|
def test_invalid_key_names
|
661
|
-
@@coll.
|
673
|
+
@@coll.remove
|
662
674
|
|
663
675
|
@@coll.insert({"hello" => "world"})
|
664
676
|
@@coll.insert({"hello" => {"hello" => "world"}})
|
@@ -779,7 +791,7 @@ class DBAPITest < Test::Unit::TestCase
|
|
779
791
|
assert_equal "UTF-8", utf8.encoding.name
|
780
792
|
assert_equal "ISO-8859-1", iso8859.encoding.name
|
781
793
|
|
782
|
-
@@coll.
|
794
|
+
@@coll.remove
|
783
795
|
@@coll.save("ascii" => ascii, "utf8" => utf8, "iso8859" => iso8859)
|
784
796
|
doc = @@coll.find_one()
|
785
797
|
|
data/test/test_db_connection.rb
CHANGED
data/test/test_grid_store.rb
CHANGED
@@ -14,14 +14,14 @@ class GridStoreTest < Test::Unit::TestCase
|
|
14
14
|
@@chunks = @@db.collection('fs.chunks')
|
15
15
|
|
16
16
|
def setup
|
17
|
-
@@chunks.
|
18
|
-
@@files.
|
17
|
+
@@chunks.remove
|
18
|
+
@@files.remove
|
19
19
|
GridStore.open(@@db, 'foobar', 'w') { |f| f.write("hello, world!") }
|
20
20
|
end
|
21
21
|
|
22
22
|
def teardown
|
23
|
-
@@chunks.
|
24
|
-
@@files.
|
23
|
+
@@chunks.remove
|
24
|
+
@@files.remove
|
25
25
|
@@db.error
|
26
26
|
end
|
27
27
|
|
@@ -106,8 +106,8 @@ class GridStoreTest < Test::Unit::TestCase
|
|
106
106
|
end
|
107
107
|
|
108
108
|
def test_multi_chunk
|
109
|
-
@@chunks.
|
110
|
-
@@files.
|
109
|
+
@@chunks.remove
|
110
|
+
@@files.remove
|
111
111
|
|
112
112
|
size = 512
|
113
113
|
GridStore.open(@@db, 'biggie', 'w') { |f|
|
@@ -167,8 +167,8 @@ class GridStoreTest < Test::Unit::TestCase
|
|
167
167
|
end
|
168
168
|
|
169
169
|
def test_save_empty_file
|
170
|
-
@@chunks.
|
171
|
-
@@files.
|
170
|
+
@@chunks.remove
|
171
|
+
@@files.remove
|
172
172
|
GridStore.open(@@db, 'empty', 'w') {} # re-write with zero bytes
|
173
173
|
assert_equal 1, @@files.count
|
174
174
|
assert_equal 0, @@chunks.count
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
+
require 'rubygems'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'shoulda'
|
7
|
+
require 'mocha'
|
8
|
+
rescue LoadError
|
9
|
+
puts <<MSG
|
10
|
+
|
11
|
+
This test suite now requires shoulda and mocha.
|
12
|
+
You can install these gems as follows:
|
13
|
+
gem install shoulda
|
14
|
+
gem install mocha
|
15
|
+
|
16
|
+
MSG
|
17
|
+
exit
|
18
|
+
end
|
19
|
+
|
20
|
+
require 'mongo'
|
21
|
+
|
22
|
+
# NOTE: most tests assume that MongoDB is running.
|
23
|
+
class Test::Unit::TestCase
|
24
|
+
include Mongo
|
25
|
+
end
|
data/test/test_objectid.rb
CHANGED
@@ -10,6 +10,16 @@ class ObjectIDTest < Test::Unit::TestCase
|
|
10
10
|
@o = ObjectID.new()
|
11
11
|
end
|
12
12
|
|
13
|
+
def test_create_pk_method
|
14
|
+
doc = {:name => 'Mongo'}
|
15
|
+
doc = ObjectID.create_pk(doc)
|
16
|
+
assert doc[:_id]
|
17
|
+
|
18
|
+
doc = {:name => 'Mongo', :_id => '12345'}
|
19
|
+
doc = ObjectID.create_pk(doc)
|
20
|
+
assert_equal '12345', doc[:_id]
|
21
|
+
end
|
22
|
+
|
13
23
|
def test_different
|
14
24
|
a = ObjectID.new
|
15
25
|
b = ObjectID.new
|
@@ -44,7 +54,7 @@ class ObjectIDTest < Test::Unit::TestCase
|
|
44
54
|
db = Connection.new(host, port).db('ruby-mongo-test')
|
45
55
|
coll = db.collection('test')
|
46
56
|
|
47
|
-
coll.
|
57
|
+
coll.remove
|
48
58
|
coll << {'a' => 1, '_id' => @o}
|
49
59
|
|
50
60
|
row = coll.find().collect.first
|
@@ -0,0 +1,37 @@
|
|
1
|
+
$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
+
require 'mongo'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
# NOTE: these tests are run only if we can connect to a single MongoDB in slave mode.
|
6
|
+
class SlaveConnectionTest < Test::Unit::TestCase
|
7
|
+
include Mongo
|
8
|
+
|
9
|
+
def self.connect_to_slave
|
10
|
+
@@host = ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost'
|
11
|
+
@@port = ENV['MONGO_RUBY_DRIVER_PORT'] || Connection::DEFAULT_PORT
|
12
|
+
db = Connection.new(@@host, @@port, :slave_ok => true).db('ruby-mongo-demo')
|
13
|
+
!db.master?
|
14
|
+
end
|
15
|
+
|
16
|
+
if self.connect_to_slave
|
17
|
+
puts "Connected to slave; running slave tests."
|
18
|
+
|
19
|
+
def test_connect_to_slave
|
20
|
+
assert_raise Mongo::ConfigurationError do
|
21
|
+
@db = Connection.new(@@host, @@port, :slave_ok => false).db('ruby-mongo-demo')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_slave_ok_sent_to_queries
|
26
|
+
@db = Connection.new(@@host, @@port, :slave_ok => true).db('ruby-mongo-demo')
|
27
|
+
assert_equal true, @db.slave_ok?
|
28
|
+
end
|
29
|
+
else
|
30
|
+
puts "Not connected to slave; skipping slave connection tests."
|
31
|
+
|
32
|
+
def test_slave_ok_false_on_queries
|
33
|
+
@db = Connection.new(@@host, @@port).db('ruby-mongo-demo')
|
34
|
+
assert !@db.slave_ok?
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|