@@ -274,7 +274,69 @@ public void checkExtractedTimestamp() {
274
274
}
275
275
task .stop ();
276
276
}
277
-
277
+
278
+ @ Test
279
+ public void checkExtractedTimestampWithTimezone () {
280
+ SplunkSinkTask task = new SplunkSinkTask ();
281
+ Collection <SinkRecord > record = createSinkRecords (1 ,"{\" id\" : \" 19\" ,\" host\" :\" host-01\" ,\" source\" :\" bu\" ,\" fields\" :{\" hn\" :\" hostname1\" ,\" CLASS\" :\" class1\" ,\" cust_id\" :\" 000013934\" ,\" REQ_TIME\" : \" 20230904133016993\" ,\" category\" :\" IFdata\" ,\" ifname\" :\" LoopBack7\" ,\" IFdata.Bits received\" :\" 0\" ,\" IFdata.Bits sent\" :\" 0\" }" );
282
+
283
+ UnitUtil uu = new UnitUtil (0 );
284
+ Map <String , String > config = uu .createTaskConfig ();
285
+ config .put (SplunkSinkConnectorConfig .RAW_CONF , String .valueOf (false ));
286
+ config .put (SplunkSinkConnectorConfig .ENABLE_TIMESTAMP_EXTRACTION_CONF , String .valueOf (true ));
287
+ config .put (SplunkSinkConnectorConfig .REGEX_CONF , "\\ \" REQ_TIME\\ \" :\\ s*\\ \" (?<time>.*?)\" " );
288
+ config .put (SplunkSinkConnectorConfig .TIMESTAMP_FORMAT_CONF , "yyyyMMddHHmmssSSS" );
289
+ config .put (SplunkSinkConnectorConfig .TIMESTAMP_TIMEZONE_CONF , "Asia/Seoul" );
290
+ HecMock hec = new HecMock (task );
291
+ hec .setSendReturnResult (HecMock .success );
292
+ task .setHec (hec );
293
+ task .start (config );
294
+ task .put (record );
295
+
296
+ List <EventBatch > batches = hec .getBatches ();
297
+ for (Iterator <EventBatch > iter = batches .listIterator (); iter .hasNext ();) {
298
+ EventBatch batch = iter .next ();
299
+ List <Event > event_list = batch .getEvents ();
300
+ Iterator <Event > iterator = event_list .listIterator () ;
301
+ Event event = iterator .next ();
302
+
303
+ Assert .assertEquals (1.693801816993E9 , event .getTime (), 0 );
304
+ break ;
305
+ }
306
+ task .stop ();
307
+ }
308
+
309
+ @ Test
310
+ public void checkExtractedTimestampWithoutTimezoneAsUTC () {
311
+ SplunkSinkTask task = new SplunkSinkTask ();
312
+ Collection <SinkRecord > record = createSinkRecords (1 ,"{\" id\" : \" 19\" ,\" host\" :\" host-01\" ,\" source\" :\" bu\" ,\" fields\" :{\" hn\" :\" hostname1\" ,\" CLASS\" :\" class1\" ,\" cust_id\" :\" 000013934\" ,\" REQ_TIME\" : \" 20230904133016993\" ,\" category\" :\" IFdata\" ,\" ifname\" :\" LoopBack7\" ,\" IFdata.Bits received\" :\" 0\" ,\" IFdata.Bits sent\" :\" 0\" }" );
313
+
314
+ UnitUtil uu = new UnitUtil (0 );
315
+ Map <String , String > config = uu .createTaskConfig ();
316
+ config .put (SplunkSinkConnectorConfig .RAW_CONF , String .valueOf (false ));
317
+ config .put (SplunkSinkConnectorConfig .ENABLE_TIMESTAMP_EXTRACTION_CONF , String .valueOf (true ));
318
+ config .put (SplunkSinkConnectorConfig .REGEX_CONF , "\\ \" REQ_TIME\\ \" :\\ s*\\ \" (?<time>.*?)\" " );
319
+ config .put (SplunkSinkConnectorConfig .TIMESTAMP_FORMAT_CONF , "yyyyMMddHHmmssSSS" );
320
+ config .put (SplunkSinkConnectorConfig .TIMESTAMP_TIMEZONE_CONF , "" );
321
+ HecMock hec = new HecMock (task );
322
+ hec .setSendReturnResult (HecMock .success );
323
+ task .setHec (hec );
324
+ task .start (config );
325
+ task .put (record );
326
+
327
+ List <EventBatch > batches = hec .getBatches ();
328
+ for (Iterator <EventBatch > iter = batches .listIterator (); iter .hasNext ();) {
329
+ EventBatch batch = iter .next ();
330
+ List <Event > event_list = batch .getEvents ();
331
+ Iterator <Event > iterator = event_list .listIterator () ;
332
+ Event event = iterator .next ();
333
+
334
+ Assert .assertEquals (1.693834216993E9 , event .getTime (), 0 );
335
+ break ;
336
+ }
337
+ task .stop ();
338
+ }
339
+
278
340
@ Test (expected = ConfigException .class )
279
341
public void emptyRegex () {
280
342
SplunkSinkTask task = new SplunkSinkTask ();
0 commit comments