@@ -1168,6 +1168,72 @@ def test_stop_parallel_old_supervisor_after_delay
11681168 expected = [ c ] . concat ( sources . collect { |type | { "@type" => type } } )
11691169 assert_equal ( expected , supervisor . instance_variable_get ( :@conf ) . elements )
11701170 end
1171+
1172+ test "prevent duplicate loading" do
1173+ write_config ( "#{ @config_include_dir } /system.conf" , <<~EOF )
1174+ <system>
1175+ config_include_dir #{ @config_include_dir }
1176+ </system>
1177+ EOF
1178+ write_config ( "#{ @config_include_dir } /forward.conf" , <<~EOF )
1179+ <match test>
1180+ @type forward
1181+ <buffer>
1182+ @include #{ @config_include_dir } /common_param.conf
1183+ </buffer>
1184+ <server>
1185+ host 127.0.0.1
1186+ port 24224
1187+ </server>
1188+ </match>
1189+ EOF
1190+ write_config ( "#{ @config_include_dir } /common_param.conf" , <<~EOF )
1191+ flush_interval 5s
1192+ EOF
1193+ write_config ( "#{ @config_include_dir } /obsolete_plugins.conf" , <<~EOF )
1194+ <source>
1195+ @type obsolete_plugins
1196+ </source>
1197+ EOF
1198+
1199+ write_config ( "#{ @tmp_dir } /fluent.conf" , <<~EOF )
1200+ <match sample.*>
1201+ @type file
1202+ <buffer>
1203+ @include #{ @config_include_dir } /common_param.conf
1204+ </buffer>
1205+ </match>
1206+
1207+ @include #{ @config_include_dir } /forward.conf
1208+ @include #{ @config_include_dir } /system.conf
1209+ EOF
1210+
1211+ supervisor = Fluent ::Supervisor . new ( { config_path : "#{ @tmp_dir } /fluent.conf" } )
1212+ supervisor . configure ( supervisor : true )
1213+ elements = supervisor . instance_variable_get ( :@conf ) . elements
1214+ assert_equal ( 4 , elements . size )
1215+
1216+ assert_equal ( 'match' , elements [ 0 ] . name )
1217+ assert_equal ( 'file' , elements [ 0 ] [ '@type' ] )
1218+ assert_equal ( 'buffer' , elements [ 0 ] . elements [ 0 ] . name )
1219+ assert_equal ( '5s' , elements [ 0 ] . elements [ 0 ] [ 'flush_interval' ] )
1220+
1221+ assert_equal ( 'match' , elements [ 1 ] . name )
1222+ assert_equal ( 'forward' , elements [ 1 ] [ '@type' ] )
1223+ assert_equal ( 'buffer' , elements [ 1 ] . elements [ 0 ] . name )
1224+ assert_equal ( '5s' , elements [ 1 ] . elements [ 0 ] [ 'flush_interval' ] )
1225+
1226+ assert_equal ( 'system' , elements [ 2 ] . name )
1227+ assert_equal ( @config_include_dir , elements [ 2 ] [ 'config_include_dir' ] )
1228+
1229+ assert_equal ( 'source' , elements [ 3 ] . name )
1230+ assert_equal ( 'obsolete_plugins' , elements [ 3 ] [ '@type' ] )
1231+
1232+ # reload
1233+ supervisor . __send__ ( :reload_config )
1234+ reload_elements = supervisor . instance_variable_get ( :@conf ) . elements
1235+ assert_equal ( elements , reload_elements )
1236+ end
11711237 end
11721238
11731239 def create_debug_dummy_logger
0 commit comments