Example #1
0
 public function testHierarchy()
 {
     $backends = [new Matryoshka\Ephemeral(), Matryoshka\Memcache::isAvailable() ? Matryoshka\Memcache::create($this->getMemcache()) : new Matryoshka\Ephemeral()];
     $hierarchy = new Matryoshka\Hierarchy($backends);
     $allBackends = array_merge($backends, [$hierarchy]);
     list($key, $value) = $this->getRandomKeyValue();
     $this->assertNull($hierarchy->get($key));
     $this->assertTrue($hierarchy->set($key, $value));
     foreach ($allBackends as $backend) {
         $this->assertSame($value, $backend->get($key));
     }
     $this->assertTrue($backends[0]->delete($key));
     $this->assertSame($value, $hierarchy->get($key));
     $this->assertSame($value, $backends[0]->get($key));
     $this->assertTrue($hierarchy->delete($key));
     foreach ($allBackends as $backend) {
         $this->assertNull($backend->get($key));
     }
     list($key, $value) = $this->getRandomKeyValue();
     $this->assertTrue($hierarchy->set($key, $value));
     $this->assertTrue($backends[1]->delete($key));
     $this->assertSame($value, $hierarchy->get($key));
 }
 private static function getTestBackends($regex)
 {
     $allBackends = ['EnabledMemArray' => new Matryoshka\Enable(new Matryoshka\Ephemeral()), 'DisabledMemArray' => self::getDisabled(new Matryoshka\Ephemeral()), 'KeyShortMemArray' => new Matryoshka\KeyShorten(new Matryoshka\Ephemeral(), 40), 'MemArrayHierarchy' => new Matryoshka\Hierarchy([new Matryoshka\Ephemeral()]), 'MemArray' => new Matryoshka\Ephemeral(), 'PrefixMemArray' => new Matryoshka\Prefix(new Matryoshka\Ephemeral(), 'prefix'), 'ScopeMemArray' => new Matryoshka\Scope(new Matryoshka\Ephemeral(), 'scope'), 'MultiScope2MemArray' => self::getMultiScope(new Matryoshka\Ephemeral(), 2), 'MultiScope10MemArray' => self::getMultiScope(new Matryoshka\Ephemeral(), 10), 'StatsMemArray' => new Matryoshka\Stats(new Matryoshka\Ephemeral()), 'ExprChangeMemArray' => new Matryoshka\ExpirationChange(new Matryoshka\Ephemeral(), function ($expiration) {
         return $expiration * 2;
     })];
     if (Matryoshka\Memcache::isAvailable()) {
         $allBackends['MemArrayMemcacheHier'] = new Matryoshka\Hierarchy([new Matryoshka\Ephemeral(), Matryoshka\Memcache::create(self::getMemcache())]);
         $allBackends['LocalMemcache'] = new Matryoshka\Local(Matryoshka\Memcache::create(self::getMemcache()));
         $allBackends['Memcache'] = Matryoshka\Memcache::create(self::getMemcache());
     }
     if (Matryoshka\Memcached::isAvailable()) {
         $allBackends['Memcached'] = Matryoshka\Memcached::create(self::getMemcached());
     }
     if (Matryoshka\APCu::isAvailable()) {
         $allBackends['APCu'] = new Matryoshka\APCu();
     }
     if ($regex !== null) {
         foreach ($allBackends as $type => $backend) {
             if (!preg_match("/{$regex}/i", $type)) {
                 unset($allBackends[$type]);
             }
         }
     }
     return $allBackends;
 }
Example #3
0
 protected function getBackend()
 {
     return Matryoshka\Memcache::create($this->getMemcache());
 }