QueueUnitTestCase.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. * Some tests in there credits goes to the redis_queue module.
  4. * Thanks to their author.
  5. */
  6. abstract class Redis_Tests_Queue_QueueUnitTestCase extends Redis_Tests_AbstractUnitTestCase
  7. {
  8. /**
  9. * @var Redis_Queue
  10. */
  11. public $queue;
  12. /**
  13. * @var string
  14. */
  15. public $name;
  16. public function setUp()
  17. {
  18. parent::setUp();
  19. module_load_include('inc', 'system', 'system.queue');
  20. $this->name = 'redis-queue-test-' . time();
  21. $this->queue = new Redis_Queue($this->name);
  22. }
  23. public function tearDown()
  24. {
  25. $this->queue->deleteQueue();
  26. $this->name = null;
  27. parent::tearDown();
  28. }
  29. public function testCreate()
  30. {
  31. $res = $this->queue->createItem('test-queue-item-create');
  32. $num = $this->queue->numberOfItems();
  33. $this->assertEqual(1, $num);
  34. }
  35. public function testClaim()
  36. {
  37. $data = 'test-queue-item-claimed';
  38. $res = $this->queue->createItem($data);
  39. $item = $this->queue->claimItem();
  40. $this->assertEqual($data, $item->data);
  41. }
  42. /*
  43. public function testClaimBlocking()
  44. {
  45. $data = 'test-queue-item-claimed';
  46. $res = $this->queue->createItem($data);
  47. $this->assertTrue($res);
  48. $item = $this->queue->claimItemBlocking(10);
  49. $this->assertEqual($data, $item->data);
  50. }
  51. */
  52. public function testRelease()
  53. {
  54. $data = 'test-queue-item';
  55. $res = $this->queue->createItem($data);
  56. $item = $this->queue->claimItem();
  57. $num = $this->queue->numberOfItems();
  58. $this->assertEqual(0, $num);
  59. $res = $this->queue->releaseItem($item);
  60. $num = $this->queue->numberOfItems();
  61. $this->assertEqual(1, $num);
  62. }
  63. public function testOrder()
  64. {
  65. $keys = array('test1', 'test2', 'test3');
  66. foreach ($keys as $k) {
  67. $this->queue->createItem($k);
  68. }
  69. $first = $this->queue->claimItem();
  70. $this->assertEqual($first->data, $keys[0]);
  71. $second = $this->queue->claimItem();
  72. $this->assertEqual($second->data, $keys[1]);
  73. $this->queue->releaseItem($first);
  74. $third = $this->queue->claimItem();
  75. $this->assertEqual($third->data, $keys[2]);
  76. $first_again = $this->queue->claimItem();
  77. $this->assertEqual($first_again->data, $keys[0]);
  78. $num = $this->queue->numberOfItems();
  79. $this->assertEqual(0, $num);
  80. }
  81. /*
  82. public function lease()
  83. {
  84. $data = 'test-queue-item';
  85. $res = $this->queue->createItem($data);
  86. $num = $this->queue->numberOfItems();
  87. $this->assertEquals(1, $num);
  88. $item = $this->queue->claimItem(1);
  89. // In Redis 2.4 the expire could be between zero to one seconds off.
  90. sleep(2);
  91. $expired = $this->queue->expire();
  92. $this->assertEquals(1, $expired);
  93. $this->assertEquals(1, $this->queue->numberOfItems());
  94. // Create a second queue to test expireAll()
  95. $q2 = new RedisQueue($this->name . '_2');
  96. $q2->createItem($data);
  97. $q2->createItem($data);
  98. $this->assertEquals(2, $q2->numberOfItems());
  99. $item = $this->queue->claimItem(1);
  100. $item2 = $q2->claimItem(1);
  101. $this->assertEquals(1, $q2->numberOfItems());
  102. sleep(2);
  103. $expired = $this->queue->expireAll();
  104. $this->assertEquals(2, $expired);
  105. $this->assertEquals(1, $this->queue->numberOfItems());
  106. $this->assertEquals(2, $q2->numberOfItems());
  107. $q2->deleteQueue();
  108. }
  109. */
  110. }