| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | 
							- <?php
 - 
 - require_once 'Swift/Tests/SwiftUnitTestCase.php';
 - require_once 'Swift/Plugins/ThrottlerPlugin.php';
 - require_once 'Swift/Events/SendEvent.php';
 - require_once 'Swift/Plugins/Sleeper.php';
 - require_once 'Swift/Plugins/Timer.php';
 - require_once 'Swift/Mime/Message.php';
 - 
 - class Swift_Plugins_ThrottlerPluginTest extends Swift_Tests_SwiftUnitTestCase
 - {
 -   
 -   public function testBytesPerMinuteThrottling()
 -   {
 -     $sleeper = $this->_createSleeper();
 -     $timer = $this->_createTimer();
 -     
 -     //10MB/min
 -     $plugin = new Swift_Plugins_ThrottlerPlugin(
 -       10000000, Swift_Plugins_ThrottlerPlugin::BYTES_PER_MINUTE,
 -       $sleeper, $timer
 -       );
 -     
 -     $this->_checking(Expectations::create()
 -       -> one($timer)->getTimestamp() -> returns(0)
 -       -> one($timer)->getTimestamp() -> returns(1) //expected 0.6
 -       -> one($timer)->getTimestamp() -> returns(1) //expected 1.2 (sleep 1)
 -       -> one($timer)->getTimestamp() -> returns(2) //expected 1.8
 -       -> one($timer)->getTimestamp() -> returns(2) //expected 2.4 (sleep 1)
 -       -> ignoring($timer)
 -       
 -       -> exactly(2)->of($sleeper)->sleep(1)
 -       );
 -     
 -     //10,000,000 bytes per minute
 -     //100,000 bytes per email
 -     
 -     // .: (10,000,000/100,000)/60 emails per second = 1.667 emais/sec
 -     
 -     $message = $this->_createMessageWithByteCount(100000); //100KB
 -     
 -     $evt = $this->_createSendEvent($message);
 -     
 -     for ($i = 0; $i < 5; ++$i)
 -     {
 -       $plugin->beforeSendPerformed($evt);
 -       $plugin->sendPerformed($evt);
 -     }
 -   }
 -   
 -   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
 -       );
 -     
 -     $this->_checking(Expectations::create()
 -       -> one($timer)->getTimestamp() -> returns(0)
 -       -> one($timer)->getTimestamp() -> returns(0) //expected 1 (sleep 1)
 -       -> one($timer)->getTimestamp() -> returns(2) //expected 2
 -       -> one($timer)->getTimestamp() -> returns(2) //expected 3 (sleep 1)
 -       -> one($timer)->getTimestamp() -> returns(4) //expected 4
 -       -> ignoring($timer)
 -       
 -       -> exactly(2)->of($sleeper)->sleep(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);
 -     }
 -   }
 -   
 -   // -- Creation Methods
 -   
 -   private function _createSleeper()
 -   {
 -     return $this->_mock('Swift_Plugins_Sleeper');
 -   }
 -   
 -   private function _createTimer()
 -   {
 -     return $this->_mock('Swift_Plugins_Timer');
 -   }
 -   
 -   private function _createMessageWithByteCount($bytes)
 -   {
 -     $this->_bytes = $bytes;
 -     $msg = $this->_mock('Swift_Mime_Message');
 -     $this->_checking(Expectations::create()
 -       -> ignoring($msg)->toByteStream(any()) -> calls(array($this, '_write'))
 -     );
 -     return $msg;
 -   }
 -   
 -   private function _createSendEvent($message)
 -   {
 -     $evt = $this->_mock('Swift_Events_SendEvent');
 -     $this->_checking(Expectations::create()
 -       -> ignoring($evt)->getMessage() -> returns($message)
 -       );
 -     return $evt;
 -   }
 -   
 -   private $_bytes = 0;
 -   public function _write($invocation)
 -   {
 -     $args = $invocation->getArguments();
 -     $is = $args[0];
 -     for ($i = 0; $i < $this->_bytes; ++$i)
 -     {
 -       $is->write('x');
 -     }
 -   }
 -   
 - }
 
 
  |