mongo 1.5.2 → 1.6.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 (51) hide show
  1. data/Rakefile +24 -8
  2. data/docs/HISTORY.md +15 -0
  3. data/docs/READ_PREFERENCE.md +1 -1
  4. data/docs/RELEASES.md +18 -4
  5. data/docs/REPLICA_SETS.md +5 -5
  6. data/docs/WRITE_CONCERN.md +1 -1
  7. data/lib/mongo/collection.rb +49 -10
  8. data/lib/mongo/connection.rb +7 -24
  9. data/lib/mongo/cursor.rb +3 -1
  10. data/lib/mongo/db.rb +5 -1
  11. data/lib/mongo/exceptions.rb +0 -3
  12. data/lib/mongo/gridfs/grid.rb +1 -1
  13. data/lib/mongo/gridfs/grid_file_system.rb +11 -3
  14. data/lib/mongo/networking.rb +7 -3
  15. data/lib/mongo/repl_set_connection.rb +58 -82
  16. data/lib/mongo/util/logging.rb +26 -18
  17. data/lib/mongo/util/node.rb +11 -2
  18. data/lib/mongo/util/pool_manager.rb +7 -5
  19. data/lib/mongo/util/support.rb +2 -2
  20. data/lib/mongo/util/uri_parser.rb +74 -36
  21. data/lib/mongo/version.rb +1 -1
  22. data/mongo.gemspec +2 -2
  23. data/test/auxillary/authentication_test.rb +8 -0
  24. data/test/auxillary/repl_set_auth_test.rb +1 -2
  25. data/test/bson/ordered_hash_test.rb +1 -1
  26. data/test/bson/test_helper.rb +2 -1
  27. data/test/collection_test.rb +71 -0
  28. data/test/connection_test.rb +9 -0
  29. data/test/db_test.rb +7 -0
  30. data/test/grid_file_system_test.rb +12 -0
  31. data/test/load/thin/load.rb +1 -1
  32. data/test/replica_sets/basic_test.rb +36 -26
  33. data/test/replica_sets/complex_connect_test.rb +44 -0
  34. data/test/replica_sets/connect_test.rb +48 -22
  35. data/test/replica_sets/count_test.rb +4 -6
  36. data/test/replica_sets/insert_test.rb +13 -14
  37. data/test/replica_sets/pooled_insert_test.rb +9 -10
  38. data/test/replica_sets/query_test.rb +4 -4
  39. data/test/replica_sets/read_preference_test.rb +48 -14
  40. data/test/replica_sets/refresh_test.rb +43 -42
  41. data/test/replica_sets/refresh_with_threads_test.rb +10 -9
  42. data/test/replica_sets/replication_ack_test.rb +3 -3
  43. data/test/replica_sets/rs_test_helper.rb +17 -11
  44. data/test/test_helper.rb +2 -1
  45. data/test/tools/repl_set_manager.rb +63 -39
  46. data/test/unit/collection_test.rb +2 -1
  47. data/test/unit/connection_test.rb +22 -0
  48. data/test/unit/cursor_test.rb +6 -3
  49. data/test/unit/read_test.rb +1 -1
  50. data/test/uri_test.rb +17 -2
  51. metadata +151 -167
@@ -0,0 +1,44 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'logger'
3
+ require './test/replica_sets/rs_test_helper'
4
+
5
+ class ComplexConnectTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ ensure_rs
9
+ end
10
+
11
+ def teardown
12
+ @rs.restart_killed_nodes
13
+ @conn.close if defined?(@conn) && @conn
14
+ end
15
+
16
+ def test_complex_connect
17
+ logger = Logger.new(STDOUT)
18
+ primary = Connection.new(@rs.host, @rs.ports[0])
19
+
20
+ @conn = ReplSetConnection.new([@rs.host, @rs.ports[2]], [@rs.host, @rs.ports[1]],
21
+ [@rs.host, @rs.ports[0]], :logger => logger)
22
+
23
+ @conn['test']['foo'].insert({:a => 1})
24
+ assert @conn['test']['foo'].find_one
25
+
26
+ config = primary['local']['system.replset'].find_one
27
+ config['version'] += 1
28
+ config['members'].delete_if do |member|
29
+ member['host'].include?(@rs.ports[2].to_s)
30
+ end
31
+
32
+ assert_raise ConnectionFailure do
33
+ primary['admin'].command({:replSetReconfig => config})
34
+ end
35
+ @rs.ensure_up
36
+ assert_raise ConnectionFailure do
37
+ primary['admin'].command({:replSetStepDown => 1})
38
+ end
39
+
40
+ rescue_connection_failure do
41
+ assert @conn['test']['foo'].find_one
42
+ end
43
+ end
44
+ end
@@ -2,75 +2,73 @@ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  require './test/replica_sets/rs_test_helper'
3
3
 
