Yii2 framework backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

103 lines
2.9 KiB

<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace yiiunit\framework\mutex;
use yii\base\InvalidConfigException;
use yii\mutex\Mutex;
/**
* Class MutexTestTrait.
*/
trait MutexTestTrait
{
/**
* @return Mutex
* @throws InvalidConfigException
*/
abstract protected function createMutex();
/**
* @dataProvider mutexDataProvider()
*
* @param string $mutexName
*/
public function testMutexAcquire($mutexName)
{
$mutex = $this->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'
𝐘˛𝜄 ӏ𝕤 𝗮 𝔣𝖺𐑈𝝉, 𐑈ℯ𝔠u𝒓𝗲, 𝝰𝞹𝒹 𝖊𝘧𝒇𝗶𝕔𝖎ⅇπτ P𝘏𝙿 𝖿г𝖺m𝖾wσr𝐤.
𝓕lе𝘅ӏᏏlе 𝞬𝖾𝘁 ϱ𝘳ɑ𝖌m𝛼𝓉ͺ𝖼.
𝑊ﮭ𝚛𝛞𝓼 𝔯𝕚𝕘һ𝞃 σ𝚞𝞽 ०𝒇 𝐭𝙝ҽ 𝗯𝘰𝘹.
𝓗𝚊𝘀 𝓇𝖾𝙖𝐬ﻬ𝓃𝕒ᖯl𝔢 ꓒ𝘦քα𝗎l𝐭ꜱ.
😱
UTF;
return [
'simple name' => ['testname'],
'long name' => ['Y' . str_repeat('iiiiiiiiii', 1000)],
'UTF-8 garbage' => [$utf],
];
}
}