MCPcopy Create free account
hub / github.com/ImageEngine/cortex / test

Method test

test/IECore/CachedReader.py:54–128  ·  view source on GitHub ↗
( self )

Source from the content-addressed store, hash-verified

52 self.assertTrue( r.objectPool().isSame( pool ) )
53
54 def test( self ) :
55
56 pool = IECore.ObjectPool( 100 * 1024 * 1024 )
57 r = IECore.CachedReader( IECore.SearchPath( "./" ), pool )
58
59 o = r.read( "test/IECore/data/cobFiles/compoundData.cob" )
60 self.assertEqual( o.typeName(), "CompoundData" )
61 self.assertEqual( pool.memoryUsage(), o.memoryUsage() )
62 self.assertTrue( r.cached( "test/IECore/data/cobFiles/compoundData.cob" ) )
63
64 oo = r.read( "test/IECore/data/cobFiles/intDataTen.cob" )
65 self.assertEqual( pool.memoryUsage(), o.memoryUsage() + oo.memoryUsage() )
66 self.assertTrue( r.cached( "test/IECore/data/cobFiles/compoundData.cob" ) )
67 self.assertTrue( r.cached( "test/IECore/data/cobFiles/intDataTen.cob" ) )
68
69 oo = r.read( "test/IECore/data/cobFiles/intDataTen.cob" )
70 self.assertEqual( pool.memoryUsage(), o.memoryUsage() + oo.memoryUsage() )
71 self.assertTrue( r.cached( "test/IECore/data/cobFiles/compoundData.cob" ) )
72 self.assertTrue( r.cached( "test/IECore/data/cobFiles/intDataTen.cob" ) )
73
74 self.assertRaises( RuntimeError, r.read, "doesNotExist" )
75 self.assertRaises( RuntimeError, r.read, "doesNotExist" )
76
77 # Here, the cache should throw away something, but we allow the
78 # use of an approximate LRU strategy, so we can't guarantee which
79 # object will be discarded.
80 pool.setMaxMemoryUsage( o.memoryUsage() + oo.memoryUsage() - 1 )
81 self.assertLess( pool.memoryUsage(), o.memoryUsage() + oo.memoryUsage() )
82 self.assertFalse(
83 r.cached( "test/IECore/data/cobFiles/compoundData.cob" ) and
84 r.cached( "test/IECore/data/cobFiles/intDataTen.cob" )
85 )
86
87 # Here, the cache should throw away the remaining item because there
88 # is no room for it.
89 pool.setMaxMemoryUsage( pool.memoryUsage() // 2 )
90 self.assertEqual( pool.memoryUsage(), 0 )
91 self.assertFalse(
92 r.cached( "test/IECore/data/cobFiles/compoundData.cob" ) or
93 r.cached( "test/IECore/data/cobFiles/intDataTen.cob" )
94 )
95
96 pool.setMaxMemoryUsage( oo.memoryUsage() * 2 )
97 oo = r.read( "test/IECore/data/cobFiles/intDataTen.cob" )
98 pool.clear()
99 r.clear()
100 self.assertEqual( pool.memoryUsage(), 0 )
101 self.assertFalse( r.cached( "test/IECore/data/cobFiles/intDataTen.cob" ) )
102
103 oo = r.read( "test/IECore/data/cobFiles/intDataTen.cob" )
104 self.assertEqual( pool.memoryUsage(), oo.memoryUsage() )
105 self.assertTrue( r.cached( "test/IECore/data/cobFiles/intDataTen.cob" ) )
106 r.clear( "I don't exist" )
107 self.assertTrue( r.cached( "test/IECore/data/cobFiles/intDataTen.cob" ) )
108 self.assertEqual( pool.memoryUsage(), oo.memoryUsage() )
109 r.clear( "test/IECore/data/cobFiles/intDataTen.cob" )
110 self.assertEqual( pool.memoryUsage(), oo.memoryUsage() ) # clearing CachedReader doesn't clear the object from the pool
111 self.assertFalse( r.cached( "test/IECore/data/cobFiles/intDataTen.cob" ) )

Callers

nothing calls this directly

Calls 12

readMethod · 0.95
memoryUsageMethod · 0.95
cachedMethod · 0.95
setMaxMemoryUsageMethod · 0.95
clearMethod · 0.95
clearMethod · 0.95
insertMethod · 0.95
ObjectPoolMethod · 0.80
CachedReaderMethod · 0.80
SearchPathMethod · 0.80
typeNameMethod · 0.80
memoryUsageMethod · 0.45

Tested by

no test coverage detected