PageRenderTime 45ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/ZendFramework/tests/Zend/Service/WindowsAzure/QueueStorageTest.php

https://bitbucket.org/Dal-Papa/is-340-publish-base
PHP | 394 lines | 254 code | 61 blank | 79 comment | 22 complexity | 5e737b274850f79687a351f2b7fd8855 MD5 | raw file
  1. <?php
  2. /**
  3. * Zend Framework
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://framework.zend.com/license/new-bsd
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category Zend
  16. * @package Zend_Service_WindowsAzure
  17. * @subpackage UnitTests
  18. * @version $Id$
  19. * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  20. * @license http://framework.zend.com/license/new-bsd New BSD License
  21. */
  22. if (!defined('PHPUnit_MAIN_METHOD')) {
  23. define('PHPUnit_MAIN_METHOD', 'Zend_Service_WindowsAzure_QueueStorageTest::main');
  24. }
  25. /**
  26. * Test helpers
  27. */
  28. require_once dirname(__FILE__) . '/../../../TestHelper.php';
  29. require_once dirname(__FILE__) . '/../../../TestConfiguration.php.dist';
  30. require_once 'PHPUnit/Framework/TestCase.php';
  31. /** Zend_Service_WindowsAzure_Storage_Queue */
  32. require_once 'Zend/Service/WindowsAzure/Storage/Queue.php';
  33. /**
  34. * @category Zend
  35. * @package Zend_Service_WindowsAzure
  36. * @subpackage UnitTests
  37. * @version $Id$
  38. * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  39. * @license http://framework.zend.com/license/new-bsd New BSD License
  40. */
  41. class Zend_Service_WindowsAzure_QueueStorageTest extends PHPUnit_Framework_TestCase
  42. {
  43. public static function main()
  44. {
  45. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  46. $suite = new PHPUnit_Framework_TestSuite("Zend_Service_WindowsAzure_QueueStorageTest");
  47. $result = PHPUnit_TextUI_TestRunner::run($suite);
  48. }
  49. }
  50. /**
  51. * Test setup
  52. */
  53. protected function setUp()
  54. {
  55. }
  56. /**
  57. * Test teardown
  58. */
  59. protected function tearDown()
  60. {
  61. $storageClient = $this->createStorageInstance();
  62. for ($i = 1; $i <= self::$uniqId; $i++)
  63. {
  64. try { $storageClient->deleteQueue(TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_PREFIX . $i); } catch (Exception $e) { }
  65. }
  66. }
  67. protected function createStorageInstance()
  68. {
  69. $storageClient = null;
  70. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNONPROD) {
  71. $storageClient = new Zend_Service_WindowsAzure_Storage_Queue(TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_HOST_PROD, TESTS_ZEND_SERVICE_WINDOWSAZURE_STORAGE_ACCOUNT_PROD, TESTS_ZEND_SERVICE_WINDOWSAZURE_STORAGE_KEY_PROD, false, Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract::retryN(10, 250));
  72. } else {
  73. $storageClient = new Zend_Service_WindowsAzure_Storage_Queue(TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_HOST_DEV, TESTS_ZEND_SERVICE_WINDOWSAZURE_STORAGE_ACCOUNT_DEV, TESTS_ZEND_SERVICE_WINDOWSAZURE_STORAGE_KEY_DEV, true, Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract::retryN(10, 250));
  74. }
  75. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_STORAGE_USEPROXY) {
  76. $storageClient->setProxy(TESTS_ZEND_SERVICE_WINDOWSAZURE_STORAGE_USEPROXY, TESTS_ZEND_SERVICE_WINDOWSAZURE_STORAGE_PROXY, TESTS_ZEND_SERVICE_WINDOWSAZURE_STORAGE_PROXY_PORT, TESTS_ZEND_SERVICE_WINDOWSAZURE_STORAGE_PROXY_CREDENTIALS);
  77. }
  78. return $storageClient;
  79. }
  80. protected static $uniqId = 0;
  81. protected function generateName()
  82. {
  83. self::$uniqId++;
  84. return TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_PREFIX . self::$uniqId;
  85. }
  86. /**
  87. * Test queue exists
  88. */
  89. public function testQueueExists()
  90. {
  91. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  92. $queueName1 = $this->generateName();
  93. $queueName2 = $this->generateName();
  94. $storageClient = $this->createStorageInstance();
  95. $storageClient->createQueue($queueName1);
  96. $storageClient->createQueue($queueName2);
  97. $result = $storageClient->queueExists($queueName1);
  98. $this->assertTrue($result);
  99. $result = $storageClient->queueExists(md5(time()));
  100. $this->assertFalse($result);
  101. }
  102. }
  103. /**
  104. * Test create queue
  105. */
  106. public function testCreateQueue()
  107. {
  108. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  109. $queueName = $this->generateName();
  110. $storageClient = $this->createStorageInstance();
  111. $result = $storageClient->createQueue($queueName);
  112. $this->assertEquals($queueName, $result->Name);
  113. }
  114. }
  115. /**
  116. * Test create queue if not exists
  117. */
  118. public function testCreateQueueIfNotExists()
  119. {
  120. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  121. $queueName = $this->generateName();
  122. $storageClient = $this->createStorageInstance();
  123. $result = $storageClient->queueExists($queueName);
  124. $this->assertFalse($result);
  125. $storageClient->createQueueIfNotExists($queueName);
  126. $result = $storageClient->queueExists($queueName);
  127. $this->assertTrue($result);
  128. $storageClient->createQueueIfNotExists($queueName);
  129. }
  130. }
  131. /**
  132. * Test set queue metadata
  133. */
  134. public function testSetQueueMetadata()
  135. {
  136. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  137. $queueName = $this->generateName();
  138. $storageClient = $this->createStorageInstance();
  139. $storageClient->createQueue($queueName);
  140. $storageClient->setQueueMetadata($queueName, array(
  141. 'createdby' => 'PHPAzure',
  142. ));
  143. $metadata = $storageClient->getQueueMetadata($queueName);
  144. $this->assertEquals('PHPAzure', $metadata['createdby']);
  145. }
  146. }
  147. /**
  148. * Test get queue
  149. */
  150. public function testGetQueue()
  151. {
  152. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  153. $queueName = $this->generateName();
  154. $storageClient = $this->createStorageInstance();
  155. $storageClient->createQueue($queueName);
  156. $queue = $storageClient->getQueue($queueName);
  157. $this->assertEquals($queueName, $queue->Name);
  158. $this->assertEquals(0, $queue->ApproximateMessageCount);
  159. }
  160. }
  161. /**
  162. * Test list queues
  163. */
  164. public function testListQueues()
  165. {
  166. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  167. $queueName1 = 'testlist1';
  168. $queueName2 = 'testlist2';
  169. $queueName3 = 'testlist3';
  170. $storageClient = $this->createStorageInstance();
  171. $storageClient->createQueue($queueName1);
  172. $storageClient->createQueue($queueName2);
  173. $storageClient->createQueue($queueName3);
  174. $result1 = $storageClient->listQueues('testlist');
  175. $result2 = $storageClient->listQueues('testlist', 1);
  176. // cleanup first
  177. $storageClient->deleteQueue($queueName1);
  178. $storageClient->deleteQueue($queueName2);
  179. $storageClient->deleteQueue($queueName3);
  180. $this->assertEquals(3, count($result1));
  181. $this->assertEquals($queueName2, $result1[1]->Name);
  182. $this->assertEquals(1, count($result2));
  183. }
  184. }
  185. /**
  186. * Test list queues with metadata
  187. */
  188. public function testListQueuesWithMetadata()
  189. {
  190. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  191. $queueName = $this->generateName();
  192. $storageClient = $this->createStorageInstance();
  193. $storageClient->createQueue($queueName, array(
  194. 'createdby' => 'PHPAzure',
  195. 'ownedby' => 'PHPAzure',
  196. ));
  197. $result = $storageClient->listQueues($queueName, null, null, 'metadata');
  198. $this->assertEquals('PHPAzure', $result[0]->Metadata['createdby']);
  199. $this->assertEquals('PHPAzure', $result[0]->Metadata['ownedby']);
  200. }
  201. }
  202. /**
  203. * Test put message
  204. */
  205. public function testPutMessage()
  206. {
  207. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  208. $queueName = $this->generateName();
  209. $storageClient = $this->createStorageInstance();
  210. $storageClient->createQueue($queueName);
  211. $storageClient->putMessage($queueName, 'Test message', 120);
  212. sleep(5); // wait for the message to appear in the queue...
  213. $messages = $storageClient->getMessages($queueName);
  214. $this->assertEquals(1, count($messages));
  215. $this->assertEquals('Test message', $messages[0]->MessageText);
  216. }
  217. }
  218. /**
  219. * Test get messages
  220. */
  221. public function testGetMessages()
  222. {
  223. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  224. $queueName = $this->generateName();
  225. $storageClient = $this->createStorageInstance();
  226. $storageClient->createQueue($queueName);
  227. $storageClient->putMessage($queueName, 'Test message 1', 120);
  228. $storageClient->putMessage($queueName, 'Test message 2', 120);
  229. $storageClient->putMessage($queueName, 'Test message 3', 120);
  230. $storageClient->putMessage($queueName, 'Test message 4', 120);
  231. sleep(5); // wait for the messages to appear in the queue...
  232. $messages1 = $storageClient->getMessages($queueName, 2);
  233. $messages2 = $storageClient->getMessages($queueName, 2);
  234. $messages3 = $storageClient->getMessages($queueName);
  235. $this->assertEquals(2, count($messages1));
  236. $this->assertEquals(2, count($messages2));
  237. $this->assertEquals(0, count($messages3));
  238. }
  239. }
  240. /**
  241. * Test peek messages
  242. */
  243. public function testPeekMessages()
  244. {
  245. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  246. $queueName = $this->generateName();
  247. $storageClient = $this->createStorageInstance();
  248. $storageClient->createQueue($queueName);
  249. $storageClient->putMessage($queueName, 'Test message 1', 120);
  250. $storageClient->putMessage($queueName, 'Test message 2', 120);
  251. $storageClient->putMessage($queueName, 'Test message 3', 120);
  252. $storageClient->putMessage($queueName, 'Test message 4', 120);
  253. sleep(5); // wait for the messages to appear in the queue...
  254. $messages1 = $storageClient->peekMessages($queueName, 4);
  255. $hasMessages = $storageClient->hasMessages($queueName);
  256. $messages2 = $storageClient->getMessages($queueName, 4);
  257. $this->assertEquals(4, count($messages1));
  258. $this->assertTrue($hasMessages);
  259. $this->assertEquals(4, count($messages2));
  260. }
  261. }
  262. /**
  263. * Test dequeuecount
  264. */
  265. public function testDequeueCount()
  266. {
  267. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  268. $queueName = $this->generateName();
  269. $storageClient = $this->createStorageInstance();
  270. $storageClient->createQueue($queueName);
  271. $storageClient->putMessage($queueName, 'Test message 1', 120);
  272. sleep(5); // wait for the message to appear in the queue...
  273. $expectedDequeueCount = 3;
  274. for ($i = 0; $i < $expectedDequeueCount - 1; $i++) {
  275. $storageClient->getMessages($queueName, 1, 1);
  276. sleep(3);
  277. }
  278. $messages = $storageClient->getMessages($queueName, 1);
  279. $this->assertEquals($expectedDequeueCount, $messages[0]->DequeueCount);
  280. }
  281. }
  282. /**
  283. * Test clear messages
  284. */
  285. public function testClearMessages()
  286. {
  287. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  288. $queueName = $this->generateName();
  289. $storageClient = $this->createStorageInstance();
  290. $storageClient->createQueue($queueName);
  291. $storageClient->putMessage($queueName, 'Test message 1', 120);
  292. $storageClient->putMessage($queueName, 'Test message 2', 120);
  293. $storageClient->putMessage($queueName, 'Test message 3', 120);
  294. $storageClient->putMessage($queueName, 'Test message 4', 120);
  295. sleep(5); // wait for the messages to appear in the queue...
  296. $messages1 = $storageClient->peekMessages($queueName, 4);
  297. $storageClient->clearMessages($queueName);
  298. sleep(5); // wait for the GC...
  299. $messages2 = $storageClient->peekMessages($queueName, 4);
  300. $this->assertEquals(4, count($messages1));
  301. $this->assertEquals(0, count($messages2));
  302. }
  303. }
  304. /**
  305. * Test delete message
  306. */
  307. public function testDeleteMessage()
  308. {
  309. if (TESTS_ZEND_SERVICE_WINDOWSAZURE_QUEUE_RUNTESTS) {
  310. $queueName = $this->generateName();
  311. $storageClient = $this->createStorageInstance();
  312. $storageClient->createQueue($queueName);
  313. $storageClient->putMessage($queueName, 'Test message 1', 120);
  314. $storageClient->putMessage($queueName, 'Test message 2', 120);
  315. $storageClient->putMessage($queueName, 'Test message 3', 120);
  316. $storageClient->putMessage($queueName, 'Test message 4', 120);
  317. sleep(5); // wait for the messages to appear in the queue...
  318. $messages1 = $storageClient->getMessages($queueName, 2, 10);
  319. foreach ($messages1 as $message)
  320. {
  321. $storageClient->deleteMessage($queueName, $message);
  322. }
  323. sleep(5); // wait for the GC...
  324. $messages2 = $storageClient->getMessages($queueName, 4);
  325. $this->assertEquals(2, count($messages1));
  326. $this->assertEquals(2, count($messages2));
  327. }
  328. }
  329. }
  330. // Call Zend_Service_WindowsAzure_QueueStorageTest::main() if this source file is executed directly.
  331. if (PHPUnit_MAIN_METHOD == "Zend_Service_WindowsAzure_QueueStorageTest::main") {
  332. Zend_Service_WindowsAzure_QueueStorageTest::main();
  333. }