public beforeSendPerformed ( Swift_Events_SendEvent $evt ) | ||
$evt | Swift_Events_SendEvent |
public function beforeSendPerformed(Swift_Events_SendEvent $evt)
{
$time = $this->getTimestamp();
if (!isset($this->start)) {
$this->start = $time;
}
$duration = $time - $this->start;
switch ($this->mode) {
case self::BYTES_PER_MINUTE:
$sleep = $this->throttleBytesPerMinute($duration);
break;
case self::MESSAGES_PER_SECOND:
$sleep = $this->throttleMessagesPerSecond($duration);
break;
case self::MESSAGES_PER_MINUTE:
$sleep = $this->throttleMessagesPerMinute($duration);
break;
default:
$sleep = 0;
break;
}
if ($sleep > 0) {
$this->sleep($sleep);
}
}
public function testMessagesPerMinuteThrottling() { $sleeper = $this->_createSleeper(); $timer = $this->_createTimer(); //60/min $plugin = new Swift_Plugins_ThrottlerPlugin(60, Swift_Plugins_ThrottlerPlugin::MESSAGES_PER_MINUTE, $sleeper, $timer); $timer->shouldReceive('getTimestamp')->once()->andReturn(0); $timer->shouldReceive('getTimestamp')->once()->andReturn(0); //expected 1 (sleep 1) $timer->shouldReceive('getTimestamp')->once()->andReturn(2); //expected 2 $timer->shouldReceive('getTimestamp')->once()->andReturn(2); //expected 3 (sleep 1) $timer->shouldReceive('getTimestamp')->once()->andReturn(4); //expected 4 $sleeper->shouldReceive('sleep')->twice()->with(1); //60 messages per minute //1 message per second $message = $this->_createMessageWithByteCount(10); $evt = $this->_createSendEvent($message); for ($i = 0; $i < 5; ++$i) { $plugin->beforeSendPerformed($evt); $plugin->sendPerformed($evt); } }