Sha256: 9039f64a6f441fe35a2378ac5b2a15add663bf79768709212d367b55c75bcb21

Contents?: true

Size: 1.82 KB

Versions: 2

Compression:

Stored size: 1.82 KB

Contents

require File.dirname(__FILE__) + '/../../spec_helper'

describe "Flapping" do
  before :each do
    @c = C.p1.merge(      
      :triggers => C.flapping(:times => 4, :within => 10)
    )    
  end

  it "should create trigger from config" do
    start_ok_process(@c)

    triggers = @process.triggers
    triggers.size.should == 1

    triggers.first.class.should == Eye::Trigger::Flapping
    triggers.first.within.should == 10
    triggers.first.times.should == 4
  end

  it "should check speedy flapping by default" do
    start_ok_process(C.p1)

    triggers = @process.triggers
    triggers.size.should == 1

    triggers.first.class.should == Eye::Trigger::Flapping
    triggers.first.within.should == 10
    triggers.first.times.should == 10
  end

  it "process flapping" do
    @process = process(@c.merge(:start_command => @c[:start_command] + " -r"))
    @process.start!

    stub(@process).notify(:warn, anything)
    mock(@process).notify(:crit, anything)

    sleep 13

    # check flapping happens here

    @process.state_name.should == :unmonitored
    @process.watchers.keys.should == []
  end

  it "process flapping emulate with kill" do
    @process = process(@c.merge(:triggers => C.flapping(:times => 3, :within => 7)))

    @process.start

    # 4 times because, flapping flag, check on next switch
    4.times do
      die_process!(@process.pid)
      sleep 3
    end

    @process.state_name.should == :unmonitored
    @process.watchers.keys.should == []
  end

  it "flapping not happens" do
    @process = process(@c)
    @process.start!

    proxy(@process).schedule(:start, anything)
    proxy(@process).schedule(:check_crush, anything)
    dont_allow(@process).schedule(:unmonitor)


    sleep 5

    # even if process die in middle
    die_process!(@process.pid)

    sleep 5

    @process.state_name.should == :up    
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
eye-0.2 spec/process/triggers/flapping_spec.rb
eye-0.1.11 spec/process/triggers/flapping_spec.rb