logstash-core-event 2.2.4.snapshot1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,109 @@
1
+ # encoding: utf-8
2
+ require "spec_helper"
3
+ require "logstash/timestamp"
4
+
5
+ describe LogStash::Timestamp do
6
+
7
+ it "should parse its own iso8601 output" do
8
+ t = Time.now
9
+ ts = LogStash::Timestamp.new(t)
10
+ expect(LogStash::Timestamp.parse_iso8601(ts.to_iso8601).to_i).to eq(t.to_i)
11
+ end
12
+
13
+ it "should coerce iso8601 string" do
14
+ t = Time.now
15
+ ts = LogStash::Timestamp.new(t)
16
+ expect(LogStash::Timestamp.coerce(ts.to_iso8601).to_i).to eq(t.to_i)
17
+ end
18
+
19
+ it "should coerce Time" do
20
+ t = Time.now
21
+ expect(LogStash::Timestamp.coerce(t).to_i).to eq(t.to_i)
22
+ end
23
+
24
+ it "should coerce Timestamp" do
25
+ t = LogStash::Timestamp.now
26
+ expect(LogStash::Timestamp.coerce(t).to_i).to eq(t.to_i)
27
+ end
28
+
29
+ it "should raise on invalid string coerce" do
30
+ expect{LogStash::Timestamp.coerce("foobar")}.to raise_error LogStash::TimestampParserError
31
+ end
32
+
33
+ it "should return nil on invalid object coerce" do
34
+ expect(LogStash::Timestamp.coerce(:foobar)).to be_nil
35
+ end
36
+
37
+ it "should support to_json" do
38
+ expect(LogStash::Timestamp.parse_iso8601("2014-09-23T00:00:00-0800").to_json).to eq("\"2014-09-23T08:00:00.000Z\"")
39
+ end
40
+
41
+ it "should support to_json and ignore arguments" do
42
+ expect(LogStash::Timestamp.parse_iso8601("2014-09-23T00:00:00-0800").to_json(:some => 1, :argumnents => "test")).to eq("\"2014-09-23T08:00:00.000Z\"")
43
+ end
44
+
45
+ it "should support timestamp comparaison" do
46
+ current = LogStash::Timestamp.new(Time.now)
47
+ future = LogStash::Timestamp.new(Time.now + 100)
48
+
49
+ expect(future > current).to eq(true)
50
+ expect(future < current).to eq(false)
51
+ expect(current == current).to eq(true)
52
+
53
+ expect(current <=> current).to eq(0)
54
+ expect(current <=> future).to eq(-1)
55
+ expect(future <=> current).to eq(1)
56
+ end
57
+
58
+ it "should allow unary operation +" do
59
+ current = Time.now
60
+ t = LogStash::Timestamp.new(current) + 10
61
+ expect(t).to eq(current + 10)
62
+ end
63
+
64
+ describe "subtraction" do
65
+ it "should work on a timestamp object" do
66
+ t = Time.now
67
+ current = LogStash::Timestamp.new(t)
68
+ future = LogStash::Timestamp.new(t + 10)
69
+ expect(future - current).to eq(10)
70
+ end
71
+
72
+ it "should work on with time object" do
73
+ current = Time.now
74
+ t = LogStash::Timestamp.new(current + 10)
75
+ expect(t - current).to eq(10)
76
+ end
77
+
78
+ it "should work with numeric value" do
79
+ current = Time.now
80
+ t = LogStash::Timestamp.new(current + 10)
81
+ expect(t - 10).to eq(current)
82
+ end
83
+ end
84
+
85
+ context "identity methods" do
86
+ subject { LogStash::Timestamp.new }
87
+
88
+ it "should support utc" do
89
+ expect(subject.utc).to eq(subject)
90
+ end
91
+
92
+ it "should support gmtime" do
93
+ expect(subject.gmtime).to eq(subject)
94
+ end
95
+ end
96
+
97
+ context "numeric casting methods" do
98
+ let (:now) {Time.now}
99
+ subject { LogStash::Timestamp.new(now) }
100
+
101
+ it "should support to_i" do
102
+ expect(subject.to_i).to eq(now.to_i)
103
+ end
104
+
105
+ it "should support to_f" do
106
+ expect(subject.to_f).to eq(now.to_f)
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,179 @@
1
+ # encoding: utf-8
2
+ require "spec_helper"
3
+
4
+ # this is to skip specs when running agains an alternate logstash-core-event implementation
5
+ # that does not define the Accessors class. For example, in logstash-core-event-java
6
+ # the Accessors class does not exists in the Ruby namespace.
7
+ class_exists = begin
8
+ require "logstash/util/accessors"
9
+ true
10
+ rescue LoadError
11
+ false
12
+ end
13
+
14
+ describe "LogStash::Util::Accessors", :if => class_exists do
15
+
16
+ context "using simple field" do
17
+
18
+ it "should get value of word key" do
19
+ str = "hello"
20
+ data = { "hello" => "world" }
21
+ accessors = LogStash::Util::Accessors.new(data)
22
+ expect(accessors.get(str)).to eq(data[str])
23
+ end
24
+
25
+ it "should get value of key with spaces" do
26
+ str = "hel lo"
27
+ data = { "hel lo" => "world" }
28
+ accessors = LogStash::Util::Accessors.new(data)
29
+ expect(accessors.get(str)).to eq(data[str])
30
+ end
31
+
32
+ it "should get value of numeric key string" do
33
+ str = "1"
34
+ data = { "1" => "world" }
35
+ accessors = LogStash::Util::Accessors.new(data)
36
+ expect(accessors.get(str)).to eq(data[str])
37
+ end
38
+
39
+ it "should handle delete" do
40
+ str = "simple"
41
+ data = { "simple" => "things" }
42
+ accessors = LogStash::Util::Accessors.new(data)
43
+ expect(accessors.del(str)).to eq("things")
44
+ expect(data).to be_empty
45
+ end
46
+
47
+ it "should handle delete on non-existent field" do
48
+ str = "[foo][bar]"
49
+ data = { "hello" => "world" }
50
+ accessors = LogStash::Util::Accessors.new(data)
51
+ expect(accessors.del(str)).to be_nil
52
+ expect(data).not_to be_empty
53
+ # assert no side effects
54
+ expect(accessors.get("foo")).to be_nil
55
+ expect(accessors.get("hello")).to eq("world")
56
+ end
57
+
58
+ it "should set string value" do
59
+ str = "simple"
60
+ data = {}
61
+ accessors = LogStash::Util::Accessors.new(data)
62
+ expect(accessors.set(str, "things")).to eq("things")
63
+ expect(data).to eq({ "simple" => "things" })
64
+ end
65
+
66
+ it "should set array value" do
67
+ str = "simple"
68
+ data = {}
69
+ accessors = LogStash::Util::Accessors.new(data)
70
+ expect(accessors.set(str, ["foo", "bar"])).to eq(["foo", "bar"])
71
+ expect(data).to eq({ "simple" => ["foo", "bar"]})
72
+ end
73
+ end
74
+
75
+ context "using field path" do
76
+
77
+ it "should get shallow string value of word key" do
78
+ str = "[hello]"
79
+ data = { "hello" => "world" }
80
+ accessors = LogStash::Util::Accessors.new(data)
81
+ expect(accessors.get(str)).to eq("world")
82
+ end
83
+
84
+ it "should get shallow string value of key with spaces" do
85
+ str = "[hel lo]"
86
+ data = { "hel lo" => "world" }
87
+ accessors = LogStash::Util::Accessors.new(data)
88
+ expect(accessors.get(str)).to eq("world")
89
+ end
90
+
91
+ it "should get shallow string value of numeric key string" do
92
+ str = "[1]"
93
+ data = { "1" => "world" }
94
+ accessors = LogStash::Util::Accessors.new(data)
95
+ expect(accessors.get(str)).to eq("world")
96
+ end
97
+
98
+ it "should get deep string value" do
99
+ str = "[hello][world]"
100
+ data = { "hello" => { "world" => "foo", "bar" => "baz" } }
101
+ accessors = LogStash::Util::Accessors.new(data)
102
+ expect(accessors.get(str)).to eq(data["hello"]["world"])
103
+ end
104
+
105
+ it "should return nil when getting a non-existant field (with no side-effects on original data)" do
106
+ str = "[hello][world]"
107
+ data = {}
108
+ accessors = LogStash::Util::Accessors.new(data)
109
+ expect(accessors.get(str)).to be_nil
110
+ expect(data).to be_empty
111
+ expect(accessors.set(str, "foo")).to eq("foo")
112
+ expect(data).to eq({ "hello" => {"world" => "foo"} })
113
+ end
114
+
115
+ it "should handle delete" do
116
+ str = "[hello][world]"
117
+ data = { "hello" => { "world" => "foo", "bar" => "baz" } }
118
+ accessors = LogStash::Util::Accessors.new(data)
119
+ expect(accessors.del(str)).to eq("foo")
120
+
121
+ # Make sure the "world" key is removed.
122
+ expect(data["hello"]).to eq({ "bar" => "baz" })
123
+ end
124
+
125
+ it "should set shallow string value" do
126
+ str = "[hello]"
127
+ data = {}
128
+ accessors = LogStash::Util::Accessors.new(data)
129
+ expect(accessors.set(str, "foo")).to eq("foo")
130
+ expect(data).to eq({ "hello" => "foo" })
131
+ end
132
+
133
+ it "should set deep string value" do
134
+ str = "[hello][world]"
135
+ data = {}
136
+ accessors = LogStash::Util::Accessors.new(data)
137
+ expect(accessors.set(str, "foo")).to eq("foo")
138
+ expect(data).to eq({ "hello" => { "world" => "foo" } })
139
+ end
140
+
141
+ it "should set deep array value" do
142
+ str = "[hello][world]"
143
+ data = {}
144
+ accessors = LogStash::Util::Accessors.new(data)
145
+ expect(accessors.set(str, ["foo", "bar"])).to eq(["foo", "bar"])
146
+ expect(data).to eq({ "hello" => { "world" => ["foo", "bar"] } })
147
+ end
148
+
149
+ it "should set element within array value" do
150
+ str = "[hello][0]"
151
+ data = {"hello" => ["foo", "bar"]}
152
+ accessors = LogStash::Util::Accessors.new(data)
153
+ expect(accessors.set(str, "world") ).to eq("world")
154
+ expect(data).to eq({"hello" => ["world", "bar"]})
155
+ end
156
+
157
+ it "should retrieve array item" do
158
+ data = { "hello" => { "world" => ["a", "b"], "bar" => "baz" } }
159
+ accessors = LogStash::Util::Accessors.new(data)
160
+ expect(accessors.get("[hello][world][0]")).to eq(data["hello"]["world"][0])
161
+ expect(accessors.get("[hello][world][1]")).to eq(data["hello"]["world"][1])
162
+ end
163
+
164
+ it "should retrieve array item containing hash" do
165
+ data = { "hello" => { "world" => [ { "a" => 123 }, { "b" => 345 } ], "bar" => "baz" } }
166
+ accessors = LogStash::Util::Accessors.new(data)
167
+ expect(accessors.get("[hello][world][0][a]")).to eq(data["hello"]["world"][0]["a"])
168
+ expect(accessors.get("[hello][world][1][b]")).to eq(data["hello"]["world"][1]["b"])
169
+ end
170
+
171
+ it "should handle delete of array element" do
172
+ str = "[geocoords][0]"
173
+ data = { "geocoords" => [4, 2] }
174
+ accessors = LogStash::Util::Accessors.new(data)
175
+ expect(accessors.del(str)).to eq(4)
176
+ expect(data).to eq({ "geocoords" => [2] })
177
+ end
178
+ end
179
+ end
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: logstash-core-event
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.2.4.snapshot1
5
+ platform: ruby
6
+ authors:
7
+ - Elastic
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: The core event component of logstash, the scalable log and event management
14
+ tool
15
+ email:
16
+ - info@elastic.co
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/logstash-core-event.rb
22
+ - lib/logstash-core-event/logstash-core-event.rb
23
+ - lib/logstash-core-event/version.rb
24
+ - lib/logstash/event.rb
25
+ - lib/logstash/string_interpolation.rb
26
+ - lib/logstash/timestamp.rb
27
+ - lib/logstash/util/accessors.rb
28
+ - logstash-core-event.gemspec
29
+ - spec/logstash/event_spec.rb
30
+ - spec/logstash/timestamp_spec.rb
31
+ - spec/logstash/util/accessors_spec.rb
32
+ homepage: http://www.elastic.co/guide/en/logstash/current/index.html
33
+ licenses:
34
+ - Apache License (2.0)
35
+ metadata: {}
36
+ post_install_message:
37
+ rdoc_options: []
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">"
48
+ - !ruby/object:Gem::Version
49
+ version: 1.3.1
50
+ requirements: []
51
+ rubyforge_project:
52
+ rubygems_version: 2.5.1
53
+ signing_key:
54
+ specification_version: 4
55
+ summary: logstash-core-event - The core event component of logstash
56
+ test_files:
57
+ - spec/logstash/event_spec.rb
58
+ - spec/logstash/timestamp_spec.rb
59
+ - spec/logstash/util/accessors_spec.rb