Skip to content
This repository has been archived by the owner on Feb 15, 2018. It is now read-only.

Commit

Permalink
Move daemon to rotate once a minute
Browse files Browse the repository at this point in the history
  • Loading branch information
qrush committed Jan 14, 2011
1 parent 328ab94 commit 69590b6
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 14 deletions.
38 changes: 24 additions & 14 deletions lib/daikon/daemon.rb
@@ -1,38 +1,48 @@
module Daikon
class Daemon
def self.start(argv)
def self.sleep_time=(sleep_time)
@@sleep_time = sleep_time
end

def self.sleep_time
@@sleep_time ||= 1
end

def self.run=(run)
@@run = run
end

def self.run
@@run
end

def self.start(argv, ontop = false)
self.run = true
config = Daikon::Configuration.new(argv)

if argv.include?("-v") || argv.include?("--version")
puts "Daikon v#{VERSION}"
return
end

Daemons.run_proc("daikon", :log_output => true, :backtrace => true) do
Daemons.run_proc("daikon", :ARGV => argv, :log_output => true, :backtrace => true, :ontop => ontop) do
if argv.include?("run")
logger = Logger.new(STDOUT)
else
logger = Logger.new("/tmp/radish.log")
end

count = 0
collected_at = Time.now
client = Daikon::Client.new
client.setup(config, logger)
client.start_monitor

loop do
if count % 5 == 0
client.report_info
end

client.fetch_commands

if count % 10 == 9
while self.run do
if Time.now - collected_at >= sleep_time * 60
collected_at = Time.now
client.rotate_monitor
end

count += 1
sleep 1
sleep sleep_time
end
end
end
Expand Down
19 changes: 19 additions & 0 deletions spec/daemon_spec.rb
@@ -1,6 +1,25 @@
require 'spec_helper'

describe Daikon::Daemon do
let(:client) { stub("client") }

before do
Daikon::Client.stubs(:new => client)
Daikon::Daemon.sleep_time = 0.01
client.stubs(:setup => true, :start_monitor => true, :rotate_monitor => true)
end

it "submits the last minute of data" do
thread = Thread.new do
Daikon::Daemon.start(["run", "--", "-k", "1234"], true)
end
sleep 1
Daikon::Daemon.run = false
client.should have_received(:rotate_monitor)
end
end

describe Daikon::Daemon, "flags" do
%w[-v --version].each do |flag|
it "shows the daikon version with #{flag}" do
old_stdout = $stdout
Expand Down

0 comments on commit 69590b6

Please sign in to comment.