cpython: fff1455e1147 (original) (raw)
Mercurial > cpython
changeset 88389:fff1455e1147
Issue #19886: Use better estimated memory requirements for bigmem tests. Incorrect requirements can cause memory swapping. [#19886]
Serhiy Storchaka storchaka@gmail.com | |
---|---|
date | Fri, 10 Jan 2014 13:39:27 +0200 |
parents | 5a8301002f5a(current diff)2ca26065fb00(diff) |
children | 93bf227664d6 |
files | Lib/test/pickletester.py Lib/test/test_bz2.py Lib/test/test_hashlib.py Lib/test/test_marshal.py Lib/test/test_xml_etree_c.py Misc/NEWS |
diffstat | 6 files changed, 27 insertions(+), 35 deletions(-)[+] [-] Lib/test/pickletester.py 12 Lib/test/test_bz2.py 2 Lib/test/test_hashlib.py 29 Lib/test/test_marshal.py 10 Lib/test/test_xml_etree_c.py 4 Misc/NEWS 5 |
line wrap: on
line diff
--- 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.TestCas # Binary protocols can serialize longs of up to 2GB-1
- @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.TestCas # (older protocols don't have a dedicated opcode for bytes and are # too inefficient)
- @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.TestCas finally: data = None
- @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.TestCas # 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=8, dry_run=False) def test_huge_str_32b(self, size): data = "abcd" * (size // 4) try:
@@ -1738,7 +1736,7 @@ class BigmemPickleTests(unittest.TestCas # of utf-8 encoded unicode. BINUNICODE8 (protocol 4) supports these huge # unicode strings however.
- @bigmemtest(size=_4G, memuse=8, dry_run=False) def test_huge_str_64b(self, size): data = "abcd" * (size // 4) try:
--- 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.3) def testDecompress4G(self, size): # "Test BZ2Decompressor.decompress() with >4GiB input" blocksize = 10 * 1024 * 1024
--- a/Lib/test/test_hashlib.py +++ b/Lib/test/test_hashlib.py @@ -256,21 +256,15 @@ class HashLibTestCase(unittest.TestCase) b'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'd174ab98d277d9f5a5611c2c9f419d9f')
- @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:[](#l3.11)
try:[](#l3.12)
self.check('md5', b'A'*size, 'c9af2dff37468ce5dfee8f2cfc0a9c6d')[](#l3.13)
except OverflowError:[](#l3.14)
pass # 32-bit arch[](#l3.15)
self.check('md5', b'A'*size, 'c9af2dff37468ce5dfee8f2cfc0a9c6d')[](#l3.16)
- @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:[](#l3.22)
try:[](#l3.23)
self.check('md5', b'A'*size, '28138d306ff1b8281f1a9067e1a1a2b3')[](#l3.24)
except OverflowError:[](#l3.25)
pass # 32-bit arch[](#l3.26)
self.check('md5', b'A'*size, '28138d306ff1b8281f1a9067e1a1a2b3')[](#l3.27)
# 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")
- @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:[](#l3.39)
try:[](#l3.40)
self.check('sha3_224', b'A'*size,[](#l3.41)
'58ef60057c9dddb6a87477e9ace5a26f0d9db01881cf9b10a9f8c224')[](#l3.42)
except OverflowError:[](#l3.43)
pass # 32-bit arch[](#l3.44)
self.check('sha3_224', b'A'*size,[](#l3.45)
'58ef60057c9dddb6a87477e9ace5a26f0d9db01881cf9b10a9f8c224')[](#l3.46)
def test_gil(self): # Check things work fine with an input larger than the size required
--- a/Lib/test/test_marshal.py +++ b/Lib/test/test_marshal.py @@ -288,19 +288,19 @@ class LargeValuesTestCase(unittest.TestC def check_unmarshallable(self, data): self.assertRaises(ValueError, marshal.dump, data, NullWriter())
- @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=2, dry_run=False) def test_str(self, size): self.check_unmarshallable('x' * size)
- @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 + 1, dry_run=False) def test_list(self, size): self.check_unmarshallable([None] * size)
@@ -316,7 +316,7 @@ class LargeValuesTestCase(unittest.TestC def test_frozenset(self, size): self.check_unmarshallable(frozenset(range(size)))
- @support.bigmemtest(size=LARGE_SIZE, memuse=2, dry_run=False) def test_bytearray(self, size): self.check_unmarshallable(bytearray(size))
--- 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.etr class MiscTests(unittest.TestCase): # Issue #8651.
- @support.bigmemtest(size=support._2G + 100, memuse=1, dry_run=False) def test_length_overflow(self, size):
if size < support._2G + 100:[](#l5.10)
self.skipTest("not enough free memory, need at least 2 GB")[](#l5.11) data = b'x' * size[](#l5.12) parser = cET.XMLParser()[](#l5.13) try:[](#l5.14)