mirror of
https://github.com/elastic/logstash.git
synced 2025-04-25 07:07:54 -04:00
fixed timezone issue extracted logstash-core and reorganized specs extracted logstash-core-event extract java Event into logstash-core-event-java in a proper gem remove obsolete jruby_event bootstrapping fix require path add java code bootstrap use logstash-core-event/logstash-core-event.rb remove obsolete files basic instructions LogStash::Json need to be initialized from event update jruby and gradle versions update compile:logstash-core-event-java rake task WIP tasks refactor fix gem.files skip test if class is not defined fix gem related tasks for new structure add gem spec dirs in core tests bootstrap java implementation when requiring timestamp new Cloner class and Event clone impl fix array fields assignments, see #4140 don't rely on json implementation ordering fix skipped last iterpolation char remove implementation specific unnecessary check also require ruby classes define error class in ruby raise exception on invalid format remove implementation specific tests and extract and put logger related test in pending missing bits for having all core timestamp specs pass run all core specs remove leftover comment regex missing encoding header revert to logstash-core-event by default finished proper gemification useless require dynamically pick specs depending on logstash-core-event-* implementation logstash root package version missing file for proper gemification do not build java event by default always check for root logstash lib dir fix concurrent-ruby version confict fix rebase conflict re-enable specs user vars instead of constants move non core code in bootstrap document version files move version file remove useless code use version in logstash-core fix gem files list put back concurrent-ruby version constrain as in master add dependency on logstash-core-event remove dependency on logstash-core to avoid circular dependency fix rebase conflict remove circular dependency fix specs update README
138 lines
4.9 KiB
Ruby
138 lines
4.9 KiB
Ruby
# encoding: utf-8
|
|
|
|
require "spec_helper"
|
|
require "logstash/util"
|
|
require "logstash/event"
|
|
require "json"
|
|
|
|
TIMESTAMP = "@timestamp"
|
|
|
|
describe LogStash::Event do
|
|
context "to_json" do
|
|
it "should serialize simple values" do
|
|
e = LogStash::Event.new({"foo" => "bar", "bar" => 1, "baz" => 1.0, TIMESTAMP => "2015-05-28T23:02:05.350Z"})
|
|
expect(JSON.parse(e.to_json)).to eq(JSON.parse("{\"foo\":\"bar\",\"bar\":1,\"baz\":1.0,\"@timestamp\":\"2015-05-28T23:02:05.350Z\",\"@version\":\"1\"}"))
|
|
end
|
|
|
|
it "should serialize deep hash values" do
|
|
e = LogStash::Event.new({"foo" => {"bar" => 1, "baz" => 1.0, "biz" => "boz"}, TIMESTAMP => "2015-05-28T23:02:05.350Z"})
|
|
expect(JSON.parse(e.to_json)).to eq(JSON.parse("{\"foo\":{\"bar\":1,\"baz\":1.0,\"biz\":\"boz\"},\"@timestamp\":\"2015-05-28T23:02:05.350Z\",\"@version\":\"1\"}"))
|
|
end
|
|
|
|
it "should serialize deep array values" do
|
|
e = LogStash::Event.new({"foo" => ["bar", 1, 1.0], TIMESTAMP => "2015-05-28T23:02:05.350Z"})
|
|
expect(JSON.parse(e.to_json)).to eq(JSON.parse("{\"foo\":[\"bar\",1,1.0],\"@timestamp\":\"2015-05-28T23:02:05.350Z\",\"@version\":\"1\"}"))
|
|
end
|
|
|
|
it "should serialize deep hash from field reference assignments" do
|
|
e = LogStash::Event.new({TIMESTAMP => "2015-05-28T23:02:05.350Z"})
|
|
e["foo"] = "bar"
|
|
e["bar"] = 1
|
|
e["baz"] = 1.0
|
|
e["[fancy][pants][socks]"] = "shoes"
|
|
expect(JSON.parse(e.to_json)).to eq(JSON.parse("{\"@timestamp\":\"2015-05-28T23:02:05.350Z\",\"@version\":\"1\",\"foo\":\"bar\",\"bar\":1,\"baz\":1.0,\"fancy\":{\"pants\":{\"socks\":\"shoes\"}}}"))
|
|
end
|
|
end
|
|
|
|
context "[]" do
|
|
it "should get simple values" do
|
|
e = LogStash::Event.new({"foo" => "bar", "bar" => 1, "baz" => 1.0, TIMESTAMP => "2015-05-28T23:02:05.350Z"})
|
|
expect(e["foo"]).to eq("bar")
|
|
expect(e["[foo]"]).to eq("bar")
|
|
expect(e["bar"]).to eq(1)
|
|
expect(e["[bar]"]).to eq(1)
|
|
expect(e["baz"]).to eq(1.0)
|
|
expect(e["[baz]"]).to eq(1.0)
|
|
expect(e[TIMESTAMP].to_s).to eq("2015-05-28T23:02:05.350Z")
|
|
expect(e["[#{TIMESTAMP}]"].to_s).to eq("2015-05-28T23:02:05.350Z")
|
|
end
|
|
|
|
it "should get deep hash values" do
|
|
e = LogStash::Event.new({"foo" => {"bar" => 1, "baz" => 1.0}})
|
|
expect(e["[foo][bar]"]).to eq(1)
|
|
expect(e["[foo][baz]"]).to eq(1.0)
|
|
end
|
|
|
|
it "should get deep array values" do
|
|
e = LogStash::Event.new({"foo" => ["bar", 1, 1.0]})
|
|
expect(e["[foo][0]"]).to eq("bar")
|
|
expect(e["[foo][1]"]).to eq(1)
|
|
expect(e["[foo][2]"]).to eq(1.0)
|
|
expect(e["[foo][3]"]).to be_nil
|
|
end
|
|
end
|
|
|
|
context "[]=" do
|
|
it "should set simple values" do
|
|
e = LogStash::Event.new()
|
|
expect(e["foo"] = "bar").to eq("bar")
|
|
expect(e["foo"]).to eq("bar")
|
|
|
|
e = LogStash::Event.new({"foo" => "test"})
|
|
expect(e["foo"] = "bar").to eq("bar")
|
|
expect(e["foo"]).to eq("bar")
|
|
end
|
|
|
|
it "should set deep hash values" do
|
|
e = LogStash::Event.new()
|
|
expect(e["[foo][bar]"] = "baz").to eq("baz")
|
|
expect(e["[foo][bar]"]).to eq("baz")
|
|
expect(e["[foo][baz]"]).to be_nil
|
|
end
|
|
|
|
it "should set deep array values" do
|
|
e = LogStash::Event.new()
|
|
expect(e["[foo][0]"] = "bar").to eq("bar")
|
|
expect(e["[foo][0]"]).to eq("bar")
|
|
expect(e["[foo][1]"] = 1).to eq(1)
|
|
expect(e["[foo][1]"]).to eq(1)
|
|
expect(e["[foo][2]"] = 1.0 ).to eq(1.0)
|
|
expect(e["[foo][2]"]).to eq(1.0)
|
|
expect(e["[foo][3]"]).to be_nil
|
|
end
|
|
end
|
|
|
|
context "timestamp" do
|
|
it "getters should present a Ruby LogStash::Timestamp" do
|
|
e = LogStash::Event.new()
|
|
expect(e.timestamp.class).to eq(LogStash::Timestamp)
|
|
expect(e[TIMESTAMP].class).to eq(LogStash::Timestamp)
|
|
end
|
|
|
|
it "to_hash should inject a Ruby LogStash::Timestamp" do
|
|
e = LogStash::Event.new()
|
|
|
|
expect(e.to_java).to be_kind_of(Java::ComLogstash::Event)
|
|
expect(e.to_java.get_field(TIMESTAMP)).to be_kind_of(Java::ComLogstash::Timestamp)
|
|
|
|
expect(e.to_hash[TIMESTAMP]).to be_kind_of(LogStash::Timestamp)
|
|
# now make sure the original map was not touched
|
|
expect(e.to_java.get_field(TIMESTAMP)).to be_kind_of(Java::ComLogstash::Timestamp)
|
|
end
|
|
|
|
it "should set timestamp" do
|
|
e = LogStash::Event.new
|
|
now = Time.now
|
|
e["@timestamp"] = LogStash::Timestamp.at(now.to_i)
|
|
expect(e.timestamp.to_i).to eq(now.to_i)
|
|
expect(e["@timestamp"].to_i).to eq(now.to_i)
|
|
end
|
|
end
|
|
|
|
context "append" do
|
|
it "should append" do
|
|
event = LogStash::Event.new("message" => "hello world")
|
|
event.append(LogStash::Event.new("message" => "another thing"))
|
|
expect(event["message"]).to eq(["hello world", "another thing"])
|
|
end
|
|
end
|
|
|
|
context "tags" do
|
|
it "should tag" do
|
|
event = LogStash::Event.new("message" => "hello world")
|
|
expect(event["tags"]).to be_nil
|
|
event["tags"] = ["foo"]
|
|
expect(event["tags"]).to eq(["foo"])
|
|
end
|
|
end
|
|
end
|