/**
  *
  * @return void
  *
  * @group unit
  * @test
  */
 public function testTheLock()
 {
     $lock = tx_rnbase_util_Lock::getInstance('unttests', 2);
     // der lock darf initial nicht gesetzt sein (zumindest im testcase)
     $this->assertFalse($lock->isLocked(), 'Lock was initial active.');
     // den prozess sperren
     $lock->lockProcess();
     // der prozess sollte nun gesperrt sein
     $this->assertTrue($lock->isLocked(), 'Process was not locked.');
     // den prozess freigeben
     $lock->unlockProcess();
     // der prozess sollte nun freigegeben sein
     $this->assertFalse($lock->isLocked(), 'Process was not unlocked.');
     // den prozess wieder sperren
     $lock->lockProcess();
     // der prozess ist erneut gesperrt
     $this->assertTrue($lock->isLocked(), 'Process was not locked again.');
     // jetzt warten, bis die lifetime vorüber ist
     sleep(3);
     // der prozess sollte nun wieder freigegeben sein
     $this->assertFalse($lock->isLocked(), 'Process was not unlocked after the lifetime.');
 }
 /**
  * Sendout an error mail
  * @param string $mailAddr commaseperated recipients
  * @param string $actionName
  * @param Exception $e
  * @param array $options
  */
 public static function sendErrorMail($mailAddr, $actionName, Exception $e, array $options = array())
 {
     $ignoreMailLock = array_key_exists('ignoremaillock', $options) && $options['ignoremaillock'];
     if (!$ignoreMailLock) {
         tx_rnbase::load('tx_rnbase_util_Lock');
         // Only one mail within one minute!
         $lock = tx_rnbase_util_Lock::getInstance('errormail', 60);
         if ($lock->isLocked()) {
             return;
         } else {
             $lock->lockProcess();
         }
     }
     $textPart = self::getErrorMailText($e, $actionName);
     $htmlPart = self::getErrorMailHtml($e, $actionName);
     /* @var $mail tx_rnbase_util_Mail */
     $mail = tx_rnbase::makeInstance('tx_rnbase_util_Mail');
     $mail->setSubject('Exception on site ' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename']);
     $from = tx_rnbase_configurations::getExtensionCfgValue('rn_base', 'fromEmail');
     $from = $from ? $from : 'error@' . tx_rnbase_util_Misc::getIndpEnv('TYPO3_HOST_ONLY');
     $mail->setFrom($from);
     $mail->setTo($mailAddr);
     $mail->setTextPart($textPart);
     $mail->setHtmlPart($htmlPart);
     if ($lock && !$ignoreMailLock) {
         // refresh the lock
         $lock->lockProcess();
     }
     return $mail->send();
 }