def test_9(): # empty files in /etc and /usr, same as test_1 conf1 = EtcJournaldConf( context_wrap(JOURNALD_CONF_1, path='/etc/systemd/journald.conf')) conf2 = EtcJournaldConfD( context_wrap("", path='/etc/systemd/journald.conf.d/a.conf')) conf3 = UsrJournaldConfD( context_wrap("", path='/usr/lib/systemd/journald.conf.d/a.conf')) conf4 = EtcJournaldConfD( context_wrap("", path='/etc/systemd/journald.conf.d/b.conf')) conf5 = UsrJournaldConfD( context_wrap("", path='/usr/lib/systemd/journald.conf.d/b.conf')) result = JournaldConfAll(conf1, [conf2, conf4], [conf3, conf5]) assert result.active_settings_with_file_name["Storage"] == ( "persistent", "/etc/systemd/journald.conf") assert result.get_active_setting_value("Seal") == "no" assert result.get_active_setting_value_and_file_name("Seal") == ( "no", "/etc/systemd/journald.conf") assert "Compress" not in result.active_settings_with_file_name assert "SplitMode" not in result.active_settings_with_file_name assert result.files_shadowed_not_used == [ '/usr/lib/systemd/journald.conf.d/a.conf', '/usr/lib/systemd/journald.conf.d/b.conf' ] assert result.files_used_priority_order == [ '/etc/systemd/journald.conf' ] # other files are empty and effectively not used
def test_8(): conf1 = EtcJournaldConf( context_wrap(JOURNALD_CONF_1, path='/etc/systemd/journald.conf')) conf3 = UsrJournaldConfD( context_wrap(JOURNALD_CONF_3, path='/usr/lib/systemd/journald.conf.d/a.conf')) conf5 = UsrJournaldConfD( context_wrap(JOURNALD_CONF_5, path='/usr/lib/systemd/journald.conf.d/b.conf')) result = JournaldConfAll(conf1, None, [conf3, conf5]) assert result.active_settings_with_file_name["Storage"] == ( "auto", "/usr/lib/systemd/journald.conf.d/b.conf") assert result.get_active_setting_value("Seal") == "yes" assert result.get_active_setting_value_and_file_name("Seal") == ( "yes", "/usr/lib/systemd/journald.conf.d/b.conf") assert result.get_active_setting_value("Compress") == "no" assert result.get_active_setting_value_and_file_name("Compress") == ( "no", "/usr/lib/systemd/journald.conf.d/a.conf") assert result.get_active_setting_value("ForwardToConsole") == "yes" assert result.get_active_setting_value_and_file_name( "ForwardToConsole") == ("yes", "/usr/lib/systemd/journald.conf.d/a.conf") assert result.get_active_setting_value("SyncIntervalSec") == "5m" assert "RateLimitInterval" not in result.active_settings_with_file_name assert "MaxLevelWall" not in result.active_settings_with_file_name assert "SplitMode" not in result.active_settings_with_file_name assert result.files_shadowed_not_used == [] assert result.files_used_priority_order == [ '/etc/systemd/journald.conf', '/usr/lib/systemd/journald.conf.d/a.conf', '/usr/lib/systemd/journald.conf.d/b.conf' ]
def test_5_swap(): # same as test_5, just the order of two reported files is changed (but not their filename) # - tests that the file names, not the reported order, are important to the algorithm conf1 = EtcJournaldConf( context_wrap(JOURNALD_CONF_1, path='/etc/systemd/journald.conf')) conf2 = EtcJournaldConfD( context_wrap(JOURNALD_CONF_2, path='/etc/systemd/journald.conf.d/a.conf')) conf3 = UsrJournaldConfD( context_wrap(JOURNALD_CONF_3, path='/usr/lib/systemd/journald.conf.d/a.conf')) conf4 = EtcJournaldConfD( context_wrap(JOURNALD_CONF_4, path='/etc/systemd/journald.conf.d/b.conf')) result = JournaldConfAll(conf1, [conf4, conf2], [conf3]) assert result.active_settings_with_file_name["Storage"] == ( "volatile", "/etc/systemd/journald.conf.d/a.conf") assert result.get_active_setting_value("Seal") == "no" assert result.get_active_setting_value_and_file_name("Seal") == ( "no", "/etc/systemd/journald.conf") assert result.get_active_setting_value("Compress") == "no" assert result.get_active_setting_value_and_file_name("Compress") == ( "no", "/etc/systemd/journald.conf.d/a.conf") assert result.get_active_setting_value("RateLimitInterval") == "10s" assert result.get_active_setting_value("SplitMode") == "uid" assert result.get_active_setting_value("SyncIntervalSec") == "20m" assert result.get_active_setting_value("MaxLevelWall") == "emerg" assert "ForwardToConsole" not in result.active_settings_with_file_name assert result.files_shadowed_not_used == [ '/usr/lib/systemd/journald.conf.d/a.conf' ] assert result.files_used_priority_order == [ '/etc/systemd/journald.conf', '/etc/systemd/journald.conf.d/a.conf', '/etc/systemd/journald.conf.d/b.conf' ]
def test_5(): # as an addition to test_3, there's a new file whose options have higher priority conf1 = EtcJournaldConf( context_wrap(JOURNALD_CONF_1, path='/etc/systemd/journald.conf')) conf2 = EtcJournaldConfD( context_wrap(JOURNALD_CONF_2, path='/etc/systemd/journald.conf.d/a.conf')) conf3 = UsrJournaldConfD( context_wrap(JOURNALD_CONF_3, path='/usr/lib/systemd/journald.conf.d/a.conf')) conf4 = EtcJournaldConfD( context_wrap(JOURNALD_CONF_4, path='/etc/systemd/journald.conf.d/b.conf')) result = JournaldConfAll(conf1, [conf2, conf4], [conf3]) assert result.active_settings_with_file_name["Storage"] == ( "volatile", "/etc/systemd/journald.conf.d/a.conf") assert result.get_active_setting_value("Seal") == "no" assert result.get_active_setting_value_and_file_name("Seal") == ( "no", "/etc/systemd/journald.conf") assert result.get_active_setting_value("Compress") == "no" assert result.get_active_setting_value_and_file_name("Compress") == ( "no", "/etc/systemd/journald.conf.d/a.conf") assert result.get_active_setting_value("RateLimitInterval") == "10s" assert result.get_active_setting_value("SplitMode") == "uid" assert result.get_active_setting_value("SyncIntervalSec") == "20m" assert result.get_active_setting_value("MaxLevelWall") == "emerg" assert "ForwardToConsole" not in result.active_settings_with_file_name assert result.files_shadowed_not_used == [ '/usr/lib/systemd/journald.conf.d/a.conf' ] assert result.files_used_priority_order == [ '/etc/systemd/journald.conf', '/etc/systemd/journald.conf.d/a.conf', '/etc/systemd/journald.conf.d/b.conf' ]
def test_3(): # smoke test with three files - one shadowing and one option key taking higher priority # file in /etc shadows the file in /usr, and these options take precedence over journald.conf conf1 = EtcJournaldConf( context_wrap(JOURNALD_CONF_1, path='/etc/systemd/journald.conf')) conf2 = EtcJournaldConfD( context_wrap(JOURNALD_CONF_2, path='/etc/systemd/journald.conf.d/a.conf')) conf3 = UsrJournaldConfD( context_wrap(JOURNALD_CONF_3, path='/usr/lib/systemd/journald.conf.d/a.conf')) result = JournaldConfAll(conf1, [conf2], [conf3]) assert result.active_settings_with_file_name["Storage"] == ( "volatile", "/etc/systemd/journald.conf.d/a.conf") assert result.get_active_setting_value("Seal") == "no" assert result.get_active_setting_value_and_file_name("Seal") == ( "no", "/etc/systemd/journald.conf") assert result.get_active_setting_value("Compress") == "no" assert result.get_active_setting_value("RateLimitInterval") == "10s" assert "ForwardToConsole" not in result.active_settings_with_file_name assert "SplitMode" not in result.active_settings_with_file_name assert result.files_shadowed_not_used == [ '/usr/lib/systemd/journald.conf.d/a.conf' ] assert result.files_used_priority_order == [ '/etc/systemd/journald.conf', '/etc/systemd/journald.conf.d/a.conf' ]
def test_10(): # feeding it None data on purpose # empty/null files in /etc and /usr, same as test_1 conf1 = EtcJournaldConf( context_wrap(JOURNALD_CONF_1, path='/etc/systemd/journald.conf')) conf2 = EtcJournaldConfD(context_wrap(None, path=None)) conf3 = UsrJournaldConfD( context_wrap(None, path='/usr/lib/systemd/journald.conf.d/a.conf')) conf4 = EtcJournaldConfD(context_wrap("", path=None)) conf5 = UsrJournaldConfD(context_wrap(None, path=None)) result = JournaldConfAll(conf1, [conf2, conf4], [conf3, conf5]) assert result.active_settings_with_file_name["Storage"] == ( "persistent", "/etc/systemd/journald.conf") assert result.get_active_setting_value("Seal") == "no" assert result.get_active_setting_value_and_file_name("Seal") == ( "no", "/etc/systemd/journald.conf") assert "Compress" not in result.active_settings_with_file_name assert "SplitMode" not in result.active_settings_with_file_name assert result.files_shadowed_not_used == [] assert result.files_used_priority_order == ['/etc/systemd/journald.conf' ] # a.conf is empty
def test_11(): # Even if the path is None (in case Parser somehow fails to get it), make sure priorities work. # (shadowing in this case, as None is taken as a file name; this is already operation in # undefined/incorrect conditions) # This test will also help in frontend debugging so that it can work correctly when no path is # given. # empty/null files in /etc and /usr, same as test_3 conf1 = EtcJournaldConf( context_wrap(JOURNALD_CONF_1, path='/etc/systemd/journald.conf')) conf2 = EtcJournaldConfD(context_wrap(JOURNALD_CONF_2, path=None)) conf3 = UsrJournaldConfD(context_wrap(JOURNALD_CONF_3, path=None)) result = JournaldConfAll(conf1, [conf2], [conf3]) assert result.active_settings_with_file_name["Storage"] == ("volatile", None) assert result.get_active_setting_value("Seal") == "no" assert result.get_active_setting_value_and_file_name("Seal") == ( "no", "/etc/systemd/journald.conf") assert result.get_active_setting_value("Compress") == "no" assert result.get_active_setting_value("RateLimitInterval") == "10s" assert "ForwardToConsole" not in result.active_settings_with_file_name assert "SplitMode" not in result.active_settings_with_file_name assert result.files_shadowed_not_used == [] assert result.files_used_priority_order == ['/etc/systemd/journald.conf']