mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	Added Test for JPEG2000 memory leak, before the fix is added
This commit is contained in:
		
							parent
							
								
									c4afe50b50
								
							
						
					
					
						commit
						5ca57520b6
					
				
							
								
								
									
										30
									
								
								Tests/test_jp2k_leak.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								Tests/test_jp2k_leak.py
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,30 @@
 | 
				
			||||||
 | 
					from helper import unittest, PillowTestCase, tearDownModule
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from PIL import Image
 | 
				
			||||||
 | 
					from resource import setrlimit, RLIMIT_AS, RLIMIT_STACK
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Limits for testing the leak
 | 
				
			||||||
 | 
					mem_limit = 512*1048576
 | 
				
			||||||
 | 
					stack_size = 8*1048576
 | 
				
			||||||
 | 
					iterations = (mem_limit/stack_size)*2
 | 
				
			||||||
 | 
					codecs = dir(Image.core)
 | 
				
			||||||
 | 
					test_file = "Tests/images/rgb_trns_ycbc.jp2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@unittest.skipIf(sys.platform.startswith('win32'), "requires Unix or MacOS")
 | 
				
			||||||
 | 
					class TestJp2kLeak(PillowTestCase):
 | 
				
			||||||
 | 
					    def setUp(self):
 | 
				
			||||||
 | 
					        if "jpeg2k_encoder" not in codecs or "jpeg2k_decoder" not in codecs:
 | 
				
			||||||
 | 
					            self.skipTest('JPEG 2000 support not available')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_leak(self):
 | 
				
			||||||
 | 
					        setrlimit(RLIMIT_STACK, (stack_size, stack_size))
 | 
				
			||||||
 | 
					        setrlimit(RLIMIT_AS, (mem_limit, mem_limit))
 | 
				
			||||||
 | 
					        for count in range(iterations):
 | 
				
			||||||
 | 
					            with Image.open(test_file) as im:
 | 
				
			||||||
 | 
					                im.load()
 | 
				
			||||||
 | 
					                im.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    unittest.main()
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user