URL: https://github.com/SSSD/sssd/pull/5908 Author: sgoveas Title: #5908: Check default debug level of sssd and corresponding logs Action: synchronized
To pull the PR as Git branch: git remote add ghsssd https://github.com/SSSD/sssd git fetch ghsssd pull/5908/head:pr5908 git checkout pr5908
From be0a00f91b4095842cc2d2ec859f5dcb8b17aaea Mon Sep 17 00:00:00 2001 From: Madhuri Upadhye <mupad...@redhat.com> Date: Fri, 22 Jan 2021 15:35:17 +0530 Subject: [PATCH] Check default debug level of sssd and corresponding logs It consists of five test cases: 1. Check default debug level when sssd start successfully 2. Check default debug level by successful authentication of the user 3. Check default level as 0 and 1 4. Check default level as 2 5. Check SBUS code should not trigger failure message during modules startup Verifies: Issues: #5422 #5425 Bugs: https://bugzilla.redhat.com/show_bug.cgi?id=1893159 https://bugzilla.redhat.com/show_bug.cgi?id=1915319 --- src/tests/multihost/alltests/pytest.ini | 1 + .../alltests/test_default_debug_level.py | 153 ++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 src/tests/multihost/alltests/test_default_debug_level.py diff --git a/src/tests/multihost/alltests/pytest.ini b/src/tests/multihost/alltests/pytest.ini index ac127c07f3..e23f23d21d 100644 --- a/src/tests/multihost/alltests/pytest.ini +++ b/src/tests/multihost/alltests/pytest.ini @@ -25,6 +25,7 @@ markers = ssh: Tests related to ssh responder ldaplibdebuglevel: Test ldap_library_debug_level option no_tier: test cases are not executed on any tier + defaultdebuglevel: Test default debug level sssd tier1: tier1 test cases with run time of aproximately 60 minutes tier1_2: tier1 test cases split to keep runtime upto 60 minutes tier2: tier2 test cases diff --git a/src/tests/multihost/alltests/test_default_debug_level.py b/src/tests/multihost/alltests/test_default_debug_level.py new file mode 100644 index 0000000000..d9c2d759a9 --- /dev/null +++ b/src/tests/multihost/alltests/test_default_debug_level.py @@ -0,0 +1,153 @@ +"""Automation for default debug level + +:requirement: SSSD - Default debug level +:casecomponent: sssd +:subsystemteam: sst_idm_sssd +:upstream: yes +""" + +from __future__ import print_function +import re +import time +import pytest +from sssd.testlib.common.utils import sssdTools +from sssd.testlib.common.expect import pexpect_ssh +from constants import ds_instance_name + + +@pytest.mark.usefixtures('setup_sssd', 'create_posix_usersgroups') +@pytest.mark.defaultdebuglevel +@pytest.mark.tier1_2 +class TestDefaultDebugLevel(object): + """ Check sssd default debug level """ + def test_0001_check_default_debug_level(self, multihost, backupsssdconf): + """ + :title: default debug logs: Check default debug level when sssd start + successfully + :id: 1f38b560-27dc-4144-895d-e667420b0467 + """ + section = "domain/%s" % ds_instance_name + domain_params = {'debug_level': ''} + tools = sssdTools(multihost.client[0]) + tools.sssd_conf(section, domain_params, action='delete') + # stop sssd, delete sssd logs and cache, start sssd + tools.clear_sssd_cache() + time.sleep(5) + log_list = ['sssd', f'sssd_{ds_instance_name}', + 'sssd_nss', 'sssd_pam'] + for log_filename in log_list: + log = '/var/log/sssd/%s.log' % log_filename + log_str = multihost.client[0].get_file_contents(log).decode( + 'utf-8') + pattern1 = re.compile(r'Starting with debug level = 0x0070') + default_debug = pattern1.search(log_str) + assert default_debug is not None + log_split = log_str.split("\n") + for index in range(len(log_split)-1): + log_single_line = log_split[index] + pattern2 = re.compile(r'(0x\w+)') + pattern3 = re.compile(r'(0x\d+)') + debug_str1 = pattern2.search(log_single_line) + debug_str2 = pattern3.search(log_single_line) + assert debug_str1.group() == '0x1f7c0' or \ + debug_str2.group() <= 0x0040 + + def test_0002_check_default_level_with_auth(self, multihost, + backupsssdconf): + """ + :title: default debug logs: Check successful login with default + log level doesn't generate any logs + :id: f40a7c66-6b5f-4f3c-8fcb-6aa12f415473 + """ + section = "domain/%s" % ds_instance_name + domain_params = {'debug_level': ''} + tools = sssdTools(multihost.client[0]) + tools.sssd_conf(section, domain_params, action='delete') + domain_params = {'fallback_homedir': '/home/%u'} + tools.sssd_conf(section, domain_params) + # stop sssd, delete logs and cache, start sssd + tools.clear_sssd_cache() + conf = multihost.client[0].run_command('cat /etc/sssd/sssd.conf') + check_log_size = "du -c /var/log/sssd/ | awk '/total/ {print $1}'" + blog_size = multihost.client[0].run_command(check_log_size, + raiseonerr=False) + print("before auth:", blog_size.stdout_text) + user = 'foo1@%s' % ds_instance_name + # Authenticate user + client = pexpect_ssh(multihost.client[0].sys_hostname, user, + 'Secret123', debug=False) + client.login(login_timeout=30, sync_multiplier=5, + auto_prompt_reset=False) + alog_size = multihost.client[0].run_command(check_log_size, + raiseonerr=False) + print("after auth:", alog_size.stdout_text) + if alog_size.stdout_text != blog_size.stdout_text: + assert False + + def test_0003_bz1893159(self, multihost, backupsssdconf): + """ + :title: default debug logs: Check that messages with levels 0 and 1 + are printed with default log level + :id: 79411fe9-99d6-430b-90fd-3eff1807975f + """ + section = "domain/%s" % ds_instance_name + domain_params = {'debug_level': ''} + tools = sssdTools(multihost.client[0]) + tools.sssd_conf(section, domain_params, action='delete') + multihost.client[0].service_sssd('stop') + chmod_cmd = 'chmod 444 /etc/sssd/sssd.conf' + cmd = multihost.client[0].run_command(chmod_cmd, raiseonerr=False) + assert cmd.returncode == 0 + tools.remove_sss_cache('/var/log/sssd') + multihost.client[0].run_command('systemctl start sssd', + raiseonerr=False) + slog = '/var/log/sssd/sssd.log' + log_str = multihost.client[0].get_file_contents(slog).decode('utf-8') + find1 = re.compile(r'0x0020') + find2 = re.compile(r'0x0010') + restore_sssd = 'chmod 600 /etc/sssd/sssd.conf' + multihost.client[0].run_command(restore_sssd, raiseonerr=False) + # Check that both 'Fatal failures' and 'Critical failures' + # messages are in the logs + if not find1.search(log_str) and not find2.search(log_str): + assert False + + def test_0004_bz1893159(self, multihost, backupsssdconf): + """ + :title: default debug logs: Check default level 2 + :id: d44d5883-fc52-418d-b407-3ac63f7104d8 + """ + section = "domain/%s" % ds_instance_name + domain_params = {'debug_level': ''} + tools = sssdTools(multihost.client[0]) + tools.sssd_conf(section, domain_params, action='delete') + tools.clear_sssd_cache() + cmd_kill = 'kill -SIGUSR2 $(pidof sssd)' + multihost.client[0].run_command(cmd_kill, raiseonerr=False) + logfilename = 'sssd' + log = '/var/log/sssd/%s.log' % logfilename + log_str = multihost.client[0].get_file_contents(log).decode('utf-8') + find = re.compile(r'.0x0040.') + if not find.search(log_str): + assert False + + def test_0005_bz1915319(self, multihost, backupsssdconf): + """ + :title: default debug logs: Check SBUS code should not trigger failure + message during modules startup + :id: 5c7b9eb7-ee89-4ed7-94d0-467de16a505f + """ + section = "domain/%s" % ds_instance_name + domain_params = {'debug_level': ''} + tools = sssdTools(multihost.client[0]) + tools.sssd_conf(section, domain_params, action='delete') + tools.clear_sssd_cache() + log_list = ['sssd', f'sssd_{ds_instance_name}', + 'sssd_nss', 'sssd_pam'] + for log in log_list: + log = '/var/log/sssd/%s.log' % log + log_str = multihost.client[0].get_file_contents(log).decode( + 'utf-8') + find = re.compile(r'Unable to remove key.*') + if find.search(log_str): + assert False
_______________________________________________ sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure