1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
require "spec"
require "log"
require "../../support/retry"
class Log
describe Dispatcher do
it "create dispatcher from enum" do
Dispatcher.for(:direct).should eq(DirectDispatcher)
Dispatcher.for(:async).should be_a(AsyncDispatcher)
Dispatcher.for(:sync).should be_a(SyncDispatcher)
end
end
describe DirectDispatcher do
it "dispatches entry" do
backend = Log::MemoryBackend.new
backend.dispatcher = DirectDispatcher
backend.dispatch entry = Entry.new("source", :info, "message", Log::Metadata.empty, nil)
backend.entries.size.should eq(1)
end
end
describe SyncDispatcher do
it "dispatches entry" do
backend = Log::MemoryBackend.new
backend.dispatcher = SyncDispatcher.new
backend.dispatch entry = Entry.new("source", :info, "message", Log::Metadata.empty, nil)
backend.entries.size.should eq(1)
end
end
describe AsyncDispatcher do
it "dispatches entry" do
backend = Log::MemoryBackend.new
backend.dispatcher = AsyncDispatcher.new
backend.dispatch entry = Entry.new("source", :info, "message", Log::Metadata.empty, nil)
retry { backend.entries.size.should eq(1) }
end
it "wait for entries to flush before closing" do
backend = Log::MemoryBackend.new
backend.dispatcher = AsyncDispatcher.new
backend.dispatch entry = Entry.new("source", :info, "message", Log::Metadata.empty, nil)
backend.close
backend.entries.size.should eq(1)
end
it "can be closed twice" do
backend = Log::MemoryBackend.new
backend.dispatcher = AsyncDispatcher.new
backend.dispatch entry = Entry.new("source", :info, "message", Log::Metadata.empty, nil)
backend.close
backend.close
backend.entries.size.should eq(1)
end
end
end
|