public function testGenerate() { $generator = new DefaultKeyGenerator(); $tests = array(array('name' => 'resourceA', 'type' => 'EX', 'token' => 'askdjbasdbasdd233d2dsds', 'expected' => 'resourceA:EX:askdjbasdbasdd233d2dsds'), array('name' => '', 'type' => 'EX', 'token' => 'askdjbasdbasdd233d2dsds', 'expected' => ':EX:askdjbasdbasdd233d2dsds'), array('name' => 'resourceA', 'type' => '', 'token' => 'askdjbasdbasdd233d2dsds', 'expected' => 'resourceA::askdjbasdbasdd233d2dsds'), array('name' => 'resourceA', 'type' => 'EX', 'token' => '', 'expected' => 'resourceA:EX:'), array('name' => '', 'type' => '', 'token' => '', 'expected' => '::')); foreach ($tests as $test) { $lock = new Lock(); $lock->setResourceName($test['name'])->setType($test['type'])->setToken($test['token']); $this->assertEquals($test['expected'], $generator->generate($lock)); } }
public function testGetKeysHits() { $keyGenerator = new \Everlution\Redlock\KeyGenerator\DefaultKeyGenerator(); $locks = array(new Lock('printer', LockType::NULL, 'dn87020w80df8gsad'), new Lock('printer', LockType::PROTECTED_READ, 'dn87020w80df8gsad'), new Lock('printer', LockType::CONCURRENT_READ, 'dn87020w80df8gsad')); $keys = array(); foreach ($locks as $lock) { $keys[$keyGenerator->generate($lock)] = $lock; } $manager = $this->newManager(count($this->validAdapters), count($this->invalidAdapters)); $hits = $manager->getKeysHits('printer:*:*'); $this->assertInternalType('array', $hits); $this->assertCount(0, $hits); $i = 1; foreach ($keys as $key => $lock) { $manager->acquireLock($lock); $hits = $manager->getKeysHits('printer:*:*'); $this->assertInternalType('array', $hits); $this->assertCount($i, $hits); $this->assertContains($key, array_keys($keys)); $i++; } }