-
Notifications
You must be signed in to change notification settings - Fork 532
/
basic_test.rb
93 lines (82 loc) · 2.04 KB
/
basic_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
require 'test_helper'
include Mongo
class BasicTest < Test::Unit::TestCase
def setup
ensure_cluster(:sc)
end
def self.shutdown
@@cluster.stop
@@cluster.clobber
end
# TODO member.primary? ==> true
def test_connect
seeds = @sc.mongos_seeds
@client = MongoShardedClient.new(seeds)
assert @client.connected?
assert_equal(seeds.size, @client.seeds.size)
probe(seeds.size)
@client.close
end
def test_hard_refresh
seeds = @sc.mongos_seeds
@client = MongoShardedClient.new(seeds)
assert @client.connected?
@client.hard_refresh!
assert @client.connected?
@client.close
end
def test_reconnect
seeds = @sc.mongos_seeds
@client = MongoShardedClient.new(seeds)
assert @client.connected?
router = @sc.servers(:routers).first
router.stop
probe(seeds.size)
assert @client.connected?
@client.close
end
def test_all_down
seeds = @sc.mongos_seeds
@client = MongoShardedClient.new(seeds)
assert @client.connected?
@sc.servers(:routers).each{|router| router.stop}
assert_raises Mongo::ConnectionFailure do
probe(seeds.size)
end
assert_false @client.connected?
@client.close
end
def test_cycle
seeds = @sc.mongos_seeds
@client = MongoShardedClient.new(seeds)
assert @client.connected?
routers = @sc.servers(:routers)
while routers.size > 0 do
rescue_connection_failure do
probe(seeds.size)
end
probe(seeds.size)
router = routers.detect{|r| r.port == @client.manager.primary.last}
routers.delete(router)
router.stop
end
assert_raises Mongo::ConnectionFailure do
probe(seeds.size)
end
assert_false @client.connected?
routers = @sc.servers(:routers).reverse
routers.each do |r|
r.start
@client.hard_refresh!
rescue_connection_failure do
probe(seeds.size)
end
probe(seeds.size)
end
@client.close
end
private
def probe(size)
assert_equal(size, @client['config']['mongos'].find.to_a.size)
end
end