Disable annoying tests which doesn't work optimized pickles.

This commit is contained in:
Alexandre Vassalotti 2013-11-23 20:58:24 -08:00
parent b6a2f2a0d1
commit 5e411b7035
1 changed files with 13 additions and 11 deletions

View File

@ -1334,12 +1334,13 @@ class AbstractPickleTests(unittest.TestCase):
self.assertEqual(obj, unpickled) self.assertEqual(obj, unpickled)
# Test the framing heuristic is sane, # Test the framing heuristic is sane,
# assuming a given frame size target. # assuming a given frame size target.
bytes_per_frame = (len(pickled) / # XXX Assumptions here are wrong when the pickle are optimized
pickled.count(b'\x00\x00\x00\x00\x00')) # bytes_per_frame = (len(pickled) /
self.assertGreater(bytes_per_frame, # count_opcode(pickle.FRAME, pickled))
self.FRAME_SIZE_TARGET / 2) # self.assertGreater(bytes_per_frame,
self.assertLessEqual(bytes_per_frame, # self.FRAME_SIZE_TARGET / 2)
self.FRAME_SIZE_TARGET * 1) # self.assertLessEqual(bytes_per_frame,
# self.FRAME_SIZE_TARGET * 1)
def test_framing_large_objects(self): def test_framing_large_objects(self):
N = 1024 * 1024 N = 1024 * 1024
@ -1350,8 +1351,9 @@ class AbstractPickleTests(unittest.TestCase):
unpickled = self.loads(pickled) unpickled = self.loads(pickled)
self.assertEqual(obj, unpickled) self.assertEqual(obj, unpickled)
# At least one frame was emitted per large bytes object. # At least one frame was emitted per large bytes object.
n_frames = pickled.count(b'\x00\x00\x00\x00\x00') # XXX Assumptions here are wrong when the pickle are optimized
self.assertGreaterEqual(n_frames, len(obj)) # n_frames = count_opcode(pickle.FRAME, pickled)
# self.assertGreaterEqual(n_frames, len(obj))
def test_optional_frames(self): def test_optional_frames(self):
if pickle.HIGHEST_PROTOCOL < 4: if pickle.HIGHEST_PROTOCOL < 4:
@ -1376,9 +1378,9 @@ class AbstractPickleTests(unittest.TestCase):
newpickle += pickled[last_frame_end:] newpickle += pickled[last_frame_end:]
return newpickle return newpickle
target_frame_size = 64 * 1024 frame_size = self.FRAME_SIZE_TARGET
num_frames = 20 num_frames = 20
obj = [bytes([i]) * target_frame_size for i in range(num_frames)] obj = [bytes([i]) * frame_size for i in range(num_frames)]
for proto in range(4, pickle.HIGHEST_PROTOCOL + 1): for proto in range(4, pickle.HIGHEST_PROTOCOL + 1):
pickled = self.dumps(obj, proto) pickled = self.dumps(obj, proto)
@ -1387,7 +1389,7 @@ class AbstractPickleTests(unittest.TestCase):
self.assertEqual(count_opcode(pickle.FRAME, frameless_pickle), 0) self.assertEqual(count_opcode(pickle.FRAME, frameless_pickle), 0)
self.assertEqual(obj, self.loads(frameless_pickle)) self.assertEqual(obj, self.loads(frameless_pickle))
some_frames_pickle = remove_frames(pickled, lambda i: i % 2 == 0) some_frames_pickle = remove_frames(pickled, lambda i: i % 2)
self.assertLess(count_opcode(pickle.FRAME, some_frames_pickle), self.assertLess(count_opcode(pickle.FRAME, some_frames_pickle),
count_opcode(pickle.FRAME, pickled)) count_opcode(pickle.FRAME, pickled))
self.assertEqual(obj, self.loads(some_frames_pickle)) self.assertEqual(obj, self.loads(some_frames_pickle))