Class: Flare::Test::Cluster
Overview
Constant Summary
Flare::Tools::Common::NodeListFormat, Flare::Tools::Common::NodeListHeader
Instance Method Summary
collapse
#address_of_hostname, #fetch_cluster, #hostname_of_address, #nodekey_of, #string_of_nodelist, #user_confirmed, #wait_for_master_construction, #wait_for_servers, #wait_for_slave_construction
#debug, #error, #fatal, #info, logger, #puts, set_logger, #trace, #warn
Constructor Details
#initialize(name, option = {}) ⇒ Cluster
Returns a new instance of Cluster.
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
|
# File 'lib/flare/test/cluster.rb', line 20
def initialize(name, option = {})
if ENV.has_key?("FLARE_INDEX_DB") && !option.has_key?("index-db")
option["index-db"] = ENV["FLARE_INDEX_DB"]
end
if option.has_key?("index-db")
uri = URI.parse(option["index-db"])
if uri.scheme == "zookeeper"
z = ::Zookeeper.new("#{uri.host}:#{uri.port}")
Flare::Tools::ZkUtil.clear_nodemap z, uri.path
z.close
end
end
daemon = Daemon.instance
@indexport = daemon.assign_port
@workdir = Dir.pwd+"/work"
@datadir = [@workdir, "#{name}.#{@indexport}"].join('/')
@nodes = {}
@indexname = "localhost"
@index_pid = daemon.invoke_flarei(name, {
'server-name' => @indexname,
'server-port' => @indexport,
'data-dir' => @datadir,
}.merge(option))
@flare_xml = [@datadir, "flare.xml"].join('/')
sleep 1
end
|
Instance Method Details
#clear_data(node) ⇒ Object
124
125
126
127
128
|
# File 'lib/flare/test/cluster.rb', line 124
def clear_data(node)
Flare::Tools::Node.open(node.hostname, node.port, 10) do |n|
n.flush_all
end
end
|
#create_node(name, config = {}, executable = Daemon::Flared) ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/flare/test/cluster.rb', line 58
def create_node(name, config = {}, executable = Daemon::Flared)
daemon = Daemon.instance
serverport = daemon.assign_port
datadir = [@datadir, "#{name}.#{serverport}"].join('.')
servername = "localhost"
pid = daemon.invoke_flared(name, {
'index-server-name' => @indexname,
'index-server-port' => @indexport,
'server-name' => servername,
'server-port' => serverport,
'data-dir' => datadir,
}.merge(config), executable)
hostname_port = "#{servername}:#{serverport}"
node = @nodes[hostname_port] = Node.new(hostname_port, pid)
node
end
|
#exist?(node) ⇒ Boolean
130
131
132
133
134
135
|
# File 'lib/flare/test/cluster.rb', line 130
def exist?(node)
return Flare::Tools::IndexServer.open(indexname, indexport, 10) do |s|
nodes_stats = s.stats_nodes
nodes_stats.has_key? node
end
end
|
#index ⇒ Object
137
138
139
140
141
|
# File 'lib/flare/test/cluster.rb', line 137
def index
open(@flare_xml) do |f|
f.read
end
end
|
#indexname ⇒ Object
50
51
52
|
# File 'lib/flare/test/cluster.rb', line 50
def indexname
@indexname
end
|
#indexport ⇒ Object
54
55
56
|
# File 'lib/flare/test/cluster.rb', line 54
def indexport
@indexport
end
|
#nodes ⇒ Object
87
88
89
|
# File 'lib/flare/test/cluster.rb', line 87
def nodes
@nodes.values
end
|
#prepare_data(node, prefix, count) ⇒ Object
115
116
117
118
119
120
121
122
|
# File 'lib/flare/test/cluster.rb', line 115
def prepare_data(node, prefix, count)
Flare::Tools::Node.open(node.hostname, node.port, 10) do |n|
fmt = "#{prefix}%010.10d"
(0...count).each do |i|
n.set(fmt % i, "All your base are belong to us.")
end
end
end
|
#prepare_master_and_slaves(nodes, partition = 0) ⇒ Object
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/flare/test/cluster.rb', line 97
def prepare_master_and_slaves(nodes, partition = 0)
Flare::Tools::IndexServer.open(indexname, indexport, 10) do |s|
slaves = nodes.dup
master = slaves.shift
s.set_role(master.hostname, master.port, 'master', 1, partition)
wait_for_master_construction(s, "#{master.hostname}:#{master.port}", 10)
s.set_state(master.hostname, master.port, 'active')
slaves.each do |n|
s.set_role(n.hostname, n.port, 'slave', 1, partition)
wait_for_slave_construction(s, "#{n.hostname}:#{n.port}", 10, true)
end
end
end
|
#shutdown ⇒ Object
77
78
79
80
|
# File 'lib/flare/test/cluster.rb', line 77
def shutdown
daemon = Daemon.instance
daemon.shutdown
end
|
#shutdown_node(node) ⇒ Object
82
83
84
85
|
# File 'lib/flare/test/cluster.rb', line 82
def shutdown_node(node)
daemon = Daemon.instance
daemon.shutdown_flared(node.pid)
end
|
#wait_for_ready ⇒ Object
91
92
93
94
95
|
# File 'lib/flare/test/cluster.rb', line 91
def wait_for_ready
Flare::Tools::IndexServer.open(indexname, indexport, 10) do |s|
wait_for_servers(s)
end
end
|