Commit 1beb7bf8 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

merge v0.9.4

parents 9ec13dfa e9224c9c
Loading
Loading
Loading
Loading

doc/spec/toplist_gauge_spec.rb

deleted100644 → 0
+0 −54
Original line number Diff line number Diff line
require ::File.expand_path('../spec_helper.rb', __FILE__)

describe FnordMetric::ToplistGauge do

  before(:all) do    
    @now = Time.utc(1992,01,13,5,23,23).to_i    
    @redis = Redis.new
    @redis_wrap = RedisWrap.new(@redis, false)
    @gauge_klass = FnordMetric::ToplistGauge
  end

  before(:each) do
    @redis.keys("fnordmetric-myns*").each { |k| @redis.del(k) }  
  end

  it_should_behave_like FnordMetric::GaugeLike

  describe "option validation" do

    it "should raise when initialized without ticks key" do
      lambda{
        FnordMetric::NumericGauge.new(
          :key => 123, 
          :series => [:fu],
          :key_prefix => 123
        )
      }.should raise_exception
    end

    it "should raise when initialized with emtpy ticks" do
      lambda{
        FnordMetric::NumericGauge.new(
          :ticks => [],
          :series => [:fu],
          :key => 123, 
          :key_prefix => 123
        )
      }.should raise_exception
    end

    it "should raise when initialized with invalid ticks" do
      lambda{
        FnordMetric::NumericGauge.new(
          :ticks => ["fnord"],
          :series => ["fu"],
          :key => 123, 
          :key_prefix => 123
        )
      }.should raise_exception
    end

  end

end

doc/v0.9_example.rb

0 → 100644
+80 −0
Original line number Diff line number Diff line
$: << ::File.expand_path("../../../fnordmetric/lib/", __FILE__)
require "fnordmetric"

FnordMetric.options = {
  :event_queue_ttl  => 10, # all data that isn't processed within 10s is discarded to prevent memory overruns
  :event_data_ttl   => 10,
  :session_data_ttl => 1,  # we don't care about session data for now
  :redis_prefix => "fnordmetric-dawanda" 
}

FnordMetric.namespace :ulm do

  gauge :skip_votes, :tick => 1.day.to_i, :title => "Skip-Votes"
  gauge :yes_votes, :tick => 1.day.to_i, :title => "Yes-Votes"
  gauge :maybe_votes, :tick => 1.day.to_i, :title => "Maybe-Votes"

  gauge :messages_sent, :tick => 1.day.to_i, :title => "Messages (sent)"
  gauge :messages_read, :tick => 1.day.to_i, :title => "Messages (read)"
  gauge :winks_sent, :tick => 1.day.to_i, :title => "Winks sent"


  gauge :gross_search_volume,
    :type => :numeric_timeseries,
    :tick => 30.seconds,
    :group => "Search",
    :title => "Gross Search Volume",
    :key_nouns => ["Search", "Searches"],
    :series => [:without_filter, :with_filter]
    #:enable_punchcard => true,
    #:enable_realtime => true


  widget 'Overview', {
    :title => "Yes/No/Skip-Votes",
    :type => :timeline,
    :gauges => [:skip_votes, :yes_votes, :maybe_votes]
  }

  widget 'Overview', {
    :title => "Yes/No/Skip Numbers",
    :type => :numbers,
    :gauges => [:skip_votes, :yes_votes, :maybe_votes]
  }

  widget 'Overview', {
    :title => "Messages sent/read",
    :type => :timeline,
    :gauges => [:messages_sent, :messages_read, :winks_sent]
  }

  widget 'Overview', {
    :title => "Messages sent+read/Winks Numbers",
    :type => :numbers,
    :gauges => [:messages_sent, :messages_read, :winks_sent]
  }
  
  widget 'Overview', {
    :title => "User-Activity",
    :type => :timeline,
    :width => 67,
    :autoupdate => 30,
    :gauges => [:skip_votes, :yes_votes, :maybe_votes]
  }

end

FnordMetric.options = {
  :print_stats => 3
}

FnordMetric::Logger.new(
  :file => '/home/paul/fnordmetric.log',
  :channels => ["dawanda-firehose"]
)

FnordMetric::Web.new(:port => 4242)

FnordMetric::Acceptor.new(:protocol => :tcp, :port => 2323)

FnordMetric.run
 No newline at end of file