4
4
  class ConnectTest < Test::Unit::TestCase
5
- include ReplicaSetTest
5
+ def setup
6
+ ensure_rs
7
+ end
6
8
 
7
9
  def teardown
8
- self.rs.restart_killed_nodes
10
+ @rs.restart_killed_nodes
9
11
  @conn.close if defined?(@conn) && @conn
10
12
  end
11
13
 
12
14
  # TODO: test connect timeout.
13
15
 
14
16
  def test_connect_with_deprecated_multi
15
- @conn = Connection.multi([[self.rs.host, self.rs.ports[0]], [self.rs.host, self.rs.ports[1]]], :name => self.rs.name)
17
+ @conn = Connection.multi([[@rs.host, @rs.ports[0]], [@rs.host, @rs.ports[1]]], :name => @rs.name)
16
18
  assert @conn.is_a?(ReplSetConnection)
17
19
  assert @conn.connected?
18
20
  end
19
21
 
20
22
  def test_connect_bad_name
21
23
  assert_raise_error(ReplicaSetConnectionError, "-wrong") do
22
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]], [self.rs.host, self.rs.ports[1]],
23
- [self.rs.host, self.rs.ports[2]], :name => self.rs.name + "-wrong")
24
+ @conn = ReplSetConnection.new(build_seeds(3), :name => @rs.name + "-wrong")
24
25
  end
25
26
  end
26
27
 
27
28
  def test_connect_with_primary_node_killed
28
- node = self.rs.kill_primary
29
+ node = @rs.kill_primary
29
30
 
30
31
  # Becuase we're killing the primary and trying to connect right away,
31
32
  # this is going to fail right away.
32
33
  assert_raise_error(ConnectionFailure, "Failed to connect to primary node") do
33
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]], [self.rs.host, self.rs.ports[1]],
34
- [self.rs.host, self.rs.ports[2]])
34
+ @conn = ReplSetConnection.new build_seeds(3)
35
35
  end
36
36
 
37
37
  # This allows the secondary to come up as a primary
38
38
  rescue_connection_failure do
39
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]], [self.rs.host, self.rs.ports[1]],
40
- [self.rs.host, self.rs.ports[2]])
39
+ @conn = ReplSetConnection.new build_seeds(3)
41
40
  end
42
41
  end
43
42
 
44
43
  def test_connect_with_secondary_node_killed
45
- node = self.rs.kill_secondary
44
+ node = @rs.kill_secondary
46
45
 
47
46
  rescue_connection_failure do
48
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]], [self.rs.host, self.rs.ports[1]],
49
- [self.rs.host, self.rs.ports[2]])
47
+ @conn = ReplSetConnection.new build_seeds(3)
50
48
  end
51
49
  assert @conn.connected?
52
50
  end
53
51
 
54
52
  def test_connect_with_third_node_killed
55
- self.rs.kill(self.rs.get_node_from_port(self.rs.ports[2]))
53
+ @rs.kill(@rs.get_node_from_port(@rs.ports[2]))
56
54
 
57
55
  rescue_connection_failure do
58
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]], [self.rs.host, self.rs.ports[1]],
59
- [self.rs.host, self.rs.ports[2]])
56
+ @conn = ReplSetConnection.new build_seeds(3)
60
57
  end
61
58
  assert @conn.connected?
62
59
  end
63
60
 
64
61
  def test_connect_with_primary_stepped_down
65
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]], [self.rs.host, self.rs.ports[1]],
66
- [self.rs.host, self.rs.ports[2]])
62
+ @conn = ReplSetConnection.new build_seeds(3)
67
63
  @conn[MONGO_TEST_DB]['bar'].save({:a => 1}, {:safe => {:w => 3}})
