# --- BEGIN COPYRIGHT BLOCK --- # Copyright (C) 2017 Red Hat, Inc. # All rights reserved. # # License: GPL (version 3 or any later version). # See LICENSE for details. # --- END COPYRIGHT BLOCK --- # import pytest from lib389.dseldif import DSEldif from lib389._constants import DN_CONFIG, LOG_REPLICA, LOG_DEFAULT, LOG_TRACE, LOG_ACL from lib389.utils import os, logging from lib389.topologies import topology_st as topo DEBUGGING = os.getenv("DEBUGGING", default=False) if DEBUGGING: logging.getLogger(__name__).setLevel(logging.DEBUG) else: logging.getLogger(__name__).setLevel(logging.INFO) log = logging.getLogger(__name__) @pytest.mark.bz1460718 @pytest.mark.parametrize("log_level", [(LOG_REPLICA + LOG_DEFAULT), (LOG_ACL + LOG_DEFAULT), (LOG_TRACE + LOG_DEFAULT)]) def test_default_loglevel_stripped(topo, log_level): """The default log level 16384 is stripped from the log level returned to a client :id: c300f8f1-aa11-4621-b124-e2be51930a6b :setup: Standalone instance :steps: 1. Change the error log level to the default and custom value. 2. Check if the server returns the new value. :expectedresults: 1. Changing the error log level should be successful. 2. Server should return the new log level. """ assert topo.standalone.config.set('nsslapd-errorlog-level', str(log_level)) assert topo.standalone.config.get_attr_val_int('nsslapd-errorlog-level') == log_level @pytest.mark.bz1460718 def test_dse_config_loglevel_error(topo): """Manually setting nsslapd-errorlog-level to 64 in dse.ldif throws error :id: 0eeefa17-ec1c-4208-8e7b-44d8fbc38f10 :setup: Standalone instance :steps: 1. Stop the server, edit dse.ldif file and change nsslapd-errorlog-level value to 64 2. Start the server and observe the error logs. :expectedresults: 1. Server should be successfully stopped and nsslapd-errorlog-level value should be changed. 2. Server should be successfully started without any errors being reported in the logs. """ topo.standalone.stop(timeout=10) dse_ldif = DSEldif(topo.standalone) try: dse_ldif.replace(DN_CONFIG, 'nsslapd-errorlog-level', 64) except: log.error('Failed to replace cn=config values of nsslapd-errorlog-level') raise topo.standalone.start(timeout=10) assert not topo.standalone.ds_error_log.match( '.*nsslapd-errorlog-level: ignoring 64 \\(since -d 266354688 was given on the command line\\).*') if __name__ == '__main__': # Run isolated # -s for DEBUG mode CURRENT_FILE = os.path.realpath(__file__) pytest.main("-s %s" % CURRENT_FILE)