+47 −23
Original line number Diff line number Diff line
@@ -24,7 +24,12 @@ module FnordMetric
  end

  def self.namespaces
    @@namespaces
    {}.tap do |_namespaces|
      @@namespaces.each do |key, block|
        _namespaces[key] = FnordMetric::Namespace.new(key, options.clone)
        _namespaces[key].instance_eval(&block)
      end
    end
  end

  def self.backend
@@ -109,25 +114,57 @@ module FnordMetric

  def self.standalone
    puts "DEPRECATION WARNING - FIXPAUL"
    FnordMetric::Web.new(
      :host => options[:web_interface][0],
      :port => options[:web_interface][1]
    )
    require "fnordmetric/standalone"
    start_em
  end

end



require "fnordmetric/remote_gauge"
require "fnordmetric/multi_gauge"
require "fnordmetric/event_handler"
require "fnordmetric/namespace"
require "fnordmetric/session"
require "fnordmetric/gauge_calculations"
require "fnordmetric/gauge_modifiers"
require "fnordmetric/gauge_validations"
require "fnordmetric/gauge_rendering"
require "fnordmetric/gauge"
require "fnordmetric/context"

require "fnordmetric/api"
require "fnordmetric/worker"

require "fnordmetric/web/web"
require "fnordmetric/web/app_helpers"
require "fnordmetric/web/app"
require "fnordmetric/web/websocket"
require "fnordmetric/web/reactor"
require "fnordmetric/web/event"
require "fnordmetric/web/dashboard"



require "fnordmetric/widgets/widget"
require "fnordmetric/widgets/timeseries_widget"
require "fnordmetric/widgets/numbers_widget"







require "fnordmetric/logger"



require "fnordmetric/remote_gauge"
require "fnordmetric/multi_gauge"
require "fnordmetric/event_handler"





require "fnordmetric/backends/redis_backend"
require "fnordmetric/backends/memory_backend"

@@ -139,25 +176,12 @@ require "fnordmetric/acceptors/udp_acceptor"


require "fnordmetric/gauges/dummy_gauge"
require "fnordmetric/gauges/numeric_gauge"
require "fnordmetric/gauges/numeric_timeseries_gauge"
require "fnordmetric/gauges/realtime_gauge"

require "fnordmetric/widgets/widget"
require "fnordmetric/widgets/timeline_widget"
require "fnordmetric/widgets/numbers_widget"
require "fnordmetric/widgets/realtime_value_widget"


require "fnordmetric/web/web"
require "fnordmetric/web/namespace"
require "fnordmetric/web/app"
require "fnordmetric/web/websocket"
require "fnordmetric/web/event"
require "fnordmetric/web/dashboard"
require "fnordmetric/web/session"

require "fnordmetric/logger"


 # require "fnordmetric/context"

+5 −3
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ class FnordMetric::TCPAcceptor < EventMachine::Connection
  def push_next_event
    return true if @events.empty?
    @events_buffered -= 1
    @backend.publish(@events.pop)
    api.event(@events.pop)
    close_connection?
    EM.next_tick(&method(:push_next_event))
  end
@@ -40,8 +40,6 @@ class FnordMetric::TCPAcceptor < EventMachine::Connection
  end

  def post_init
    puts options.inspect
    @backend = options[:backend][0].new(options[:backend][1])
    @events_buffered = 0
    @streaming = true
    @buffer = ""
@@ -52,4 +50,8 @@ class FnordMetric::TCPAcceptor < EventMachine::Connection
    @streaming = false
    close_connection?
  end

  def api
    @api ||= FnordMetric::API.new
  end
end
+4 −3
Original line number Diff line number Diff line
@@ -7,8 +7,6 @@ class FnordMetric::UDPAcceptor < EventMachine::Connection
  def self.start(opts)
    self.opts = opts

    @backend = @opts[:backend][0].new(@opts[:backend][1])

    EM.open_datagram_socket(*(opts[:listen] << self << opts))
  end

@@ -20,7 +18,7 @@ class FnordMetric::UDPAcceptor < EventMachine::Connection
  def push_next_event
    return true if events.empty?
    ev = @events.pop
    backend.publish(ev)
    apu.event(ev)
    EM.next_tick(&method(:push_next_event))
  end

@@ -32,4 +30,7 @@ class FnordMetric::UDPAcceptor < EventMachine::Connection
    @events ||= []
  end

  def api
    @api ||= FnordMetric::API.new
  end
end
 No newline at end of file
Loading