Class: Flare::Test::Daemon
- Inherits:
-
Object
- Object
- Flare::Test::Daemon
- Includes:
- Singleton
- Defined in:
- lib/flare/test/daemon.rb
Constant Summary collapse
- Flarei =
"/usr/local/bin/flarei"
- Flared =
"/usr/local/bin/flared"
- FlareiVersion =
`#{Flarei} -v`.chomp.split(' ')[-1]
- FlaredVersion =
`#{Flared} -v`.chomp.split(' ')[-1]
Instance Method Summary collapse
- #assign_port ⇒ Object
- #deleteall(delthem) ⇒ Object
-
#initialize ⇒ Daemon
constructor
A new instance of Daemon.
- #invoke_flared(name, config, executable = Flared) ⇒ Object
- #invoke_flarei(name, config, executable = Flarei) ⇒ Object
- #required_version?(required_version) ⇒ Boolean
- #shutdown ⇒ Object
- #shutdown_flared(target_pid) ⇒ Object
Constructor Details
Instance Method Details
#assign_port ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/flare/test/daemon.rb', line 61 def assign_port port = 0 @port_mutex.synchronize do port = @port @port += 1 end port end |
#deleteall(delthem) ⇒ Object
127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/flare/test/daemon.rb', line 127 def deleteall(delthem) return unless FileTest.exist?(delthem) if FileTest.directory?(delthem) Dir.foreach(delthem) do |file| next if /^\.+$/ =~ file deleteall(delthem.sub(/\/+$/,"") + "/" + file) end Dir.rmdir(delthem) rescue "" else File.delete(delthem) end end |
#invoke_flared(name, config, executable = Flared) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/flare/test/daemon.rb', line 94 def invoke_flared(name, config, executable = Flared) config = Flare::Util::FlaredConf.new(config) conf = "/tmp/flared.#{name}.#{config.server_port}.conf" open(conf, "w") do |f| f.puts config.to_s end pid = fork if pid.nil? deleteall(config.data_dir) Dir.mkdir(config.data_dir) begin exec executable, "-f", conf rescue exit 1 end else @flared << pid @tempfiles << config.data_dir @tempfiles << conf end pid end |
#invoke_flarei(name, config, executable = Flarei) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/flare/test/daemon.rb', line 70 def invoke_flarei(name, config, executable = Flarei) config["key-hash-algorithm"] = "crc32" if required_version? [1, 0, 15] config = Flare::Util::FlareiConf.new(config) conf = "/tmp/flarei.#{name}.#{config.server_port}.conf" open(conf, "w") do |f| f.puts config.to_s end pid = fork if pid.nil? deleteall(config.data_dir) Dir.mkdir(config.data_dir) begin exec executable, "-f", conf rescue exit 1 end else @flarei << pid @tempfiles << config.data_dir @tempfiles << conf end pid end |
#required_version?(required_version) ⇒ Boolean
51 52 53 54 55 56 57 58 59 |
# File 'lib/flare/test/daemon.rb', line 51 def required_version? required_version version = FlareiVersion.split('.').map {|i| i.to_i} (0...required_version.size).each do |i| n = if i < version.size then version[i] else 0 end return true if n > required_version[i] return false if n < required_version[i] end true end |
#shutdown ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/flare/test/daemon.rb', line 36 def shutdown STDERR.print "killing..." (@flared+@flarei).each do |pid| kill_node_process(pid) end STDERR.print "\n" Process.waitall @flared.clear @flarei.clear @tempfiles.each do |datadir| deleteall(datadir) end @tempfiles.clear end |
#shutdown_flared(target_pid) ⇒ Object
117 118 119 120 121 122 123 124 125 |
# File 'lib/flare/test/daemon.rb', line 117 def shutdown_flared(target_pid) STDERR.print "killing node..." @flared.each_with_index do |pid, i| next unless pid == target_pid kill_node_process(pid) end STDERR.print "\n" @flared.delete(target_pid) end |