diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2014-01-10 11:39:27 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2014-01-10 11:39:27 (GMT) |
commit | 786ac7b27d6eb36a53a91c41877f5cf86aa4f55f (patch) | |
tree | 5d5aee1b89f2d9809be9ab43364f1438bc1ce9cf | |
parent | c1cb227b3fafd5cb112288e7c24466dff12d9a93 (diff) | |
parent | 4847e4e1f47bae9ed1855801c70ce7fbdecfa32a (diff) | |
download | cpython-786ac7b27d6eb36a53a91c41877f5cf86aa4f55f.zip cpython-786ac7b27d6eb36a53a91c41877f5cf86aa4f55f.tar.gz cpython-786ac7b27d6eb36a53a91c41877f5cf86aa4f55f.tar.bz2 |
Issue #19886: Use better estimated memory requirements for bigmem tests.
Incorrect requirements can cause memory swapping.
-rw-r--r-- | Lib/test/pickletester.py | 12 | ||||
-rw-r--r-- | Lib/test/test_bz2.py | 2 | ||||
-rw-r--r-- | Lib/test/test_hashlib.py | 29 | ||||
-rw-r--r-- | Lib/test/test_marshal.py | 10 | ||||
-rw-r--r-- | Lib/test/test_xml_etree_c.py | 4 | ||||
-rw-r--r-- | Misc/NEWS | 5 |
6 files changed, 27 insertions, 35 deletions
diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index 1f59ab2..a2bea60 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -21,8 +21,6 @@ from pickle import bytes_types # kind of outer loop. protocols = range(pickle.HIGHEST_PROTOCOL + 1) -ascii_char_size = 1 - # Return True if opcode code appears in the pickle, else False. def opcode_in_pickle(code, pickle): @@ -1643,7 +1641,7 @@ class BigmemPickleTests(unittest.TestCase): # Binary protocols can serialize longs of up to 2GB-1 - @bigmemtest(size=_2G, memuse=1 + 1, dry_run=False) + @bigmemtest(size=_2G, memuse=3.6, dry_run=False) def test_huge_long_32b(self, size): data = 1 << (8 * size) try: @@ -1660,7 +1658,7 @@ class BigmemPickleTests(unittest.TestCase): # (older protocols don't have a dedicated opcode for bytes and are # too inefficient) - @bigmemtest(size=_2G, memuse=1 + 1, dry_run=False) + @bigmemtest(size=_2G, memuse=2.5, dry_run=False) def test_huge_bytes_32b(self, size): data = b"abcd" * (size // 4) try: @@ -1681,7 +1679,7 @@ class BigmemPickleTests(unittest.TestCase): finally: data = None - @bigmemtest(size=_4G, memuse=1 + 1, dry_run=False) + @bigmemtest(size=_4G, memuse=2.5, dry_run=False) def test_huge_bytes_64b(self, size): data = b"acbd" * (size // 4) try: @@ -1711,7 +1709,7 @@ class BigmemPickleTests(unittest.TestCase): # All protocols use 1-byte per printable ASCII character; we add another # byte because the encoded form has to be copied into the internal buffer. - @bigmemtest(size=_2G, memuse=2 + ascii_char_size, dry_run=False) + @bigmemtest(size=_2G, memuse=8, dry_run=False) def test_huge_str_32b(self, size): data = "abcd" * (size // 4) try: @@ -1738,7 +1736,7 @@ class BigmemPickleTests(unittest.TestCase): # of utf-8 encoded unicode. BINUNICODE8 (protocol 4) supports these huge # unicode strings however. - @bigmemtest(size=_4G, memuse=2 + ascii_char_size, dry_run=False) + @bigmemtest(size=_4G, memuse=8, dry_run=False) def test_huge_str_64b(self, size): data = "abcd" * (size // 4) try: diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py index cd58f31..26703f5 100644 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@ -686,7 +686,7 @@ class BZ2DecompressorTest(BaseTest): self.assertRaises(EOFError, bz2d.decompress, b"anything") self.assertRaises(EOFError, bz2d.decompress, b"") - @bigmemtest(size=_4G + 100, memuse=3) + @bigmemtest(size=_4G + 100, memuse=3.3) def testDecompress4G(self, size): # "Test BZ2Decompressor.decompress() with >4GiB input" blocksize = 10 * 1024 * 1024 diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py index 179e771..36a98cb 100644 --- a/Lib/test/test_hashlib.py +++ b/Lib/test/test_hashlib.py @@ -256,21 +256,15 @@ class HashLibTestCase(unittest.TestCase): b'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'd174ab98d277d9f5a5611c2c9f419d9f') - @bigmemtest(size=_4G + 5, memuse=1) + @unittest.skipIf(sys.maxsize < _4G + 5, 'test cannot run on 32-bit systems') + @bigmemtest(size=_4G + 5, memuse=1, dry_run=False) def test_case_md5_huge(self, size): - if size == _4G + 5: - try: - self.check('md5', b'A'*size, 'c9af2dff37468ce5dfee8f2cfc0a9c6d') - except OverflowError: - pass # 32-bit arch + self.check('md5', b'A'*size, 'c9af2dff37468ce5dfee8f2cfc0a9c6d') - @bigmemtest(size=_4G - 1, memuse=1) + @unittest.skipIf(sys.maxsize < _4G - 1, 'test cannot run on 32-bit systems') + @bigmemtest(size=_4G - 1, memuse=1, dry_run=False) def test_case_md5_uintmax(self, size): - if size == _4G - 1: - try: - self.check('md5', b'A'*size, '28138d306ff1b8281f1a9067e1a1a2b3') - except OverflowError: - pass # 32-bit arch + self.check('md5', b'A'*size, '28138d306ff1b8281f1a9067e1a1a2b3') # use the three examples from Federal Information Processing Standards # Publication 180-1, Secure Hash Standard, 1995 April 17 @@ -379,14 +373,11 @@ class HashLibTestCase(unittest.TestCase): "e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973eb"+ "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") - @bigmemtest(size=_4G + 5, memuse=1) + @unittest.skipIf(sys.maxsize < _4G + 5, 'test cannot run on 32-bit systems') + @bigmemtest(size=_4G + 5, memuse=1, dry_run=False) def test_case_sha3_224_huge(self, size): - if size == _4G + 5: - try: - self.check('sha3_224', b'A'*size, - '58ef60057c9dddb6a87477e9ace5a26f0d9db01881cf9b10a9f8c224') - except OverflowError: - pass # 32-bit arch + self.check('sha3_224', b'A'*size, + '58ef60057c9dddb6a87477e9ace5a26f0d9db01881cf9b10a9f8c224') def test_gil(self): # Check things work fine with an input larger than the size required diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py index 255eb87..e477c46 100644 --- a/Lib/test/test_marshal.py +++ b/Lib/test/test_marshal.py @@ -288,19 +288,19 @@ class LargeValuesTestCase(unittest.TestCase): def check_unmarshallable(self, data): self.assertRaises(ValueError, marshal.dump, data, NullWriter()) - @support.bigmemtest(size=LARGE_SIZE, memuse=1, dry_run=False) + @support.bigmemtest(size=LARGE_SIZE, memuse=2, dry_run=False) def test_bytes(self, size): self.check_unmarshallable(b'x' * size) - @support.bigmemtest(size=LARGE_SIZE, memuse=1, dry_run=False) + @support.bigmemtest(size=LARGE_SIZE, memuse=2, dry_run=False) def test_str(self, size): self.check_unmarshallable('x' * size) - @support.bigmemtest(size=LARGE_SIZE, memuse=pointer_size, dry_run=False) + @support.bigmemtest(size=LARGE_SIZE, memuse=pointer_size + 1, dry_run=False) def test_tuple(self, size): self.check_unmarshallable((None,) * size) - @support.bigmemtest(size=LARGE_SIZE, memuse=pointer_size, dry_run=False) + @support.bigmemtest(size=LARGE_SIZE, memuse=pointer_size + 1, dry_run=False) def test_list(self, size): self.check_unmarshallable([None] * size) @@ -316,7 +316,7 @@ class LargeValuesTestCase(unittest.TestCase): def test_frozenset(self, size): self.check_unmarshallable(frozenset(range(size))) - @support.bigmemtest(size=LARGE_SIZE, memuse=1, dry_run=False) + @support.bigmemtest(size=LARGE_SIZE, memuse=2, dry_run=False) def test_bytearray(self, size): self.check_unmarshallable(bytearray(size)) diff --git a/Lib/test/test_xml_etree_c.py b/Lib/test/test_xml_etree_c.py index b3ff7ae..816aa86 100644 --- a/Lib/test/test_xml_etree_c.py +++ b/Lib/test/test_xml_etree_c.py @@ -13,10 +13,8 @@ cET_alias = import_fresh_module('xml.etree.cElementTree', class MiscTests(unittest.TestCase): # Issue #8651. - @support.bigmemtest(size=support._2G + 100, memuse=1) + @support.bigmemtest(size=support._2G + 100, memuse=1, dry_run=False) def test_length_overflow(self, size): - if size < support._2G + 100: - self.skipTest("not enough free memory, need at least 2 GB") data = b'x' * size parser = cET.XMLParser() try: @@ -58,6 +58,11 @@ IDLE - Issue #18960: IDLE now ignores the source encoding declaration on the second line if the first line contains anything except a comment. +Tests +----- + +- Issue #19886: Use better estimated memory requirements for bigmem tests. + Tools/Demos ----------- |