blob: f12c980e2d822fd41d9b4fa62e713064eed4c3f4 [file] [log] [blame]
Review Alexandru 2008-05-16
===========================
[X] the tutorial needs to be updated with the new stackable storage.
[X] run docanalisys.php on Cache:
- missing method docblocks.
- missing or wrong parameters.
- @deprecated tag could be instead @apichange? It is not recognized.
[X] xdebug_start_trace() and xdebug_stop_trace() in complex_stack_test.php on
line 307 and 309.
[X] investigate which version of APC is needed? Some tests fail with APC 3.0.14
(I got "missing apc_add() function" but maybe it was not compiled correctly).
I also needed apc.enable_cli=1 in php.ini which I didn't know - specify this
somewhere?
[X] 2 failed tests in ezcCacheStorageMemcachePlainTest:
1) testPurgeNoLimit(ezcCacheStorageMemcachePlainTest)
Purged IDs not returned correctly.
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ -1,8 +1,3 @@
Array
(
- [0] => ID
- [1] => Some/Dir/ID
- [2] => Some/other/Dir/ID/1
- [3] => Some/other/Dir/ID/2
- [4] => Some/other/Dir/ID/3
)
/home/as/dev/ezcomponents/trunk/Cache/tests/storage_memcache_plain_test.php:530
2) testPurgeLimit(ezcCacheStorageMemcachePlainTest)
Purged IDs not returned correctly.
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ -1,6 +1,3 @@
Array
(
- [0] => ID
- [1] => Some/Dir/ID
- [2] => Some/other/Dir/ID/1
)
/home/as/dev/ezcomponents/trunk/Cache/tests/storage_memcache_plain_test.php:567
# I receive these errors, too, but just occasionally. I currently have no
clue where they result from. I'll investigate more, later. However, I
think it's a Memcache issue.
I opened issue #13053 for this, since I need more time to dig into it.
[X] ezcCacheStack: why does pushStorage() use ezcCacheStackStorageConfiguration?
It could have passed the options right there in the pushStorage() instead of
creating yet another object. Like:
$stack->pushStorage( 'cache', $cache, 1, 0.5 );
instead of:
$conf = new ezcCacheStackStorageConfiguration( 'cache', $cache, 1, 0.5 );
$stack->pushStorage( $conf );
# The object is needed internally to be passed around. Creating the object
outside allows to do popStorage() and to push such removed storages back
to the stack. Beside that, it can be more convenient when using delayed
initialization through the ezcCacheManager.
[X] ezcCacheStack: the cache storages are stored twice: once in $storageStack
and once in $storageIdMap. Wouldn't it be better to store it only in
$storageStack and to store only the IDs in $storageIdMap?
# No. Objects are stored by reference, so it is most likely that this
consumes less memory than storing the actual ID twice, which would by
copied.
[X] Are all options from ezcCacheStackOptions tested in different combinations?
LRU, LRU+bubbleUp, LRU+bubbleUp+metaStorage, LRU+metaStorage
LFU, LFU+bubbleUp, LFU+bubbleUp+metaStorage, LFU+metaStorage
And in different combinations with ezcCacheStackStorageConfiguration
parameters, like $itemLimit = 1 and $freeRate = 0.1, $freeRate = 0.99 etc?
# Since not all of them depend on each other, this seems not necessary to
me. Tests are performed for:
- LRU+bubbleUp
- LRU+metaStorageConfigured
- LRU+metaStorageDefault
All with concrete method call tests via mock objects. LRU is only a
wrapper around internel base strategy. In addition, all methods of LRU,
LFU and the meta data stuff are tested dedicatedly.
I got a warning:
Warning: Invalid argument supplied for foreach()
in /home/as/dev/ezcomponents/trunk/Cache/src/storage/memory.php on line 340
when I call $cache->store() with this configuration (the cache should? be
empty but maybe there are items from previous runs):
ezcCacheManager::createCache( 'apc', null, 'ezcCacheStorageApcPlain' );
$apc = ezcCacheManager::getCache( 'apc' );
$options = array( 'host' => 'localhost', 'port' => 11211, 'ttl' => 30 );
ezcCacheManager::createCache( 'mem', null, 'ezcCacheStorageMemcachePlain', $options );
$mem = ezcCacheManager::getCache( 'mem' );
$options = new ezcCacheStackOptions();
$options->replacementStrategy = 'ezcCacheStackLfuReplacementStrategy';
$options->bubbleUpOnRestore = true;
$options->metaStorage = $mem;
ezcCacheManager::createCache( 'cache', null, 'ezcCacheStack', $options );
$cache = ezcCacheManager::getCache( 'cache' );
$conf = new ezcCacheStackStorageConfiguration( 'mem', $mem, 1, 0.9 );
$cache->pushStorage( $conf );
$conf = new ezcCacheStackStorageConfiguration( 'apc', $apc, 1, 0.9 );
$cache->pushStorage( $conf );
$cache = ezcCacheManager::getCache( 'cache' );
[X] Some tests files contain multiple classes (eg complex_stack_test.php). They
should be separated in different files because it might impede running the
test case on its own.