lru cache and tests