@@ -316,4 +316,99 @@ def test_time_key_without_buffer_section
316316 assert_equal "2017-01-24T20:10:30Z\t test.now\t {\" message\" :\" yay\" ,\" name\" :\" tagomoris\" }\n " , line
317317 end
318318 end
319+
320+ sub_test_case "kerberos config" do
321+ CONFIG_KERBEROS = config_element (
322+ "ROOT" , "" , {
323+ "namenode" => "server.local:14000" ,
324+ "path" => "/hdfs/path/file.%Y%m%d.%H%M.log" ,
325+ "username" => "hdfs_user" ,
326+ "kerberos" => true ,
327+ "kerberos_keytab" => "/path/to/kerberos.keytab" ,
328+ } )
329+
330+ test "renew_kerberos_delegation_token default" do
331+ mock . proxy ( WebHDFS ::Client ) . new ( "server.local" , 14000 , "hdfs_user" , nil , nil , nil , { } , nil ) . once
332+
333+ d = create_driver ( CONFIG_KERBEROS )
334+
335+ assert_equal (
336+ {
337+ kerberos : true ,
338+ renew_kerberos_delegation_token : false ,
339+ renew_kerberos_delegation_token_interval_hour : nil ,
340+ } ,
341+ {
342+ kerberos : d . instance . kerberos ,
343+ renew_kerberos_delegation_token : d . instance . instance_eval ( "@renew_kerberos_delegation_token" ) ,
344+ renew_kerberos_delegation_token_interval_hour : d . instance . instance_eval ( "@renew_kerberos_delegation_token_interval_hour" ) ,
345+ } )
346+ end
347+
348+ test "default renew_kerberos_delegation_token_interval" do
349+ expected_hour = 8
350+
351+ mock . proxy ( WebHDFS ::Client ) . new ( "server.local" , 14000 , "hdfs_user" , nil , nil , nil , { } , expected_hour ) . once
352+
353+ d = create_driver ( CONFIG_KERBEROS +
354+ config_element ( "" , "" , { "renew_kerberos_delegation_token" => true } ) )
355+
356+ assert_equal (
357+ {
358+ kerberos : true ,
359+ renew_kerberos_delegation_token : true ,
360+ renew_kerberos_delegation_token_interval : expected_hour * 60 * 60 ,
361+ renew_kerberos_delegation_token_interval_hour : expected_hour ,
362+ } ,
363+ {
364+ kerberos : d . instance . kerberos ,
365+ renew_kerberos_delegation_token : d . instance . instance_eval ( "@renew_kerberos_delegation_token" ) ,
366+ renew_kerberos_delegation_token_interval : d . instance . instance_eval ( "@renew_kerberos_delegation_token_interval" ) ,
367+ renew_kerberos_delegation_token_interval_hour : d . instance . instance_eval ( "@renew_kerberos_delegation_token_interval_hour" ) ,
368+ } )
369+ end
370+
371+ test "renew_kerberos_delegation_token_interval" do
372+ expected_hour = 10
373+
374+ mock . proxy ( WebHDFS ::Client ) . new ( "server.local" , 14000 , "hdfs_user" , nil , nil , nil , { } , expected_hour ) . once
375+
376+ d = create_driver (
377+ CONFIG_KERBEROS +
378+ config_element (
379+ "" , "" ,
380+ {
381+ "renew_kerberos_delegation_token" => true ,
382+ "renew_kerberos_delegation_token_interval" => "#{ expected_hour } h" ,
383+ } ) )
384+
385+ assert_equal (
386+ {
387+ kerberos : true ,
388+ renew_kerberos_delegation_token : true ,
389+ renew_kerberos_delegation_token_interval : expected_hour * 60 * 60 ,
390+ renew_kerberos_delegation_token_interval_hour : expected_hour ,
391+ } ,
392+ {
393+ kerberos : d . instance . kerberos ,
394+ renew_kerberos_delegation_token : d . instance . instance_eval ( "@renew_kerberos_delegation_token" ) ,
395+ renew_kerberos_delegation_token_interval : d . instance . instance_eval ( "@renew_kerberos_delegation_token_interval" ) ,
396+ renew_kerberos_delegation_token_interval_hour : d . instance . instance_eval ( "@renew_kerberos_delegation_token_interval_hour" ) ,
397+ } )
398+ end
399+
400+ test "username is required for renew_kerberos_delegation_token" do
401+ conf = config_element (
402+ "ROOT" , "" , {
403+ "namenode" => "server.local:14000" ,
404+ "path" => "/hdfs/path/file.%Y%m%d.%H%M.log" ,
405+ "kerberos" => true ,
406+ "renew_kerberos_delegation_token" => true ,
407+ } )
408+
409+ assert_raise ( Fluent ::ConfigError ) do
410+ create_driver ( conf )
411+ end
412+ end
413+ end
319414end
0 commit comments