Skip to content

Commit daa77bd

Browse files
committed
minor: further fix race condition in refresh test
1 parent 7d2f224 commit daa77bd

File tree

2 files changed

+29
-48
lines changed

2 files changed

+29
-48
lines changed

test/replica_set/refresh_test.rb

Lines changed: 24 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,104 +1,81 @@
11
require 'test_helper'
2-
require 'benchmark'
32

43
class ReplicaSetRefreshTest < Test::Unit::TestCase
54

65
def setup
76
ensure_cluster(:rs)
87
end
98

10-
def test_connect_and_manual_refresh_with_secondaries_down
9+
def test_connect_and_manual_refresh_with_secondary_down
1110
num_secondaries = @rs.secondaries.size
1211
client = MongoReplicaSetClient.new(@rs.repl_set_seeds, :refresh_mode => false)
1312

1413
assert_equal num_secondaries, client.secondaries.size
1514
assert client.connected?
1615
assert_equal client.read_pool, client.primary_pool
16+
old_refresh_version = client.refresh_version
1717

18-
@rs.secondaries.each {|s| s.stop}
18+
@rs.stop_secondary
1919

2020
client.refresh
21-
assert client.secondaries.empty?
21+
assert_equal num_secondaries - 1, client.secondaries.size
2222
assert client.connected?
2323
assert_equal client.read_pool, client.primary_pool
24+
assert client.refresh_version > old_refresh_version
25+
old_refresh_version = client.refresh_version
2426

2527
# Test no changes after restart until manual refresh
2628
@rs.restart
27-
assert client.secondaries.empty?
29+
assert_equal num_secondaries - 1, client.secondaries.size
2830
assert client.connected?
2931
assert_equal client.read_pool, client.primary_pool
32+
assert_equal client.refresh_version, old_refresh_version
3033

3134
# Refresh and ensure state
3235
client.refresh
33-
assert_equal client.read_pool, client.primary_pool
3436
assert_equal num_secondaries, client.secondaries.size
37+
assert client.connected?
38+
assert_equal client.read_pool, client.primary_pool
39+
assert client.refresh_version > old_refresh_version
3540
end
3641

37-
def test_automated_refresh_with_secondaries_down
42+
def test_automated_refresh_with_secondary_down
3843
num_secondaries = @rs.secondaries.size
3944
client = MongoReplicaSetClient.new(@rs.repl_set_seeds,
4045
:refresh_interval => 1, :refresh_mode => :sync, :read => :secondary_preferred)
4146

42-
# Ensure secondaries not available and read from primary
47+
# Ensure secondaries are all recognized by client and client is connected
4348
assert_equal num_secondaries, client.secondaries.size
4449
assert client.connected?
4550
assert client.secondary_pools.include?(client.read_pool)
51+
pool = client.read_pool
4652

47-
@rs.secondaries.each{|s| s.stop}
53+
@rs.member_by_name(pool.host_string).stop
4854
sleep(2)
4955

56+
old_refresh_version = client.refresh_version
57+
# Trigger synchronous refresh
5058
client['foo']['bar'].find_one
5159

52-
assert client.secondaries.empty?
5360
assert client.connected?
54-
assert_equal client.read_pool, client.primary_pool
55-
56-
old_refresh_version = client.refresh_version
61+
assert client.refresh_version > old_refresh_version
62+
assert_equal num_secondaries - 1, client.secondaries.size
63+
assert client.secondary_pools.include?(client.read_pool)
64+
assert_not_equal pool, client.read_pool
5765

5866
# Restart nodes and ensure refresh interval has passed
5967
@rs.restart
6068
sleep(2)
6169

62-
assert client.refresh_version == old_refresh_version,
63-
"Refresh version has changed."
64-
70+
old_refresh_version = client.refresh_version
6571
# Trigger synchronous refresh
6672
client['foo']['bar'].find_one
6773

74+
assert client.connected?
6875
assert client.refresh_version > old_refresh_version,
6976
"Refresh version hasn't changed."
7077
assert_equal num_secondaries, client.secondaries.size
7178
"No secondaries have been added."
72-
assert client.manager.read_pool != client.manager.primary,
73-
"Read pool and primary pool are identical."
74-
end
75-
76-
def test_automated_refresh_when_secondary_goes_down
77-
client = MongoReplicaSetClient.new(@rs.repl_set_seeds,
78-
:refresh_interval => 1, :refresh_mode => :sync)
79-
80-
num_secondaries = client.secondary_pools.size
81-
old_refresh_version = client.refresh_version
82-
83-
@rs.stop_secondary
84-
sleep(2)
85-
86-
assert client.refresh_version == old_refresh_version,
87-
"Refresh version has changed."
88-
89-
client['foo']['bar'].find_one
90-
91-
assert client.refresh_version > old_refresh_version,
92-
"Refresh version hasn't changed."
93-
assert_equal num_secondaries - 1, client.secondaries.size
94-
assert_equal num_secondaries - 1, client.secondary_pools.size
95-
96-
@rs.restart
97-
sleep(2)
98-
99-
client['foo']['bar'].find_one
100-
101-
assert_equal num_secondaries, client.secondaries.size
10279
assert_equal num_secondaries, client.secondary_pools.size
10380
end
10481
=begin
@@ -150,4 +127,4 @@ def test_adding_and_removing_nodes
150127
assert_equal 2, client.secondaries.length
151128
end
152129
=end
153-
end
130+
end

test/tools/mongo_config.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,10 +430,14 @@ def arbiter_names
430430

431431
def members_by_name(names)
432432
names.collect do |name|
433-
servers.find{|server| server.host_port == name}
433+
member_by_name(name)
434434
end.compact
435435
end
436436

437+
def member_by_name(name)
438+
servers.find{|server| server.host_port == name}
439+
end
440+
437441
def primary
438442
members_by_name([primary_name]).first
439443
end

0 commit comments

Comments
 (0)