diff --git a/rteval-Fix-sysreport-traceback-when-utility-sos-not-.patch b/rteval-Fix-sysreport-traceback-when-utility-sos-not-.patch new file mode 100644 index 0000000..80b4f2e --- /dev/null +++ b/rteval-Fix-sysreport-traceback-when-utility-sos-not-.patch @@ -0,0 +1,42 @@ +From 2a0b5833be4f55dbbc00f1835a4ace554e498137 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Fri, 21 Jun 2024 13:20:26 -0400 +Subject: [PATCH] rteval: Fix sysreport traceback when utility sos not found + +When rteval is run with +-s, --sysreport run sysreport to collect system data (default: False) + +and sos, sosreport or sysreport cannot be found then rteval exits with +an error. + +Fix this by adding /usr/bin to the places to search for this program. + +Signed-off-by: John Kacur +--- + rteval/sysinfo/osinfo.py | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/rteval/sysinfo/osinfo.py b/rteval/sysinfo/osinfo.py +index 3d6d5f8daa96..3bdbcc81e068 100644 +--- a/rteval/sysinfo/osinfo.py ++++ b/rteval/sysinfo/osinfo.py +@@ -45,10 +45,16 @@ class OSInfo: + def run_sysreport(self, repdir): + if os.path.exists('/usr/sbin/sos'): + exe = '/usr/sbin/sos report' ++ elif os.path.exists('/usr/bin/sos'): ++ exe = '/usr/bin/sos report' + elif os.path.exists('/usr/sbin/sosreport'): + exe = '/usr/sbin/sosreport' ++ elif os.path.exists('/usr/bin/sosreport'): ++ exe = '/usr/bin/sosreport' + elif os.path.exists('/usr/sbin/sysreport'): + exe = '/usr/sbin/sysreport' ++ elif os.path.exists('/usr/bin/sysreport'): ++ exe = '/usr/bin/sysreport' + else: + raise RuntimeError("Can't find sos/sosreport/sysreport") + +-- +2.45.2 + diff --git a/rteval-sysstat-Convert-base64-data-to-text-before-wr.patch b/rteval-sysstat-Convert-base64-data-to-text-before-wr.patch new file mode 100644 index 0000000..266e660 --- /dev/null +++ b/rteval-sysstat-Convert-base64-data-to-text-before-wr.patch @@ -0,0 +1,65 @@ +From ca90d5aa7ae2ff6dac124c710fceadae028b5f4a Mon Sep 17 00:00:00 2001 +From: Crystal Wood +Date: Thu, 20 Jun 2024 21:18:05 -0500 +Subject: [PATCH 2/3] rteval: sysstat: Convert base64 data to text before + wrapping + +As of Python 3, b64encode() returns data, not a string, causing this: + +Traceback (most recent call last): + File "/home/crwood/git/rteval/./rteval-cmd", line 413, in + ec = rteval.Measure() + ^^^^^^^^^^^^^^^^ + File "/home/crwood/git/rteval/rteval/__init__.py", line 246, in Measure + self._report(measure_start, self.__rtevcfg.xslt_report) + File "/home/crwood/git/rteval/rteval/rtevalReport.py", line 63, in _report + self.__xmlreport.AppendXMLnodes(self._measuremods.MakeReport()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/crwood/git/rteval/rteval/modules/measurement/__init__.py", line 190, in MakeReport + mprep_n = mp.MakeReport() + ^^^^^^^^^^^^^^^ + File "/home/crwood/git/rteval/rteval/modules/measurement/__init__.py", line 62, in MakeReport + rep_n = RtEvalModules.MakeReport(self) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/crwood/git/rteval/rteval/modules/__init__.py", line 559, in MakeReport + modrep_n = mod.MakeReport() + ^^^^^^^^^^^^^^^^ + File "/home/crwood/git/rteval/rteval/modules/measurement/sysstat.py", line 83, in MakeReport + data_n = rep_n.newTextChild(None, 'data', "\n"+"\n".join(textwrap.wrap(data, 75))+"\n") + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib64/python3.12/textwrap.py", line 384, in wrap + return w.wrap(text) + ^^^^^^^^^^^^ + File "/usr/lib64/python3.12/textwrap.py", line 356, in wrap + chunks = self._split_chunks(text) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib64/python3.12/textwrap.py", line 342, in _split_chunks + text = self._munge_whitespace(text) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib64/python3.12/textwrap.py", line 153, in _munge_whitespace + text = text.translate(self.unicode_whitespace_trans) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: a bytes-like object is required, not 'dict' + +Signed-off-by: Crystal Wood +Signed-off-by: John Kacur +--- + rteval/modules/measurement/sysstat.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rteval/modules/measurement/sysstat.py b/rteval/modules/measurement/sysstat.py +index 57194a2b5f45..d4646c1646f4 100644 +--- a/rteval/modules/measurement/sysstat.py ++++ b/rteval/modules/measurement/sysstat.py +@@ -79,7 +79,7 @@ class sysstat(rtevalModulePrototype): + fp = open(self.__datafile, "rb") + compr = bz2.BZ2Compressor(9) + cmpr = compr.compress(fp.read()) +- data = base64.b64encode(cmpr + compr.flush()) ++ data = base64.b64encode(cmpr + compr.flush()).decode('utf-8') + data_n = rep_n.newTextChild(None, 'data', "\n"+"\n".join(textwrap.wrap(data, 75))+"\n") + data_n.newProp('contents', 'sysstat/sar binary data') + data_n.newProp('encoding', 'base64') +-- +2.45.2 + diff --git a/rteval.spec b/rteval.spec index 1e5f2fd..04540b1 100644 --- a/rteval.spec +++ b/rteval.spec @@ -1,6 +1,6 @@ Name: rteval Version: 3.8 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Utility to evaluate system suitability for RT Linux Group: Development/Tools @@ -33,6 +33,8 @@ BuildArch: noarch #Patches Patch1: 0001-Updated-rteval-man-page.patch +Patch2: rteval-Fix-sysreport-traceback-when-utility-sos-not-.patch +Patch3: rteval-sysstat-Convert-base64-data-to-text-before-wr.patch %description The rteval script is a utility for measuring various aspects of @@ -46,6 +48,8 @@ to the screen. %prep %setup -q %patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build %{__python3} setup.py build @@ -67,6 +71,12 @@ to the screen. %{_bindir}/rteval %changelog +* Mon Jun 24 2024 Anubhav Shelat - 3.8-3 +- Allow rteval to search /usr/bin/ for sysreport +- Convert base64 data to text before wrapping. +- Add sysreport to gating tests and check the exit status. +Resolves: RHEL-44437 + * Mon Jun 10 2024 Anubhav Shelat - 3.8-2 - Updated rteval man page Resolves: RHEL-37634 diff --git a/tests/scripts/run_tests.sh b/tests/scripts/run_tests.sh index 9a2c9df..56b9dfe 100644 --- a/tests/scripts/run_tests.sh +++ b/tests/scripts/run_tests.sh @@ -17,4 +17,10 @@ if [[ $? != 0 ]]; then exit 2 fi +sudo rteval -s + +if [[ $? != 0 ]]; then + exit 3 +fi + exit 0