68
64
  assert @conn[MONGO_TEST_DB]['bar'].find_one
69
65
 
70
66
  primary = Mongo::Connection.new(@conn.primary_pool.host, @conn.primary_pool.port)
71
- primary['admin'].command({:replSetStepDown => 60})
67
+ assert_raise Mongo::ConnectionFailure do
68
+ primary['admin'].command({:replSetStepDown => 60})
69
+ end
72
70
  assert @conn.connected?
73
- assert_raise_error Mongo::ConnectionFailure, "not master" do
71
+ assert_raise Mongo::ConnectionFailure do
74
72
  @conn[MONGO_TEST_DB]['bar'].find_one
75
73
  end
76
74
  assert !@conn.connected?
@@ -80,14 +78,42 @@ class ConnectTest < Test::Unit::TestCase
80
78
  end
81
79
  end
82
80
 
81
+ def test_save_with_primary_stepped_down
82
+ @conn = ReplSetConnection.new build_seeds(3)
83
+
84
+ primary = Mongo::Connection.new(@conn.primary_pool.host, @conn.primary_pool.port)
85
+
86
+ # Adding force=true to avoid 'no secondaries within 10 seconds of my optime' errors
87
+ step_down_command = BSON::OrderedHash.new
88
+ step_down_command[:replSetStepDown] = 60
89
+ step_down_command[:force] = true
90
+ assert_raise Mongo::ConnectionFailure do
91
+ primary['admin'].command(step_down_command)
92
+ end
93
+
94
+ rescue_connection_failure do
95
+ @conn[MONGO_TEST_DB]['bar'].save({:a => 1}, {:safe => {:w => 3}})
96
+ end
97
+ end
98
+
83
99
  def test_connect_with_connection_string
84
- @conn = Connection.from_uri("mongodb://#{self.rs.host}:#{self.rs.ports[0]},#{self.rs.host}:#{self.rs.ports[1]}?replicaset=#{self.rs.name}")
100
+ @conn = Connection.from_uri("mongodb://#{@rs.host}:#{@rs.ports[0]},#{@rs.host}:#{@rs.ports[1]}?replicaset=#{@rs.name}")
85
101
  assert @conn.is_a?(ReplSetConnection)
86
102
  assert @conn.connected?
87
103
  end
104
+
105
+ def test_connect_with_new_seed_format
106
+ @conn = ReplSetConnection.new build_seeds(3)
107
+ assert @conn.connected?
108
+ end
109
+
110
+ def test_connect_with_old_seed_format
111
+ @conn = ReplSetConnection.new([@rs.host, @rs.ports[0]], [@rs.host, @rs.ports[1]], [@rs.host, @rs.ports[2]])
112
+ assert @conn.connected?
113
+ end
88
114
 
89
115
  def test_connect_with_full_connection_string
90
- @conn = Connection.from_uri("mongodb://#{self.rs.host}:#{self.rs.ports[0]},#{self.rs.host}:#{self.rs.ports[1]}?replicaset=#{self.rs.name};safe=true;w=2;fsync=true;slaveok=true")
116
+ @conn = Connection.from_uri("mongodb://#{@rs.host}:#{@rs.ports[0]},#{@rs.host}:#{@rs.ports[1]}?replicaset=#{@rs.name};safe=true;w=2;fsync=true;slaveok=true")
91
117
  assert @conn.is_a?(ReplSetConnection)
92
118
  assert @conn.connected?
93
119
  assert_equal 2, @conn.safe[:w]
@@ -2,12 +2,10 @@ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  require './test/replica_sets/rs_test_helper'
3
3
 
4
4
  class ReplicaSetCountTest < Test::Unit::TestCase
5
- include ReplicaSetTest
6
5
 
7
6
  def setup
8
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]],
9
- [self.rs.host, self.rs.ports[1]], [self.rs.host, self.rs.ports[2]],
10
- :read => :secondary)
7
+ ensure_rs
8
+ @conn = ReplSetConnection.new(build_seeds(3), :read => :secondary)
11
9
  assert @conn.primary_pool
12
10
  @primary = Connection.new(@conn.primary_pool.host, @conn.primary_pool.port)
