You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-admin/rsyslog/files/rsyslog-8.38.0-fix-omprog-o...

67 lines
3.1 KiB

From 0b0a1262f2b401ea16b7d0b36d8254c500cb9d8e Mon Sep 17 00:00:00 2001
From: Joan Sala <jsiwrk@gmail.com>
Date: Thu, 20 Sep 2018 22:37:58 +0200
Subject: [PATCH] testbench: fix incompatibility of one omprog test with
Python3
Python3 writes to stderr immediately, and this caused the
captured output to differ with respect to Python2. Simplified
the test to do a single write to stderr. Also a cast to int
was needed when calculating 'numRepeats'.
closes #3030
---
tests/omprog-output-capture-mt.sh | 2 +-
.../testsuites/omprog-output-capture-mt-bin.py | 17 +++++++----------
2 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/tests/omprog-output-capture-mt.sh b/tests/omprog-output-capture-mt.sh
index 50f5c6354..080fabd2a 100755
--- a/tests/omprog-output-capture-mt.sh
+++ b/tests/omprog-output-capture-mt.sh
@@ -24,7 +24,7 @@ else
LINE_LENGTH=511 # 512 minus 1 byte (for the newline char)
fi
-export command_line="/usr/bin/stdbuf -oL -eL $srcdir/testsuites/omprog-output-capture-mt-bin.py $LINE_LENGTH"
+export command_line="/usr/bin/stdbuf -oL $srcdir/testsuites/omprog-output-capture-mt-bin.py $LINE_LENGTH"
check_command_available stdbuf
generate_conf
diff --git a/tests/testsuites/omprog-output-capture-mt-bin.py b/tests/testsuites/omprog-output-capture-mt-bin.py
index 6c81da24b..03097f37b 100755
--- a/tests/testsuites/omprog-output-capture-mt-bin.py
+++ b/tests/testsuites/omprog-output-capture-mt-bin.py
@@ -10,7 +10,7 @@
logLine = sys.stdin.readline()
while logLine:
logLine = logLine.strip()
- numRepeats = lineLength / len(logLine)
+ numRepeats = int(lineLength / len(logLine))
lineToStdout = (linePrefix + "[stdout] " + logLine*numRepeats)[:lineLength]
lineToStderr = (linePrefix + "[stderr] " + logLine*numRepeats)[:lineLength]
@@ -22,16 +22,13 @@
# size of the block buffer is generally greater than PIPE_BUF).
sys.stdout.write(lineToStdout + "\n")
- # Write to stderr using two writes. Since stderr is unbuffered, each write will be written
- # immediately to the pipe, and this will cause intermingled lines in the output file.
- # However, we avoid this by executing this script with 'stdbuf -eL', which forces line
- # buffering for stderr. We could alternatively do a single write.
- sys.stderr.write(lineToStderr)
- sys.stderr.write("\n")
+ # Write to stderr using a single write. Since stderr is unbuffered, each write will be
+ # written immediately (and atomically) to the pipe.
+ sys.stderr.write(lineToStderr + "\n")
- # Note: In future versions of Python3, stderr will possibly be line buffered (see
- # https://bugs.python.org/issue13601).
- # Note: When writing to stderr using the Python logging module, it seems that line
+ # Note (FTR): In future versions of Python3, stderr will possibly be line buffered (see
+ # https://bugs.python.org/issue13601). The previous write will also be atomic in this case.
+ # Note (FTR): When writing to stderr using the Python logging module, it seems that line
# buffering is also used (although this could depend on the Python version).
logLine = sys.stdin.readline()