trafficlimiter.php 1.1 KB

123456789101112131415161718192021222324252627282930
  1. <?php
  2. class trafficlimiterTest extends PHPUnit_Framework_TestCase
  3. {
  4. private $_path;
  5. public function setUp()
  6. {
  7. /* Setup Routine */
  8. $this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'trafficlimit';
  9. trafficlimiter::setPath($this->_path);
  10. }
  11. public function tearDown()
  12. {
  13. /* Tear Down Routine */
  14. helper::rmdir($this->_path . DIRECTORY_SEPARATOR);
  15. }
  16. public function testTrafficGetsLimited()
  17. {
  18. trafficlimiter::setLimit(4);
  19. $this->assertTrue(trafficlimiter::canPass('127.0.0.1'), 'first request may pass');
  20. sleep(2);
  21. $this->assertFalse(trafficlimiter::canPass('127.0.0.1'), 'second request is to fast, may not pass');
  22. sleep(3);
  23. $this->assertTrue(trafficlimiter::canPass('127.0.0.1'), 'third request waited long enough and may pass');
  24. $this->assertTrue(trafficlimiter::canPass('2001:1620:2057:dead:beef::cafe:babe'), 'fourth request has different ip and may pass');
  25. $this->assertFalse(trafficlimiter::canPass('127.0.0.1'), 'fifth request is to fast, may not pass');
  26. }
  27. }