Esempio n. 1
0
 def testCachesClear(self):
     large_image.cache_util.cache._tileCache = None
     large_image.cache_util.cache._tileLock = None
     config.setConfig('cache_backend', 'python')
     self.ExampleWithMetaclass('test')
     getTileCache()
     assert cachesInfo()['test']['used'] == 1
     cachesClear()
     assert cachesInfo()['test']['used'] == 0
 def cacheClear(self, params):
     before = cache_util.cachesInfo()
     cache_util.cachesClear()
     after = cache_util.cachesInfo()
     return {
         'cacheCleared': datetime.datetime.utcnow(),
         'before': before,
         'after': after
     }
Esempio n. 3
0
 def testCachesKeyLock(self):
     cachesClear()
     assert cachesInfo()['test']['used'] == 0
     starttime = time.time()
     with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
         executor.map(self.ExampleWithMetaclass, [3, 3, 2])
     endtime = time.time()
     # This really should be close to 3
     assert endtime - starttime < 6
     assert cachesInfo()['test']['used'] == 2
def testInternalMetadata():
    import large_image_source_bioformats

    imagePath = utilities.externaldata('data/HENormalN801.czi.sha512')
    source = large_image_source_bioformats.BioformatsFileTileSource(imagePath)
    metadata = source.getInternalMetadata()
    assert 'sizeColorPlanes' in metadata

    source = None
    cachesClear()
Esempio n. 5
0
 def cacheClear(self, params):
     before = cache_util.cachesInfo()
     cache_util.cachesClear()
     after = cache_util.cachesInfo()
     # Add a small delay to give the memcached time to clear
     stoptime = time.time() + 5
     while time.time() < stoptime and any(after[key]['used'] for key in after):
         time.sleep(0.1)
         after = cache_util.cachesInfo()
     return {'cacheCleared': datetime.datetime.utcnow(), 'before': before, 'after': after}
Esempio n. 6
0
def testInternalMetadata():
    import large_image_source_bioformats

    imagePath = datastore.fetch('HENormalN801.czi')
    source = large_image_source_bioformats.open(imagePath)
    metadata = source.getInternalMetadata()
    assert 'sizeColorPlanes' in metadata

    source = None
    cachesClear()
Esempio n. 7
0
 def testCachesInfo(self):
     cachesClear()
     large_image.cache_util.cache._tileCache = None
     large_image.cache_util.cache._tileLock = None
     assert cachesInfo()['test']['used'] == 0
     assert 'tileCache' not in cachesInfo()
     self.ExampleWithMetaclass('test')
     assert cachesInfo()['test']['used'] == 1
     config.setConfig('cache_backend', 'python')
     getTileCache()
     assert 'tileCache' in cachesInfo()
     large_image.cache_util.cache._tileCache = None
     large_image.cache_util.cache._tileLock = None
     config.setConfig('cache_backend', 'memcached')
     getTileCache()
     # memcached shows an items record as well
     assert 'items' in cachesInfo()['tileCache']
def testTilesFromBioformats():
    import large_image_source_bioformats

    imagePath = utilities.externaldata('data/HENormalN801.czi.sha512')
    source = large_image_source_bioformats.BioformatsFileTileSource(imagePath)
    tileMetadata = source.getMetadata()

    assert tileMetadata['tileWidth'] == 1024
    assert tileMetadata['tileHeight'] == 1024
    assert tileMetadata['sizeX'] == 50577
    assert tileMetadata['sizeY'] == 17417
    assert tileMetadata['levels'] == 7
    assert tileMetadata['magnification'] == pytest.approx(20, 1)
    utilities.checkTilesZXY(source, tileMetadata)

    source = None
    cachesClear()
