Skip to content

Commit 92c33ae

Browse files
authored
Merge pull request #64 from fluent/fix-issue63
Use String#sub instead of String#sub!
2 parents 6832a3d + ea1b7bc commit 92c33ae

File tree

2 files changed

+36
-24
lines changed

2 files changed

+36
-24
lines changed

lib/fluent/plugin/grok.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def expand_pattern(pattern)
131131
else
132132
replacement_pattern = "(?:#{curr_pattern})"
133133
end
134-
pattern.sub!(m[0]) do |s|
134+
pattern = pattern.sub(m[0]) do |s|
135135
replacement_pattern
136136
end
137137
end

test/test_grok_parser.rb

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -158,37 +158,49 @@ class GrokParserTest < ::Test::Unit::TestCase
158158
end
159159
end
160160

161-
test "no grok patterns" do
162-
assert_raise Fluent::ConfigError do
163-
create_driver('')
161+
sub_test_case "configure" do
162+
test "no grok patterns" do
163+
assert_raise Fluent::ConfigError do
164+
create_driver('')
165+
end
166+
end
167+
168+
test "invalid config value type" do
169+
assert_raise Fluent::ConfigError do
170+
create_driver(%[
171+
<grok>
172+
pattern %{PATH:path:foo}
173+
</grok>
174+
])
175+
end
164176
end
165-
end
166177

167-
test "invalid config value type" do
168-
assert_raise Fluent::ConfigError do
169-
create_driver(%[
178+
test "invalid config value type and normal grok pattern" do
179+
d = create_driver(%[
170180
<grok>
171181
pattern %{PATH:path:foo}
172182
</grok>
183+
<grok>
184+
pattern %{IP:ip_address}
185+
</grok>
173186
])
187+
assert_equal(1, d.instance.instance_variable_get(:@grok).parsers.size)
188+
logs = $log.instance_variable_get(:@logger).instance_variable_get(:@logdev).logs
189+
error_logs = logs.grep(/error_class/)
190+
assert_equal(1, error_logs.size)
191+
error_message = error_logs.first[/error="(.+)"/, 1]
192+
assert_equal("unknown value conversion for key:'path', type:'foo'", error_message)
174193
end
175-
end
176194

177-
test "invalid config value type and normal grok pattern" do
178-
d = create_driver(%[
179-
<grok>
180-
pattern %{PATH:path:foo}
181-
</grok>
182-
<grok>
183-
pattern %{IP:ip_address}
184-
</grok>
185-
])
186-
assert_equal(1, d.instance.instance_variable_get(:@grok).parsers.size)
187-
logs = $log.instance_variable_get(:@logger).instance_variable_get(:@logdev).logs
188-
error_logs = logs.grep(/error_class/)
189-
assert_equal(1, error_logs.size)
190-
error_message = error_logs.first[/error="(.+)"/, 1]
191-
assert_equal("unknown value conversion for key:'path', type:'foo'", error_message)
195+
test "keep original configuration" do
196+
config = %[
197+
<grok>
198+
pattern %{INT:user_id:integer} paid %{NUMBER:paid_amount:float}
199+
</grok>
200+
]
201+
d = create_driver(config)
202+
assert_equal("%{INT:user_id:integer} paid %{NUMBER:paid_amount:float}", d.instance.config.elements("grok").first["pattern"])
203+
end
192204
end
193205

194206
sub_test_case "grok_name_key" do

0 commit comments

Comments
 (0)