mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 22:57:16 -04:00
52 lines
1.1 KiB
Ruby
52 lines
1.1 KiB
Ruby
|
|
require "test_utils"
|
|
require "gelf"
|
|
describe "inputs/gelf" do
|
|
extend LogStash::RSpec
|
|
|
|
describe "reads chunked gelf messages " do
|
|
port = 12209
|
|
host = "127.0.0.1"
|
|
chunksize = 1420
|
|
gelfclient = GELF::Notifier.new(host,port,chunksize)
|
|
|
|
config <<-CONFIG
|
|
input {
|
|
gelf {
|
|
port => "#{port}"
|
|
host => "#{host}"
|
|
}
|
|
}
|
|
CONFIG
|
|
|
|
input do |pipeline, queue|
|
|
Thread.new { pipeline.run }
|
|
sleep 0.1 while !pipeline.ready?
|
|
|
|
# generate random characters (message is zipped!) from printable ascii ( SPACE till ~ )
|
|
# to trigger gelf chunking
|
|
s = StringIO.new
|
|
for i in 1..2000
|
|
s << 32 + rand(126-32)
|
|
end
|
|
large_random = s.string
|
|
|
|
[ "hello",
|
|
"world",
|
|
large_random,
|
|
"we survived gelf!"
|
|
].each do |m|
|
|
gelfclient.notify!( "short_message" => m )
|
|
# poll at most 10 times
|
|
waits = 0
|
|
while waits < 10 and queue.size == 0
|
|
sleep 0.1
|
|
waits += 1
|
|
end
|
|
insist { queue.size } > 0
|
|
insist { queue.pop["message"] } == m
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|