8000 gh-125041: test_zlib: For s390x HW acceleration, only skip checking t… · python/cpython@126109b · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 126109b

Browse files
committed
gh-125041: test_zlib: For s390x HW acceleration, only skip checking the compressed bytes
1 parent f55273b commit 126109b

File tree

3 files changed

+23
-12
lines changed

3 files changed

+23
-12
lines changed

Lib/test/support/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2586,9 +2586,9 @@ def exceeds_recursion_limit():
25862586
return get_c_recursion_limit() * 3
25872587

25882588

2589-
#Windows doesn't have os.uname() but it doesn't support s390x.
2590-
skip_on_s390x = unittest.skipIf(hasattr(os, 'uname') and os.uname().machine == 's390x',
2591-
'skipped on s390x')
2589+
# Windows doesn't have os.uname() but it doesn't support s390x.
2590+
is_s390x = hasattr(os, 'uname') and os.uname().machine == 's390x'
2591+
skip_on_s390x = unittest.skipIf(is_s390x, 'skipped on s390x')
25922592

25932593
Py_TRACE_REFS = hasattr(sys, 'getobjects')
25942594

Lib/test/test_zlib.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import pickle
77
import random
88
import sys
9-
from test.support import bigmemtest, _1G, _4G, skip_on_s390x
9+
from test.support import bigmemtest, _1G, _4G, is_s390x
1010

1111

1212
zlib = import_helper.import_module('zlib')
@@ -33,8 +33,10 @@ def _zlib_runtime_version_tuple(zlib_version=zlib.ZLIB_RUNTIME_VERSION):
3333
ZLIB_RUNTIME_VERSION_TUPLE = _zlib_runtime_version_tuple()
3434

3535

36-
# bpo-46623: On s390x, when a hardware accelerator is used, using different
37-
# ways to compress data with zlib can produce different compressed data.
36+
37+
# bpo-46623: When a hardware accelerator is used (currently only on s390x),
38+
# using different ways to compress data with zlib can produce different
39+
# compressed data.
3840
# Simplified test_pair() code:
3941
#
4042
# def func1(data):
@@ -57,8 +59,10 @@ def _zlib_runtime_version_tuple(zlib_version=zlib.ZLIB_RUNTIME_VERSION):
5759
#
5860
# zlib.decompress(func1(data)) == zlib.decompress(func2(data)) == data
5961
#
60-
# Make the assumption that s390x always has an accelerator to simplify the skip
61-
# condition.
62+
# To simplify the skip condition, make the assumption that s390x always has an
63+
# accelerator, and nothing else has it.
64+
HW_ACCELERATED = is_s390x
65+
6266

6367
class VersionTestCase(unittest.TestCase):
6468

@@ -223,12 +227,14 @@ def test_keywords(self):
223227
bufsize=zlib.DEF_BUF_SIZE),
224228
HAMLET_SCENE)
225229

226-
@skip_on_s390x
227230
def test_speech128(self):
228231
# compress more data
229232
data = HAMLET_SCENE * 128
230233
x = zlib.compress(data)
231-
self.assertEqual(zlib.compress(bytearray(data)), x)
234+
if not HW_ACCELERATED:
235+
# With hardware acceleration, the compressed bytes
236+
# might not be identical.
237+
self.assertEqual(zlib.compress(bytearray(data)), x)
232238
for ob in x, bytearray(x):
233239
self.assertEqual(zlib.decompress(ob), data)
234240

@@ -275,7 +281,6 @@ def test_64bit_compress(self, size):
275281

276282
class CompressObjectTestCase(BaseCompressTestCase, unittest.TestCase):
277283
# Test compression object
278-
@skip_on_s390x
279284
def test_pair(self):
280285
# straightforward compress/decompress objects
281286
datasrc = HAMLET_SCENE * 128
@@ -286,7 +291,10 @@ def test_pair(self):
286291
x1 = co.compress(data)
287292
x2 = co.flush()
288293
self.assertRaises(zlib.error, co.flush) # second flush should not work
289-
self.assertEqual(x1 + x2, datazip)
294+
if not HW_ACCELERATED:
295+
# With hardware acceleration, the compressed bytes might not
296+
# be identical.
297+
self.assertEqual(x1 + x2, datazip)
290298
for v1, v2 in ((x1, x2), (bytearray(x1), bytearray(x2))):
291299
dco = zlib.decompressobj()
292300
y1 = dco.decompress(v1 + v2)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Re-enable skipped tests for :mod:`zlib` on the s390x architecture: only skip
2+
checks of the compressed bytes, which can be different between zlib's
3+
software implementation and the hardware-accelerated implementation.

0 commit comments

Comments
 (0)
0