13
11
  @db = @conn.db(MONGO_TEST_DB)
@@ -16,7 +14,7 @@ class ReplicaSetCountTest < Test::Unit::TestCase
16
14
  end
17
15
 
18
16
  def teardown
19
- self.rs.restart_killed_nodes
17
+ @rs.restart_killed_nodes
20
18
  @conn.close if @conn
21
19
  end
22
20
 
@@ -25,7 +23,7 @@ class ReplicaSetCountTest < Test::Unit::TestCase
25
23
  assert_equal 1, @coll.count
26
24
 
27
25
  # Kill the current master node
28
- @node = self.rs.kill_primary
26
+ @node = @rs.kill_primary
29
27
 
30
28
  rescue_connection_failure do
31
29
  @coll.insert({:a => 30}, :safe => true)
@@ -2,38 +2,37 @@ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  require './test/replica_sets/rs_test_helper'
3
3
 
4
4
  class ReplicaSetInsertTest < Test::Unit::TestCase
5
- include ReplicaSetTest
6
5
 
7
6
  def setup
8
- @conn = ReplSetConnection.new([TEST_HOST, self.rs.ports[0]],
9
- [TEST_HOST, self.rs.ports[1]], [TEST_HOST, self.rs.ports[2]])
7
+ ensure_rs
8
+ @conn = ReplSetConnection.new build_seeds(3)
10
9
  @db = @conn.db(MONGO_TEST_DB)
11
10
  @db.drop_collection("test-sets")
12
11
  @coll = @db.collection("test-sets")
13
12
  end
14
13
 
15
14
  def teardown
16
- self.rs.restart_killed_nodes
15
+ @rs.restart_killed_nodes
17
16
  @conn.close if @conn
18
17
  end
19
18
 
20
19
  def test_insert
21
- @coll.save({:a => 20}, :safe => true)
20
+ @coll.save({:a => 20}, :safe => {:w => 2})
22
21
 
23
- self.rs.kill_primary
22
+ @rs.kill_primary
24
23
 
25
24
  rescue_connection_failure do
26
- @coll.save({:a => 30}, :safe => true)
25
+ @coll.save({:a => 30}, :safe => {:w => 2})
27
26
  end
28
27
 
29
- @coll.save({:a => 40}, :safe => true)
30
- @coll.save({:a => 50}, :safe => true)
31
- @coll.save({:a => 60}, :safe => true)
32
- @coll.save({:a => 70}, :safe => true)
28
+ @coll.save({:a => 40}, :safe => {:w => 2})
29
+ @coll.save({:a => 50}, :safe => {:w => 2})
30
+ @coll.save({:a => 60}, :safe => {:w => 2})
31
+ @coll.save({:a => 70}, :safe => {:w => 2})
33
32
 
34
33
  # Restart the old master and wait for sync
35
- self.rs.restart_killed_nodes
36
- sleep(1)
34
+ @rs.restart_killed_nodes
35
+ sleep(5)
37
36
  results = []
38
37
 
39
38
  rescue_connection_failure do
@@ -43,7 +42,7 @@ class ReplicaSetInsertTest < Test::Unit::TestCase
43
42
  end
44
43
  end
45
44
 
46
- @coll.save({:a => 80}, :safe => true)
45
+ @coll.save({:a => 80}, :safe => {:w => 2})
47
46
  @coll.find.each {|r| results << r}
48
47
  [20, 30, 40, 50, 60, 70, 80].each do |a|
49
48
  assert results.any? {|r| r['a'] == a}, "Could not find record for a => #{a} on second find"
@@ -4,32 +4,31 @@ require './test/replica_sets/rs_test_helper'
4
4
  # NOTE: This test expects a replica set of three nodes to be running
5
5
  # on the local host.
6
6
  class ReplicaSetPooledInsertTest < Test::Unit::TestCase
7
- include ReplicaSetTest
8
7
 
9
8
  def setup
10
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]], [self.rs.host, self.rs.ports[1]],
11
- [self.rs.host, self.rs.ports[2]], :pool_size => 5, :timeout => 5, :refresh_mode => false)
9
+ ensure_rs
10
+ @conn = ReplSetConnection.new(build_seeds(3), :pool_size => 5, :timeout => 5, :refresh_mode => false)
12
11
  @db = @conn.db(MONGO_TEST_DB)
