/**
  * Tests the [Cache::set()] method, testing;
  * 
  *  - The value is cached
  *  - The lifetime is respected
  *  - The returned value type is as expected
  *  - The default not-found value is respected
  * 
  * This test doesn't test the TTL as there is a known bug/feature
  * in APC that prevents the same request from killing cache on timeout.
  * 
  * @link   http://pecl.php.net/bugs/bug.php?id=16814
  * 
  * @dataProvider provider_set_get
  *
  * @param   array    data
  * @param   mixed    expected 
  * @return  void
  */
 public function test_set_get(array $data, $expected)
 {
     if ($data['wait'] !== FALSE) {
         $this->markTestSkipped('Unable to perform TTL test in CLI, see: ' . 'http://pecl.php.net/bugs/bug.php?id=16814 for more info!');
     }
     parent::test_set_get($data, $expected);
 }
Esempio n. 2
0
 /**
  * This method MUST be implemented by each driver to setup the `Cache`
  * instance for each test.
  * 
  * This method should do the following tasks for each driver test:
  * 
  *  - Test the Cache instance driver is available, skip test otherwise
  *  - Setup the Cache instance
  *  - Call the parent setup method, `parent::setUp()`
  *
  * @return  void
  */
 public function setUp()
 {
     parent::setUp();
     if (!extension_loaded('memcache')) {
         $this->markTestSkipped('Memcache PHP Extension is not available');
     }
     if (!($config = Kohana::$config->load('cache')->memcache)) {
         $this->markTestSkipped('Unable to load Memcache configuration');
     }
     $memcache = new Memcache();
     if (!$memcache->connect($config['servers'][0]['host'], $config['servers'][0]['port'])) {
         $this->markTestSkipped('Unable to connect to memcache server @ ' . $config['servers'][0]['host'] . ':' . $config['servers'][0]['port']);
     }
     if ($memcache->getVersion() === FALSE) {
         $this->markTestSkipped('Memcache server @ ' . $config['servers'][0]['host'] . ':' . $config['servers'][0]['port'] . ' not responding!');
     }
     unset($memcache);
     $this->cache(Cache::instance('memcache'));
 }
 /**
  * This method MUST be implemented by each driver to setup the `Cache`
  * instance for each test.
  * 
  * This method should do the following tasks for each driver test:
  * 
  *  - Test the Cache instance driver is available, skip test otherwise
  *  - Setup the Cache instance
  *  - Call the parent setup method, `parent::setUp()`
  *
  * @return  void
  */
 public function setUp()
 {
     parent::setUp();
     if (!extension_loaded('memcache')) {
         $this->markTestSkipped('Memcache PHP Extension is not available');
     }
     if (!($config = Kohana::$config->load('cache.memcache'))) {
         Kohana::$config->load('cache')->set('memcache', array('driver' => 'memcache', 'default_expire' => 3600, 'compression' => FALSE, 'servers' => array('local' => array('host' => 'localhost', 'port' => 11211, 'persistent' => FALSE, 'weight' => 1, 'timeout' => 1, 'retry_interval' => 15, 'status' => TRUE)), 'instant_death' => TRUE));
         $config = Kohana::$config->load('cache.memcache');
     }
     $memcache = new Memcache();
     if (!$memcache->connect($config['servers']['local']['host'], $config['servers']['local']['port'])) {
         $this->markTestSkipped('Unable to connect to memcache server @ ' . $config['servers']['local']['host'] . ':' . $config['servers']['local']['port']);
     }
     if ($memcache->getVersion() === FALSE) {
         $this->markTestSkipped('Memcache server @ ' . $config['servers']['local']['host'] . ':' . $config['servers']['local']['port'] . ' not responding!');
     }
     unset($memcache);
     $this->cache(Cache::instance('memcache'));
 }