Skip to content

Commit c57c3fa

Browse files
authored
show logging CLI support for logs stored in tmpfs (#2641)
* show logging CLI support for logs stored in tmpfs Signed-off-by: Mihir Patel <[email protected]> * Fixed testcase failures * Reverted unwanted change in a file * Added testcase for syslog.1 in log.tmpfs directory * mend --------- Signed-off-by: Mihir Patel <[email protected]>
1 parent 5d23934 commit c57c3fa

File tree

2 files changed

+76
-5
lines changed

2 files changed

+76
-5
lines changed

show/main.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -1257,14 +1257,18 @@ def table(verbose):
12571257
@click.option('--verbose', is_flag=True, help="Enable verbose output")
12581258
def logging(process, lines, follow, verbose):
12591259
"""Show system log"""
1260+
if os.path.exists("/var/log.tmpfs"):
1261+
log_path = "/var/log.tmpfs"
1262+
else:
1263+
log_path = "/var/log"
12601264
if follow:
1261-
cmd = "sudo tail -F /var/log/syslog"
1265+
cmd = "sudo tail -F {}/syslog".format(log_path)
12621266
run_command(cmd, display_cmd=verbose)
12631267
else:
1264-
if os.path.isfile("/var/log/syslog.1"):
1265-
cmd = "sudo cat /var/log/syslog.1 /var/log/syslog"
1268+
if os.path.isfile("{}/syslog.1".format(log_path)):
1269+
cmd = "sudo cat {}/syslog.1 {}/syslog".format(log_path, log_path)
12661270
else:
1267-
cmd = "sudo cat /var/log/syslog"
1271+
cmd = "sudo cat {}/syslog".format(log_path)
12681272

12691273
if process is not None:
12701274
cmd += " | grep '{}'".format(process)

tests/show_test.py

+68-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import os
22
import sys
3+
import pytest
34
import show.main as show
45
from click.testing import CliRunner
56
from unittest import mock
6-
from unittest.mock import call, MagicMock
7+
from unittest.mock import call, MagicMock, patch
8+
9+
EXPECTED_BASE_COMMAND = 'sudo '
710

811
test_path = os.path.dirname(os.path.abspath(__file__))
912
modules_path = os.path.dirname(test_path)
@@ -49,3 +52,67 @@ def teardown_class(cls):
4952
print("TEARDOWN")
5053
os.environ["PATH"] = os.pathsep.join(os.environ["PATH"].split(os.pathsep)[:-1])
5154
os.environ["UTILITIES_UNIT_TESTING"] = "0"
55+
56+
@patch('show.main.run_command')
57+
@pytest.mark.parametrize(
58+
"cli_arguments,expected",
59+
[
60+
([], 'cat /var/log/syslog'),
61+
(['xcvrd'], "cat /var/log/syslog | grep 'xcvrd'"),
62+
(['-l', '10'], 'cat /var/log/syslog | tail -10'),
63+
(['-f'], 'tail -F /var/log/syslog'),
64+
]
65+
)
66+
def test_show_logging_default(run_command, cli_arguments, expected):
67+
runner = CliRunner()
68+
result = runner.invoke(show.cli.commands["logging"], cli_arguments)
69+
run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False)
70+
71+
@patch('show.main.run_command')
72+
@patch('os.path.isfile', MagicMock(return_value=True))
73+
@pytest.mark.parametrize(
74+
"cli_arguments,expected",
75+
[
76+
([], 'cat /var/log/syslog.1 /var/log/syslog'),
77+
(['xcvrd'], "cat /var/log/syslog.1 /var/log/syslog | grep 'xcvrd'"),
78+
(['-l', '10'], 'cat /var/log/syslog.1 /var/log/syslog | tail -10'),
79+
(['-f'], 'tail -F /var/log/syslog'),
80+
]
81+
)
82+
def test_show_logging_syslog_1(run_command, cli_arguments, expected):
83+
runner = CliRunner()
84+
result = runner.invoke(show.cli.commands["logging"], cli_arguments)
85+
run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False)
86+
87+
@patch('show.main.run_command')
88+
@patch('os.path.exists', MagicMock(return_value=True))
89+
@pytest.mark.parametrize(
90+
"cli_arguments,expected",
91+
[
92+
([], 'cat /var/log.tmpfs/syslog'),
93+
(['xcvrd'], "cat /var/log.tmpfs/syslog | grep 'xcvrd'"),
94+
(['-l', '10'], 'cat /var/log.tmpfs/syslog | tail -10'),
95+
(['-f'], 'tail -F /var/log.tmpfs/syslog'),
96+
]
97+
)
98+
def test_show_logging_tmpfs(run_command, cli_arguments, expected):
99+
runner = CliRunner()
100+
result = runner.invoke(show.cli.commands["logging"], cli_arguments)
101+
run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False)
102+
103+
@patch('show.main.run_command')
104+
@patch('os.path.isfile', MagicMock(return_value=True))
105+
@patch('os.path.exists', MagicMock(return_value=True))
106+
@pytest.mark.parametrize(
107+
"cli_arguments,expected",
108+
[
109+
([], 'cat /var/log.tmpfs/syslog.1 /var/log.tmpfs/syslog'),
110+
(['xcvrd'], "cat /var/log.tmpfs/syslog.1 /var/log.tmpfs/syslog | grep 'xcvrd'"),
111+
(['-l', '10'], 'cat /var/log.tmpfs/syslog.1 /var/log.tmpfs/syslog | tail -10'),
112+
(['-f'], 'tail -F /var/log.tmpfs/syslog'),
113+
]
114+
)
115+
def test_show_logging_tmpfs_syslog_1(run_command, cli_arguments, expected):
116+
runner = CliRunner()
117+
result = runner.invoke(show.cli.commands["logging"], cli_arguments)
118+
run_command.assert_called_with(EXPECTED_BASE_COMMAND + expected, display_cmd=False)

0 commit comments

Comments
 (0)