mirror of
https://github.com/jimeh/redistat.git
synced 2026-02-19 13:26:39 +00:00
68 lines
2.1 KiB
Ruby
68 lines
2.1 KiB
Ruby
require "spec_helper"
|
|
|
|
describe Redistat::Buffer do
|
|
|
|
before(:each) do
|
|
@class = Redistat::Buffer
|
|
@buffer = Redistat::Buffer.instance
|
|
end
|
|
|
|
# let's cleanup after ourselves for the other specs
|
|
after(:each) do
|
|
@class.instance_variable_set("@instance", nil)
|
|
@buffer.size = 0
|
|
end
|
|
|
|
it "should provide instance of itself" do
|
|
@buffer.should be_a(@class)
|
|
end
|
|
|
|
it "should only buffer if buffer size setting is greater than 1" do
|
|
@buffer.size.should == 0
|
|
@buffer.send(:should_buffer?).should be_false
|
|
@buffer.size = 1
|
|
@buffer.size.should == 1
|
|
@buffer.send(:should_buffer?).should be_false
|
|
@buffer.size = 2
|
|
@buffer.size.should == 2
|
|
@buffer.send(:should_buffer?).should be_true
|
|
end
|
|
|
|
it "should only flush buffer if buffer size is greater than or equal to buffer size setting" do
|
|
@buffer.size.should == 0
|
|
@buffer.queue.size.should == 0
|
|
@buffer.send(:should_flush?).should be_false
|
|
@buffer.queue[:hello] = 'world'
|
|
@buffer.send(:should_flush?).should be_true
|
|
@buffer.size = 5
|
|
@buffer.send(:should_flush?).should be_false
|
|
3.times { |i| @buffer.queue[i] = i.to_s }
|
|
@buffer.send(:should_flush?).should be_false
|
|
@buffer.queue[4] = '4'
|
|
@buffer.send(:should_flush?).should be_true
|
|
end
|
|
|
|
it "should force flush queue irregardless of result of #should_flush? when #reset_queue is called with true" do
|
|
@buffer.queue[:hello] = 'world'
|
|
@buffer.send(:should_flush?).should be_true
|
|
@buffer.size = 2
|
|
@buffer.send(:should_flush?).should be_false
|
|
@buffer.send(:reset_queue).should == {}
|
|
@buffer.send(:reset_queue, true).should == {:hello => 'world'}
|
|
end
|
|
|
|
it "should flush data into Summary.update properly" do
|
|
# the root level key value doesn't actually matter, but it's something like this...
|
|
data = {'ScopeName/label/goes/here:2011:nil:true:true' => {
|
|
:key => mock("Key"),
|
|
:stats => {},
|
|
:depth_limit => :year,
|
|
:opts => {:heh => false}
|
|
}}
|
|
item = data.first[1]
|
|
Redistat::Summary.should_receive(:update).with(item[:key], item[:stats], item[:depth_limit], item[:connection_ref])
|
|
@buffer.send(:flush_data, data)
|
|
end
|
|
|
|
end
|