Esempio n. 9
0
def testTilesFromBioformats():
    import large_image_source_bioformats

    imagePath = datastore.fetch('HENormalN801.czi')
    source = large_image_source_bioformats.open(imagePath)
    tileMetadata = source.getMetadata()

    assert tileMetadata['tileWidth'] == 1024
    assert tileMetadata['tileHeight'] == 1024
    assert tileMetadata['sizeX'] == 50577
    assert tileMetadata['sizeY'] == 17417
    assert tileMetadata['levels'] == 7
    assert tileMetadata['magnification'] == pytest.approx(20, 1)
    utilities.checkTilesZXY(source, tileMetadata)

    source = None
    cachesClear()
Esempio n. 10
0
def testTilesFromPIL():
    # Ensure this test can run in any order
    cachesClear()

    imagePath = datastore.fetch('sample_Easy1.png')
    # Test with different max size options.
    config.setConfig('max_small_image_size', 100)
    assert large_image_source_pil.canRead(imagePath) is False

    # Allow images bigger than our test
    config.setConfig('max_small_image_size', 2048)
    assert large_image_source_pil.canRead(imagePath) is True
    source = large_image_source_pil.open(imagePath)
    tileMetadata = source.getMetadata()
    assert tileMetadata['tileWidth'] == 1790
    assert tileMetadata['tileHeight'] == 1046
    assert tileMetadata['sizeX'] == 1790
    assert tileMetadata['sizeY'] == 1046
    assert tileMetadata['levels'] == 1
    assert tileMetadata['magnification'] is None
    assert tileMetadata['mm_x'] is None
    assert tileMetadata['mm_y'] is None
    utilities.checkTilesZXY(source, tileMetadata)
Esempio n. 11
0
def testBelowLevelTilesFromOpenJPEG():
    from large_image.cache_util import cachesClear

    imagePath = datastore.fetch('JK-kidney_B-gal_H3_4C_1-500sec.jp2')
    origMin = large_image_source_openjpeg.OpenjpegFileTileSource._minTileSize
    origMax = large_image_source_openjpeg.OpenjpegFileTileSource._maxTileSize
    large_image_source_openjpeg.OpenjpegFileTileSource._minTileSize = 64
    large_image_source_openjpeg.OpenjpegFileTileSource._maxTileSize = 64
    # Clear the cache to make sure we use our required max tile size.
    cachesClear()
    source = large_image_source_openjpeg.open(imagePath)
    tileMetadata = source.getMetadata()

    assert tileMetadata['tileWidth'] == 64
    assert tileMetadata['tileHeight'] == 64
    assert tileMetadata['sizeX'] == 16384
    assert tileMetadata['sizeY'] == 14848
    assert tileMetadata['levels'] == 9
    assert tileMetadata['magnification'] == 40
    utilities.checkTilesZXY(source, tileMetadata)
    large_image_source_openjpeg.OpenjpegFileTileSource._minTileSize = origMin
    large_image_source_openjpeg.OpenjpegFileTileSource._maxTileSize = origMax
    cachesClear()
Esempio n. 12
0
    def testTiffClosed(self):
        # test the Tiff files are properly closed.
        orig_del = TiledTiffDirectory.__del__
        orig_init = TiledTiffDirectory.__init__
        self.delCount = 0
        self.initCount = 0

        def countDelete(*args, **kwargs):
            self.delCount += 1
            orig_del(*args, **kwargs)

        def countInit(*args, **kwargs):
            self.initCount += 1
            orig_init(*args, **kwargs)

        imagePath = utilities.externaldata('data/sample_image.ptif.sha512')
        cachesClear()
        gc.collect(2)
        TiledTiffDirectory.__del__ = countDelete
        TiledTiffDirectory.__init__ = countInit
        self.initCount = 0
        self.delCount = 0
        source = large_image.getTileSource(imagePath)
        assert source is not None
        assert self.initCount == 12
        assert self.delCount < 12
        # Create another source; we shouldn't init it again, as it should be
        # cached.
        source = large_image.getTileSource(imagePath)
        assert source is not None
        assert self.initCount == 12
        assert self.delCount < 12
        source = None
        # Clear the cache to free references and force garbage collection
        cachesClear()
        gc.collect(2)
        cachesClear()
        assert self.delCount == 12