13
12
  @db.drop_collection("test-sets")
14
13
  @coll = @db.collection("test-sets")
15
14
  end
16
15
 
17
16
  def teardown
18
- self.rs.restart_killed_nodes
17
+ @rs.restart_killed_nodes
19
18
  @conn.close if @conn
20
19
  end
21
20
 
22
21
  def test_insert
23
22
  expected_results = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
24
- @coll.save({:a => -1}, :safe => true)
23
+ @coll.save({:a => -1}, :safe => {:w => 2})
25
24
 
26
- self.rs.kill_primary
25
+ @rs.kill_primary
27
26
 
28
27
  threads = []
29
28
  10.times do |i|
30
29
  threads[i] = Thread.new do
31
30
  rescue_connection_failure do
32
- @coll.save({:a => i}, :safe => true)
31
+ @coll.save({:a => i}, :safe => {:w => 2})
33
32
  end
34
33
  end
35
34
  end
@@ -37,8 +36,8 @@ class ReplicaSetPooledInsertTest < Test::Unit::TestCase
37
36
  threads.each {|t| t.join}
38
37
 
39
38
  # Restart the old master and wait for sync
40
- self.rs.restart_killed_nodes
41
- sleep(1)
39
+ @rs.restart_killed_nodes
40
+ sleep(5)
42
41
  results = []
43
42
 
44
43
  rescue_connection_failure do
@@ -48,7 +47,7 @@ class ReplicaSetPooledInsertTest < Test::Unit::TestCase
48
47
  end
49
48
  end
50
49
 
51
- @coll.save({:a => 10}, :safe => true)
50
+ @coll.save({:a => 10}, :safe => {:w => 2})
52
51
  @coll.find.each {|r| results << r}
53
52
  (expected_results + [10]).each do |a|
54
53
  assert results.any? {|r| r['a'] == a}, "Could not find record for a => #{a} on second find"
@@ -2,17 +2,17 @@ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  require './test/replica_sets/rs_test_helper'
3
3
 
4
4
  class ReplicaSetQueryTest < Test::Unit::TestCase
5
- include ReplicaSetTest
6
5
 
7
6
  def setup
8
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]])
7
+ ensure_rs
8
+ @conn = ReplSetConnection.new build_seeds(1)
9
9
  @db = @conn.db(MONGO_TEST_DB)
10
10
  @db.drop_collection("test-sets")
11
11
  @coll = @db.collection("test-sets")
12
12
  end
13
13
 
14
14
  def teardown
15
- self.rs.restart_killed_nodes
15
+ @rs.restart_killed_nodes
16
16
  @conn.close if @conn
17
17
  end
18
18
 
@@ -28,7 +28,7 @@ class ReplicaSetQueryTest < Test::Unit::TestCase
28
28
 
29
29
  puts "Benchmark before failover: #{benchmark_queries}"
30
30
 
31
- self.rs.kill_primary
31
+ @rs.kill_primary
32
32
 
33
33
  results = []
34
34
  rescue_connection_failure do
@@ -3,21 +3,25 @@ require './test/replica_sets/rs_test_helper'
3
3
  require 'logger'
4
4
 
5
5
  class ReadPreferenceTest < Test::Unit::TestCase
6
- include ReplicaSetTest
7
6
 
8
7
  def setup
8
+ ensure_rs
9
9
  log = Logger.new("test.log")
10
- @conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]],
11
- [self.rs.host, self.rs.ports[1]],
12
- :read => :secondary, :pool_size => 50,
13
- :refresh_mode => false, :refresh_interval => 5, :logger => log)
10
+ seeds = build_seeds(2)
11
+ args = {
12
+ :read => :secondary,
13
+ :pool_size => 50,
14
+ :refresh_mode => false,
15
+ :refresh_interval => 5,
16
+ :logger => log
17
+ }
18
+ @conn = ReplSetConnection.new(seeds, args)
14
19
  @db = @conn.db(MONGO_TEST_DB)
15
20
  @db.drop_collection("test-sets")
16
- col = @db['mongo-test']
17
21
  end
