class Flare::Test::Cluster
Description¶ ↑
Public Class Methods
new(name, option = {})
click to toggle source
# File lib/flare/test/cluster.rb, line 19 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
Public Instance Methods
clear_data(node)
click to toggle source
# File lib/flare/test/cluster.rb, line 123 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)
click to toggle source
# File lib/flare/test/cluster.rb, line 57 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)
click to toggle source
# File lib/flare/test/cluster.rb, line 129 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()
click to toggle source
# File lib/flare/test/cluster.rb, line 136 def index open(@flare_xml) do |f| f.read end end
indexname()
click to toggle source
# File lib/flare/test/cluster.rb, line 49 def indexname @indexname end
indexport()
click to toggle source
# File lib/flare/test/cluster.rb, line 53 def indexport @indexport end
nodes()
click to toggle source
# File lib/flare/test/cluster.rb, line 86 def nodes @nodes.values end
prepare_data(node, prefix, count)
click to toggle source
# File lib/flare/test/cluster.rb, line 114 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)
click to toggle source
# File lib/flare/test/cluster.rb, line 96 def prepare_master_and_slaves(nodes, partition = 0) Flare::Tools::IndexServer.open(indexname, indexport, 10) do |s| slaves = nodes.dup master = slaves.shift # master 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') # slave 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()
click to toggle source
# File lib/flare/test/cluster.rb, line 76 def shutdown daemon = Daemon.instance daemon.shutdown end
shutdown_node(node)
click to toggle source
# File lib/flare/test/cluster.rb, line 81 def shutdown_node(node) daemon = Daemon.instance daemon.shutdown_flared(node.pid) end
wait_for_ready()
click to toggle source
# File lib/flare/test/cluster.rb, line 90 def wait_for_ready Flare::Tools::IndexServer.open(indexname, indexport, 10) do |s| wait_for_servers(s) end end