@@ -191,6 +191,116 @@ class GrokParserTest < ::Test::Unit::TestCase
191191 assert_equal ( "unknown value conversion for key:'path', type:'foo'" , error_message )
192192 end
193193
194+ sub_test_case "grok_name_key" do
195+ test "one grok section with name" do
196+ d = create_driver ( %[
197+ grok_name_key grok_name
198+ <grok>
199+ name path
200+ pattern %{PATH:path}
201+ </grok>
202+ ] )
203+ expected = {
204+ "path" => "/" ,
205+ "grok_name" => "path"
206+ }
207+ d . instance . parse ( "/" ) do |time , record |
208+ assert_equal ( expected , record )
209+ end
210+ end
211+
212+ test "one grok section without name" do
213+ d = create_driver ( %[
214+ grok_name_key grok_name
215+ <grok>
216+ pattern %{PATH:path}
217+ </grok>
218+ ] )
219+ expected = {
220+ "path" => "/" ,
221+ "grok_name" => 0
222+ }
223+ d . instance . parse ( "/" ) do |time , record |
224+ assert_equal ( expected , record )
225+ end
226+ end
227+
228+ test "multiple grok sections with name" do
229+ d = create_driver ( %[
230+ grok_name_key grok_name
231+ <grok>
232+ name path
233+ pattern %{PATH:path}
234+ </grok>
235+ <grok>
236+ name ip
237+ pattern %{IP:ip_address}
238+ </grok>
239+ ] )
240+ expected = [
241+ { "path" => "/" , "grok_name" => "path" } ,
242+ { "ip_address" => "127.0.0.1" , "grok_name" => "ip" } ,
243+ ]
244+ records = [ ]
245+ d . instance . parse ( "/" ) do |time , record |
246+ records << record
247+ end
248+ d . instance . parse ( "127.0.0.1" ) do |time , record |
249+ records << record
250+ end
251+ assert_equal ( expected , records )
252+ end
253+
254+ test "multiple grok sections without name" do
255+ d = create_driver ( %[
256+ grok_name_key grok_name
257+ <grok>
258+ pattern %{PATH:path}
259+ </grok>
260+ <grok>
261+ pattern %{IP:ip_address}
262+ </grok>
263+ ] )
264+ expected = [
265+ { "path" => "/" , "grok_name" => 0 } ,
266+ { "ip_address" => "127.0.0.1" , "grok_name" => 1 } ,
267+ ]
268+ records = [ ]
269+ d . instance . parse ( "/" ) do |time , record |
270+ records << record
271+ end
272+ d . instance . parse ( "127.0.0.1" ) do |time , record |
273+ records << record
274+ end
275+ assert_equal ( expected , records )
276+ end
277+
278+ test "multiple grok sections with both name and index" do
279+ d = create_driver ( %[
280+ grok_name_key grok_name
281+ <grok>
282+ name path
283+ pattern %{PATH:path}
284+ </grok>
285+ <grok>
286+ pattern %{IP:ip_address}
287+ </grok>
288+ ] )
289+ expected = [
290+ { "path" => "/" , "grok_name" => "path" } ,
291+ { "ip_address" => "127.0.0.1" , "grok_name" => 1 } ,
292+ ]
293+ records = [ ]
294+ d . instance . parse ( "/" ) do |time , record |
295+ records << record
296+ end
297+ d . instance . parse ( "127.0.0.1" ) do |time , record |
298+ records << record
299+ end
300+ assert_equal ( expected , records )
301+ end
302+ end
303+
194304 private
195305
196306 def create_driver ( conf )
0 commit comments