18
22
 
19
23
  def teardown
20
- self.rs.restart_killed_nodes
24
+ @rs.restart_killed_nodes
21
25
  end
22
26
 
23
27
  def test_read_primary
@@ -34,8 +38,38 @@ class ReadPreferenceTest < Test::Unit::TestCase
34
38
  "Primary port and read port at the same!"
35
39
  end
36
40
 
41
+ def test_read_secondary_only
42
+ @rs.add_arbiter
43
+ @rs.remove_secondary_node
44
+
45
+ @conn = ReplSetConnection.new(build_seeds(2), :read => :secondary_only)
46
+
47
+ @db = @conn.db(MONGO_TEST_DB)
48
+ @coll = @db.collection("test-sets")
49
+
50
+ @coll.save({:a => 20}, :safe => {:w => 2})
51
+
52
+ # Test that reads are going to secondary on ReplSetConnection
53
+ @secondary = Connection.new(@rs.host, @conn.read_pool.port, :slave_ok => true)
54
+ queries_before = @secondary['admin'].command({:serverStatus => 1})['opcounters']['query']
55
+ @coll.find_one
56
+ queries_after = @secondary['admin'].command({:serverStatus => 1})['opcounters']['query']
57
+ assert_equal 1, queries_after - queries_before
58
+
59
+ @rs.kill_secondary
60
+ @conn.refresh
61
+
62
+ # Test that reads are only allowed from secondaries
63
+ assert_raise ConnectionFailure.new("Could not connect to a secondary for reading.") do
64
+ @coll.find_one
65
+ end
66
+
67
+ @rs = ReplSetManager.new
68
+ @rs.start_set
69
+ end
70
+
37
71
  def test_query_secondaries
38
- @secondary = Connection.new(self.rs.host, @conn.read_pool.port, :slave_ok => true)
72
+ @secondary = Connection.new(@rs.host, @conn.read_pool.port, :slave_ok => true)
39
73
  @coll = @db.collection("test-sets", :safe => {:w => 3, :wtimeout => 20000})
40
74
  @coll.save({:a => 20})
41
75
  @coll.save({:a => 30})
@@ -49,7 +83,7 @@ class ReadPreferenceTest < Test::Unit::TestCase
49
83
  assert results.include?(30)
50
84
  assert results.include?(40)
51
85
 
52
- self.rs.kill_primary
86
+ @rs.kill_primary
53
87
 
54
88
  results = []
55
89
  rescue_connection_failure do
@@ -68,13 +102,13 @@ class ReadPreferenceTest < Test::Unit::TestCase
68
102
  assert_equal 2, @coll.find.to_a.length
69
103
 
70
104
  # Should still be able to read immediately after killing master node
71
- self.rs.kill_primary
105
+ @rs.kill_primary
72
106
  assert_equal 2, @coll.find.to_a.length
73
107
  rescue_connection_failure do
74
108
  puts "@coll.save()"
75
109
  @coll.save({:a => 50}, :safe => {:w => 2, :wtimeout => 10000})
76
110
  end
77
- self.rs.restart_killed_nodes
111
+ @rs.restart_killed_nodes
78
112
  @coll.save({:a => 50}, :safe => {:w => 2, :wtimeout => 10000})
79
113
  assert_equal 4, @coll.find.to_a.length
80
114
  end
@@ -85,8 +119,8 @@ class ReadPreferenceTest < Test::Unit::TestCase
85
119
  @coll.save({:a => 30})
86
120
  assert_equal 2, @coll.find.to_a.length
87
121
 
88
- read_node = self.rs.get_node_from_port(@conn.read_pool.port)
89
- self.rs.kill(read_node)
122
+ read_node = @rs.get_node_from_port(@conn.read_pool.port)
123
+ @rs.kill(read_node)
90
124
 
91
125
  # Should fail immediately on next read
92
126
  old_read_pool_port = @conn.read_pool.port
@@ -141,7 +175,7 @@ class ReadPreferenceTest < Test::Unit::TestCase
141
175
  # end
142
176
 
143
177
  #def teardown
144
- # self.rs.restart_killed_nodes
178
+ # @rs.restart_killed_nodes
145
179
  #end
146
180
 
147
181
  end