createMutex(); $this->assertTrue($mutex->acquire($mutexName)); $this->assertTrue($mutex->release($mutexName)); } /** * @dataProvider mutexDataProvider() * * @param string $mutexName */ public function testThatMutexLockIsWorking($mutexName) { $mutexOne = $this->createMutex(); $mutexTwo = $this->createMutex(); $this->assertTrue($mutexOne->acquire($mutexName)); $this->assertFalse($mutexTwo->acquire($mutexName)); $this->assertTrue($mutexOne->release($mutexName)); $this->assertFalse($mutexTwo->release($mutexName)); $this->assertTrue($mutexTwo->acquire($mutexName)); $this->assertTrue($mutexTwo->release($mutexName)); } /** * @dataProvider mutexDataProvider() * * @param string $mutexName */ public function testThatMutexLockIsWorkingOnTheSameComponent($mutexName) { $mutex = $this->createMutex(); $this->assertTrue($mutex->acquire($mutexName)); $this->assertFalse($mutex->acquire($mutexName)); $this->assertTrue($mutex->release($mutexName)); $this->assertFalse($mutex->release($mutexName)); } public function testTimeout() { $mutexName = __FUNCTION__; $mutexOne = $this->createMutex(); $mutexTwo = $this->createMutex(); $this->assertTrue($mutexOne->acquire($mutexName)); $microtime = microtime(true); $this->assertFalse($mutexTwo->acquire($mutexName, 1)); $diff = microtime(true) - $microtime; $this->assertTrue($diff >= 1 && $diff < 2); $this->assertTrue($mutexOne->release($mutexName)); $this->assertFalse($mutexTwo->release($mutexName)); } public static function mutexDataProvider() { $utf = <<<'UTF' ๐˜ห›๐œ„ ำ๐•ค ๐—ฎ ๐”ฃ๐–บ๐‘ˆ๐‰, ๐‘ˆโ„ฏ๐” ๏ฝ•๐’“๐—ฒ, ๐ฐ๐žน๐’น ๐–Š๐˜ง๐’‡๐—ถ๐•”๐–Žโ…‡ฯ€ฯ„ ๏ผฐ๐˜๐™ฟ ๐–ฟะณ๐–บ๏ฝ๐–พ๏ฝ—ฯƒ๏ฝ’๐ค. ๐“•lะต๐˜…ำแlะต ๐žฌ๐–พ๐˜ ฯฑ๐˜ณษ‘๐–Œ๏ฝ๐›ผ๐“‰อบ๐–ผ. ๐‘Š๏ฎญ๐š›๐›ž๐“ผ ๐”ฏ๐•š๐•˜าป๐žƒ ฯƒ๐šž๐žฝ เฅฆ๐’‡ ๐ญ๐™าฝ ๐—ฏ๐˜ฐ๐˜น. ๐“—๐šŠ๐˜€ ๐“‡๐–พ๐™–๐ฌ๏ปฌ๐“ƒ๐•’แ–ฏl๐”ข ๊“’๐˜ฆึ„ฮฑ๐—Žl๐ญ๊œฑ. ๐Ÿ˜ฑ UTF; return [ 'simple name' => ['testname'], 'long name' => ['Y' . str_repeat('iiiiiiiiii', 1000)], 'UTF-8 garbage' => [$utf], ]; } }