From 4507e93c0821b909d0dbadca16f61f32844f3428 Mon Sep 17 00:00:00 2001 From: Mihir Patel Date: Tue, 31 Jan 2023 19:28:27 +0000 Subject: [PATCH 1/5] show logging CLI support for logs stored in tmpfs Signed-off-by: Mihir Patel --- show/main.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/show/main.py b/show/main.py index 505768e643..b01de0a4d6 100755 --- a/show/main.py +++ b/show/main.py @@ -1253,14 +1253,18 @@ def table(verbose): @click.option('--verbose', is_flag=True, help="Enable verbose output") def logging(process, lines, follow, verbose): """Show system log""" + if os.path.exists("/var/log.tmpfs"): + log_path = "/var/log.tmpfs" + else: + log_path = "/var/log" if follow: - cmd = "sudo tail -F /var/log/syslog" + cmd = "sudo tail -F {}/syslog".format(log_path) run_command(cmd, display_cmd=verbose) else: - if os.path.isfile("/var/log/syslog.1"): - cmd = "sudo cat /var/log/syslog.1 /var/log/syslog" + if os.path.isfile("{}/syslog.1".format(log_path)): + cmd = "sudo cat {}/syslog.1 {}/syslog".format(log_path, log_path) else: - cmd = "sudo cat /var/log/syslog" + cmd = "sudo cat {}/syslog".format(log_path) if process is not None: cmd += " | grep '{}'".format(process) From 046fb8dd3c417ec403c311b010c8b242670efab0 Mon Sep 17 00:00:00 2001 From: Mihir Patel Date: Wed, 1 Feb 2023 01:55:36 +0000 Subject: [PATCH 2/5] Fixed testcase failures --- tests/show_test.py | 52 ++++++++++++++++++++++++++++++++++++++- tests/techsupport_test.py | 2 +- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/tests/show_test.py b/tests/show_test.py index 87c1b5a17e..35e9c0de78 100644 --- a/tests/show_test.py +++ b/tests/show_test.py @@ -1,9 +1,12 @@ import os import sys +import pytest import show.main as show from click.testing import CliRunner from unittest import mock -from unittest.mock import call, MagicMock +from unittest.mock import call, MagicMock, patch + +EXPECTED_BASE_COMMAND = 'sudo ' test_path = os.path.dirname(os.path.abspath(__file__)) modules_path = os.path.dirname(test_path) @@ -49,3 +52,50 @@ def teardown_class(cls): print("TEARDOWN") os.environ["PATH"] = os.pathsep.join(os.environ["PATH"].split(os.pathsep)[:-1]) os.environ["UTILITIES_UNIT_TESTING"] = "0" + +@patch('show.main.run_command') +@pytest.mark.parametrize( + "cli_arguments,expected", + [ + ([], 'cat /var/log/syslog'), + (['xcvrd'], "cat /var/log/syslog | grep 'xcvrd'"), + (['-l', '10'], 'cat /var/log/syslog | tail -10'), + (['-f'], 'tail -F /var/log/syslog'), + ] +) +def test_show_logging_default(run_command, cli_arguments, expected): + runner = CliRunner() + result = runner.invoke(show.cli.commands["logging"], cli_arguments) + run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False) + +@patch('show.main.run_command') +@patch('os.path.isfile', MagicMock(return_value=True)) +@pytest.mark.parametrize( + "cli_arguments,expected", + [ + ([], 'cat /var/log/syslog.1 /var/log/syslog'), + (['xcvrd'], "cat /var/log/syslog.1 /var/log/syslog | grep 'xcvrd'"), + (['-l', '10'], 'cat /var/log/syslog.1 /var/log/syslog | tail -10'), + (['-f'], 'tail -F /var/log/syslog'), + ] +) +def test_show_logging_syslog_1(run_command, cli_arguments, expected): + runner = CliRunner() + result = runner.invoke(show.cli.commands["logging"], cli_arguments) + run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False) + +@patch('show.main.run_command') +@patch('os.path.exists', MagicMock(return_value=True)) +@pytest.mark.parametrize( + "cli_arguments,expected", + [ + ([], 'cat /var/log.tmpfs/syslog'), + (['xcvrd'], "cat /var/log.tmpfs/syslog | grep 'xcvrd'"), + (['-l', '10'], 'cat /var/log.tmpfs/syslog | tail -10'), + (['-f'], 'tail -F /var/log.tmpfs/syslog'), + ] +) +def test_show_logging_tmpfs(run_command, cli_arguments, expected): + runner = CliRunner() + result = runner.invoke(show.cli.commands["logging"], cli_arguments) + run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False) diff --git a/tests/techsupport_test.py b/tests/techsupport_test.py index 41664e3589..5d167c276d 100644 --- a/tests/techsupport_test.py +++ b/tests/techsupport_test.py @@ -1,6 +1,6 @@ import pytest import show.main -from unittest.mock import patch, Mock +from unittest.mock import patch, Mock, MagicMock from click.testing import CliRunner EXPECTED_BASE_COMMAND = 'sudo ' From dd331ffa99b5f5c1756ec4800eb652b4e3642580 Mon Sep 17 00:00:00 2001 From: Mihir Patel Date: Wed, 1 Feb 2023 01:58:24 +0000 Subject: [PATCH 3/5] Reverted unwanted change in a file --- tests/techsupport_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/techsupport_test.py b/tests/techsupport_test.py index 5d167c276d..41664e3589 100644 --- a/tests/techsupport_test.py +++ b/tests/techsupport_test.py @@ -1,6 +1,6 @@ import pytest import show.main -from unittest.mock import patch, Mock, MagicMock +from unittest.mock import patch, Mock from click.testing import CliRunner EXPECTED_BASE_COMMAND = 'sudo ' From ebff427201088f3edc73683f1390a4be196f5a8b Mon Sep 17 00:00:00 2001 From: Mihir Patel Date: Wed, 1 Feb 2023 21:25:38 +0000 Subject: [PATCH 4/5] Added testcase for syslog.1 in log.tmpfs directory --- tests/show_test.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/show_test.py b/tests/show_test.py index 35e9c0de78..de0f5515aa 100644 --- a/tests/show_test.py +++ b/tests/show_test.py @@ -99,3 +99,20 @@ def test_show_logging_tmpfs(run_command, cli_arguments, expected): runner = CliRunner() result = runner.invoke(show.cli.commands["logging"], cli_arguments) run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False) + +@patch('show.main.run_command') +@patch('os.path.isfile', MagicMock(return_value=True)) +@patch('os.path.exists', MagicMock(return_value=True)) +@pytest.mark.parametrize( + "cli_arguments,expected", + [ + ([], 'cat /var/log.tmpfs/syslog.1 /var/log.tmpfs/syslog'), + (['xcvrd'], "cat /var/log.tmpfs/syslog.1 /var/log.tmpfs/syslog | grep 'xcvrd'"), + (['-l', '10'], 'cat /var/log.tmpfs/syslog.1 /var/log.tmpfs/syslog | tail -10'), + (['-f'], 'tail -F /var/log.tmpfs/syslog'), + ] +) +def test_show_logging_tmpfs_syslog_1(run_command, cli_arguments, expected): + runner = CliRunner() + result = runner.invoke(show.cli.commands["logging"], cli_arguments) + run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False) \ No newline at end of file From a39ee7dc6ba459e78d3fe5251a67a4fca2621291 Mon Sep 17 00:00:00 2001 From: Mihir Patel Date: Wed, 1 Feb 2023 21:26:37 +0000 Subject: [PATCH 5/5] mend --- tests/show_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/show_test.py b/tests/show_test.py index de0f5515aa..114dbc3c6c 100644 --- a/tests/show_test.py +++ b/tests/show_test.py @@ -115,4 +115,4 @@ def test_show_logging_tmpfs(run_command, cli_arguments, expected): def test_show_logging_tmpfs_syslog_1(run_command, cli_arguments, expected): runner = CliRunner() result = runner.invoke(show.cli.commands["logging"], cli_arguments) - run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False) \ No newline at end of file + run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False)