@@ -274,7 +274,69 @@ public void checkExtractedTimestamp() {
274274 }
275275 task .stop ();
276276 }
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+
278340 @ Test (expected = ConfigException .class )
279341 public void emptyRegex () {
280342 SplunkSinkTask task = new SplunkSinkTask ();
0 commit comments