PageRenderTime 46ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/codes-php/phpjakarta/tests/functional/WindowsAzure/Queue/QueueServiceFunctionalTest.php

http://bukuphpjs.codeplex.com
PHP | 1412 lines | 956 code | 160 blank | 296 comment | 224 complexity | c0b5935a149200cc4f84b37e8e070074 MD5 | raw file
Possible License(s): Apache-2.0, MIT, LGPL-2.1

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. /**
  3. * LICENSE: Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. * http://www.apache.org/licenses/LICENSE-2.0
  7. *
  8. * Unless required by applicable law or agreed to in writing, software
  9. * distributed under the License is distributed on an "AS IS" BASIS,
  10. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. * See the License for the specific language governing permissions and
  12. * limitations under the License.
  13. *
  14. * PHP version 5
  15. *
  16. * @category Microsoft
  17. * @package Tests\Functional\WindowsAzure\Queue
  18. * @author Azure PHP SDK <azurephpsdk@microsoft.com>
  19. * @copyright 2012 Microsoft Corporation
  20. * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
  21. * @link https://github.com/windowsazure/azure-sdk-for-php
  22. */
  23. namespace Tests\Functional\WindowsAzure\Queue;
  24. use Tests\Framework\TestResources;
  25. use WindowsAzure\Common\ServiceException;
  26. use WindowsAzure\Queue\Models\CreateMessageOptions;
  27. use WindowsAzure\Queue\Models\CreateQueueOptions;
  28. use WindowsAzure\Queue\Models\ListMessagesOptions;
  29. use WindowsAzure\Queue\Models\ListQueuesOptions;
  30. use WindowsAzure\Queue\Models\PeekMessagesOptions;
  31. use WindowsAzure\Queue\Models\QueueServiceOptions;
  32. class QueueServiceFunctionalTest extends FunctionalTestBase
  33. {
  34. /**
  35. * @covers WindowsAzure\Queue\QueueRestProxy::getServiceProperties
  36. * @covers WindowsAzure\Queue\QueueRestProxy::setServiceProperties
  37. */
  38. public function testGetServicePropertiesNoOptions()
  39. {
  40. $serviceProperties = QueueServiceFunctionalTestData::getDefaultServiceProperties();
  41. $shouldReturn = false;
  42. try {
  43. $this->restProxy->setServiceProperties($serviceProperties);
  44. $this->assertFalse($this->isEmulated(), 'Should succeed when not running in emulator');
  45. } catch (ServiceException $e) {
  46. // Expect failure in emulator, as v1.6 doesn't support this method
  47. if ($this->isEmulated()) {
  48. $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
  49. $shouldReturn = true;
  50. } else {
  51. throw $e;
  52. }
  53. }
  54. if($shouldReturn) {
  55. return;
  56. }
  57. $this->getServicePropertiesWorker(null);
  58. }
  59. /**
  60. * @covers WindowsAzure\Queue\QueueRestProxy::getServiceProperties
  61. * @covers WindowsAzure\Queue\QueueRestProxy::setServiceProperties
  62. */
  63. public function testGetServiceProperties()
  64. {
  65. $serviceProperties = QueueServiceFunctionalTestData::getDefaultServiceProperties();
  66. $shouldReturn = false;
  67. try {
  68. $this->restProxy->setServiceProperties($serviceProperties);
  69. $this->assertFalse($this->isEmulated(), 'Should succeed when not running in emulator');
  70. } catch (ServiceException $e) {
  71. // Expect failure in emulator, as v1.6 doesn't support this method
  72. if ($this->isEmulated()) {
  73. $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
  74. $shouldReturn = true;
  75. } else {
  76. throw $e;
  77. }
  78. }
  79. if($shouldReturn) {
  80. return;
  81. }
  82. // Now look at the combos.
  83. $interestingTimeouts = QueueServiceFunctionalTestData::getInterestingTimeoutValues();
  84. foreach($interestingTimeouts as $timeout) {
  85. $options = new QueueServiceOptions();
  86. $options->setTimeout($timeout);
  87. $this->getServicePropertiesWorker($options);
  88. }
  89. }
  90. /**
  91. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::getServiceProperties
  92. */
  93. private function getServicePropertiesWorker($options)
  94. {
  95. self::println( 'Trying $options: ' . self::tmptostring($options));
  96. $effOptions = (is_null($options) ? new QueueServiceOptions() : $options);
  97. try {
  98. $ret = (is_null($options) ? $this->restProxy->getServiceProperties() : $this->restProxy->getServiceProperties($effOptions));
  99. if (!is_null($effOptions->getTimeout()) && $effOptions->getTimeout() < 1) {
  100. $this->True('Expect negative timeouts in $options to throw', false);
  101. } else {
  102. $this->assertFalse($this->isEmulated(), 'Should succeed when not running in emulator');
  103. }
  104. $this->verifyServicePropertiesWorker($ret, null);
  105. } catch (ServiceException $e) {
  106. if ($this->isEmulated()) {
  107. if (!is_null($options->getTimeout()) && $options->getTimeout() < 0) {
  108. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  109. } else {
  110. // Expect failure in emulator, as v1.6 doesn't support this method
  111. $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
  112. }
  113. } else if (!is_null($effOptions->getTimeout()) && $effOptions->getTimeout() < 1) {
  114. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  115. } else {
  116. throw $e;
  117. }
  118. }
  119. }
  120. private function verifyServicePropertiesWorker($ret, $serviceProperties)
  121. {
  122. if (is_null($serviceProperties)) {
  123. $serviceProperties = QueueServiceFunctionalTestData::getDefaultServiceProperties();
  124. }
  125. $sp = $ret->getValue();
  126. $this->assertNotNull($sp, 'getValue should be non-null');
  127. $l = $sp->getLogging();
  128. $this->assertNotNull($l, 'getValue()->getLogging() should be non-null');
  129. $this->assertEquals($serviceProperties->getLogging()->getVersion(), $l->getVersion(), 'getValue()->getLogging()->getVersion');
  130. $this->assertEquals($serviceProperties->getLogging()->getDelete(), $l->getDelete(), 'getValue()->getLogging()->getDelete');
  131. $this->assertEquals($serviceProperties->getLogging()->getRead(), $l->getRead(), 'getValue()->getLogging()->getRead');
  132. $this->assertEquals($serviceProperties->getLogging()->getWrite(), $l->getWrite(), 'getValue()->getLogging()->getWrite');
  133. $r = $l->getRetentionPolicy();
  134. $this->assertNotNull($r, 'getValue()->getLogging()->getRetentionPolicy should be non-null');
  135. $this->assertEquals($serviceProperties->getLogging()->getRetentionPolicy()->getDays(), $r->getDays(), 'getValue()->getLogging()->getRetentionPolicy()->getDays');
  136. $m = $sp->getMetrics();
  137. $this->assertNotNull($m, 'getValue()->getMetrics() should be non-null');
  138. $this->assertEquals($serviceProperties->getMetrics()->getVersion(), $m->getVersion(), 'getValue()->getMetrics()->getVersion');
  139. $this->assertEquals($serviceProperties->getMetrics()->getEnabled(), $m->getEnabled(), 'getValue()->getMetrics()->getEnabled');
  140. $this->assertEquals($serviceProperties->getMetrics()->getIncludeAPIs(), $m->getIncludeAPIs(), 'getValue()->getMetrics()->getIncludeAPIs');
  141. $r = $m->getRetentionPolicy();
  142. $this->assertNotNull($r, 'getValue()->getMetrics()->getRetentionPolicy should be non-null');
  143. $this->assertEquals($serviceProperties->getMetrics()->getRetentionPolicy()->getDays(), $r->getDays(), 'getValue()->getMetrics()->getRetentionPolicy()->getDays');
  144. }
  145. /**
  146. * @covers WindowsAzure\Queue\QueueRestProxy::getServiceProperties
  147. * @covers WindowsAzure\Queue\QueueRestProxy::setServiceProperties
  148. */
  149. public function testSetServicePropertiesNoOptions()
  150. {
  151. $serviceProperties = QueueServiceFunctionalTestData::getDefaultServiceProperties();
  152. $this->setServicePropertiesWorker($serviceProperties, null);
  153. }
  154. /**
  155. * @covers WindowsAzure\Queue\QueueRestProxy::getServiceProperties
  156. * @covers WindowsAzure\Queue\QueueRestProxy::setServiceProperties
  157. */
  158. public function testSetServiceProperties()
  159. {
  160. $interestingServiceProperties = QueueServiceFunctionalTestData::getInterestingServiceProperties();
  161. foreach($interestingServiceProperties as $serviceProperties) {
  162. $interestingTimeouts = QueueServiceFunctionalTestData::getInterestingTimeoutValues();
  163. foreach($interestingTimeouts as $timeout) {
  164. $options = new QueueServiceOptions();
  165. $options->setTimeout($timeout);
  166. $this->setServicePropertiesWorker($serviceProperties, $options);
  167. }
  168. }
  169. if (!$this->isEmulated()) {
  170. $this->restProxy->setServiceProperties($interestingServiceProperties[0]);
  171. }
  172. }
  173. /**
  174. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::getServiceProperties
  175. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::setServiceProperties
  176. */
  177. private function setServicePropertiesWorker($serviceProperties, $options)
  178. {
  179. try {
  180. if (is_null($options)) {
  181. $this->restProxy->setServiceProperties($serviceProperties);
  182. } else {
  183. $this->restProxy->setServiceProperties($serviceProperties, $options);
  184. }
  185. if (is_null($options)) {
  186. $options = new QueueServiceOptions();
  187. }
  188. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  189. $this->assertTrue(false, 'Expect negative timeouts in $options to throw');
  190. } else {
  191. $this->assertFalse($this->isEmulated(), 'Should succeed when not running in emulator');
  192. }
  193. $ret = (is_null($options) ? $this->restProxy->getServiceProperties() : $this->restProxy->getServiceProperties($options));
  194. $this->verifyServicePropertiesWorker($ret, $serviceProperties);
  195. } catch (ServiceException $e) {
  196. if (is_null($options)) {
  197. $options = new QueueServiceOptions();
  198. }
  199. if ($this->isEmulated()) {
  200. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  201. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  202. } else {
  203. $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
  204. }
  205. } else {
  206. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  207. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  208. } else {
  209. throw $e;
  210. }
  211. }
  212. }
  213. }
  214. /**
  215. * @covers WindowsAzure\Queue\QueueRestProxy::listQueues
  216. */
  217. public function testListQueuesNoOptions()
  218. {
  219. $this->listQueuesWorker(null);
  220. }
  221. /**
  222. * @covers WindowsAzure\Queue\QueueRestProxy::listQueues
  223. */
  224. public function testListQueues()
  225. {
  226. $interestingListQueuesOptions = QueueServiceFunctionalTestData::getInterestingListQueuesOptions();
  227. foreach($interestingListQueuesOptions as $options) {
  228. $this->listQueuesWorker($options);
  229. }
  230. }
  231. /**
  232. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::listQueues
  233. */
  234. private function listQueuesWorker($options)
  235. {
  236. $finished = false;
  237. while (!$finished) {
  238. try {
  239. $ret = (is_null($options) ? $this->restProxy->listQueues() : $this->restProxy->listQueues($options));
  240. if (is_null($options)) {
  241. $options = new ListQueuesOptions();
  242. }
  243. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  244. $this->assertTrue(false, 'Expect negative timeouts ' . $options->getTimeout() . ' in $options to throw');
  245. }
  246. $this->verifyListQueuesWorker($ret, $options);
  247. if (strlen($ret->getNextMarker()) == 0) {
  248. self::println('Done with this loop');
  249. $finished = true;
  250. } else {
  251. self::println('Cycling to get the next marker: ' . $ret->getNextMarker());
  252. $options->setMarker($ret->getNextMarker());
  253. }
  254. } catch (ServiceException $e) {
  255. $finished = true;
  256. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  257. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  258. } else {
  259. throw $e;
  260. }
  261. }
  262. }
  263. }
  264. private function verifyListQueuesWorker($ret, $options)
  265. {
  266. // Uncomment when fixed
  267. // https://github.com/WindowsAzure/azure-sdk-for-php/issues/98
  268. //$this->assertEquals($accountName, $ret->getAccountName(), 'getAccountName');
  269. $this->assertEquals($options->getMarker(), $ret->getMarker(), 'getMarker');
  270. $this->assertEquals($options->getMaxResults(), $ret->getMaxResults(), 'getMaxResults');
  271. $this->assertEquals($options->getPrefix(), $ret->getPrefix(), 'getPrefix');
  272. $this->assertNotNull($ret->getQueues(), 'getQueues');
  273. if ($options->getMaxResults() == 0) {
  274. $this->assertNull($ret->getNextMarker(), 'When MaxResults is 0, expect getNextMarker (' . $ret->getNextMarker() . ')to be null');
  275. if (!is_null($options->getPrefix()) && $options->getPrefix() == QueueServiceFunctionalTestData::$nonExistQueuePrefix) {
  276. $this->assertEquals(0, count($ret->getQueues()), 'when MaxResults=0 and Prefix=(\'' . $options->getPrefix() . '\'), then Queues->length');
  277. } else if (!is_null($options->getPrefix()) && $options->getPrefix() == QueueServiceFunctionalTestData::$testUniqueId) {
  278. $this->assertEquals(count(QueueServiceFunctionalTestData::$testQueueNames), count($ret->getQueues()), 'when MaxResults=0 and Prefix=(\'' . $options->getPrefix() . '\'), then count Queues');
  279. } else {
  280. // Don't know how many there should be
  281. }
  282. } else if (strlen($ret->getNextMarker()) == 0) {
  283. $this->assertTrue(count($ret ->getQueues()) <= $options->getMaxResults(), 'when NextMarker (\'' . $ret->getNextMarker() . '\')==\'\', Queues->length (' . count($ret->getQueues()) . ') should be <= MaxResults (' . $options->getMaxResults() . ')');
  284. if (!is_null($options->getPrefix()) && $options->getPrefix() == QueueServiceFunctionalTestData::$nonExistQueuePrefix) {
  285. $this->assertEquals(0, count($ret->getQueues()), 'when no next marker and Prefix=(\'' . $options->getPrefix() . '\'), then Queues->length');
  286. } else if (!is_null($options->getPrefix()) && $options->getPrefix() == QueueServiceFunctionalTestData::$testUniqueId) {
  287. // Need to futz with the mod because you are allowed to get MaxResults items returned.
  288. $this->assertEquals(count(QueueServiceFunctionalTestData::$testQueueNames) % $options->getMaxResults(), count($ret ->getQueues()) % $options->getMaxResults(), 'when no next marker and Prefix=(\'' . $options->getPrefix() . '\'), then Queues->length');
  289. } else {
  290. // Don't know how many there should be
  291. }
  292. } else {
  293. $this->assertEquals(
  294. count($ret ->getQueues()),
  295. $options->getMaxResults(),
  296. 'when NextMarker (' . $ret->getNextMarker() .
  297. ')!=\'\', Queues->length (' . count($ret->getQueues()) .
  298. ') should be == MaxResults (' . $options->getMaxResults() . ')');
  299. if (!is_null($options->getPrefix()) && $options->getPrefix() == (QueueServiceFunctionalTestData::$nonExistQueuePrefix)) {
  300. $this->assertTrue(false, 'when a next marker and Prefix=(\'' . $options->getPrefix() . '\'), impossible');
  301. }
  302. }
  303. }
  304. /**
  305. * @covers WindowsAzure\Queue\QueueRestProxy::createQueue
  306. * @covers WindowsAzure\Queue\QueueRestProxy::deleteQueue
  307. * @covers WindowsAzure\Queue\QueueRestProxy::getQueueMetadata
  308. * @covers WindowsAzure\Queue\QueueRestProxy::listQueues
  309. */
  310. public function testCreateQueueNoOptions()
  311. {
  312. $this->createQueueWorker(null);
  313. }
  314. /**
  315. * @covers WindowsAzure\Queue\QueueRestProxy::createQueue
  316. * @covers WindowsAzure\Queue\QueueRestProxy::deleteQueue
  317. * @covers WindowsAzure\Queue\QueueRestProxy::getQueueMetadata
  318. * @covers WindowsAzure\Queue\QueueRestProxy::listQueues
  319. */
  320. public function testCreateQueue()
  321. {
  322. $interestingCreateQueueOptions = QueueServiceFunctionalTestData::getInterestingCreateQueueOptions();
  323. foreach($interestingCreateQueueOptions as $options) {
  324. $this->createQueueWorker($options);
  325. }
  326. }
  327. /**
  328. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createQueue
  329. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::deleteQueue
  330. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::getQueueMetadata
  331. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::listQueues
  332. */
  333. private function createQueueWorker($options)
  334. {
  335. self::println( 'Trying $options: ' . self::tmptostring($options));
  336. $queue = QueueServiceFunctionalTestData::getInterestingQueueName();
  337. $created = false;
  338. try {
  339. if (is_null($options)) {
  340. $this->restProxy->createQueue($queue);
  341. } else {
  342. // TODO: https://github.com/WindowsAzure/azure-sdk-for-php/issues/105
  343. $this->restProxy->createQueue($queue, $options);
  344. }
  345. $created = true;
  346. if (is_null($options)) {
  347. $options = new CreateQueueOptions();
  348. }
  349. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  350. $this->assertTrue(false, 'Expect negative timeouts in $options to throw');
  351. }
  352. // Now check that the queue was created correctly.
  353. // Make sure that the list of all applicable queues is correctly updated.
  354. $opts = new ListQueuesOptions();
  355. $opts->setPrefix(QueueServiceFunctionalTestData::$testUniqueId);
  356. $qs = $this->restProxy->listQueues($opts);
  357. $this->assertEquals(count($qs->getQueues()), (count(QueueServiceFunctionalTestData::$testQueueNames) + 1), 'After adding one, with Prefix=(\'' . QueueServiceFunctionalTestData::$testUniqueId . '\'), then Queues->length');
  358. // Check the metadata on the queue
  359. $ret = $this->restProxy->getQueueMetadata($queue);
  360. $this->verifyCreateQueueWorker($ret, $options);
  361. $this->restProxy->deleteQueue($queue);
  362. $created = false;
  363. } catch (ServiceException $e) {
  364. if (is_null($options)) {
  365. $options = new CreateQueueOptions();
  366. }
  367. if (!is_null($options->getTimeout()) && $options->getTimeout() <= 0) {
  368. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  369. } else {
  370. throw $e;
  371. }
  372. }
  373. if ($created) {
  374. $this->restProxy->deleteQueue($queue);
  375. }
  376. }
  377. private function verifyCreateQueueWorker($ret, $options)
  378. {
  379. self::println( 'Trying $options: ' . self::tmptostring($options) .
  380. ' and ret ' . self::tmptostring($ret));
  381. if (is_null($options)) {
  382. $options = QueueServiceFunctionalTestData::getInterestingCreateQueueOptions();
  383. $options = $options[0];
  384. }
  385. if (is_null($options->getMetadata())) {
  386. $this->assertNotNull($ret->getMetadata(), 'queue Metadata');
  387. $this->assertEquals(0, count($ret->getMetadata()), 'queue Metadata count');
  388. } else {
  389. $this->assertNotNull($ret->getMetadata(), 'queue Metadata');
  390. $this->assertEquals(count($options->getMetadata()), count($ret->getMetadata()), 'Metadata');
  391. $om = $options->getMetadata();
  392. $rm = $ret->getMetadata();
  393. foreach(array_keys($options->getMetadata()) as $key) {
  394. $this->assertEquals($om[$key], $rm[$key], 'Metadata(' . $key . ')');
  395. }
  396. }
  397. }
  398. /**
  399. * @covers WindowsAzure\Queue\QueueRestProxy::createQueue
  400. * @covers WindowsAzure\Queue\QueueRestProxy::deleteQueue
  401. * @covers WindowsAzure\Queue\QueueRestProxy::listQueues
  402. */
  403. public function testDeleteQueueNoOptions()
  404. {
  405. $this->deleteQueueWorker(null);
  406. }
  407. /**
  408. * @covers WindowsAzure\Queue\QueueRestProxy::createQueue
  409. * @covers WindowsAzure\Queue\QueueRestProxy::deleteQueue
  410. * @covers WindowsAzure\Queue\QueueRestProxy::listQueues
  411. */
  412. public function testDeleteQueue()
  413. {
  414. $interestingTimeouts = QueueServiceFunctionalTestData::getInterestingTimeoutValues();
  415. foreach($interestingTimeouts as $timeout) {
  416. $options = new QueueServiceOptions();
  417. $options->setTimeout($timeout);
  418. $this->deleteQueueWorker($options);
  419. }
  420. }
  421. /**
  422. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createQueue
  423. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::deleteQueue
  424. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::listQueues
  425. */
  426. private function deleteQueueWorker($options)
  427. {
  428. self::println( 'Trying $options: ' . self::tmptostring($options));
  429. $queue = QueueServiceFunctionalTestData::getInterestingQueueName();
  430. // Make sure there is something to delete.
  431. $this->restProxy->createQueue($queue);
  432. // Make sure that the list of all applicable queues is correctly updated.
  433. $opts = new ListQueuesOptions();
  434. $opts->setPrefix(QueueServiceFunctionalTestData::$testUniqueId);
  435. $qs = $this->restProxy->listQueues($opts);
  436. $this->assertEquals(count($qs->getQueues()), (count(QueueServiceFunctionalTestData::$testQueueNames) + 1), 'After adding one, with Prefix=(\'' . QueueServiceFunctionalTestData::$testUniqueId . '\'), then Queues->length');
  437. $deleted = false;
  438. try {
  439. if (is_null($options)) {
  440. $this->restProxy->deleteQueue($queue);
  441. } else {
  442. $this->restProxy->deleteQueue($queue, $options);
  443. }
  444. $deleted = true;
  445. if (is_null($options)) {
  446. $options = new QueueServiceOptions();
  447. }
  448. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  449. $this->assertTrue(false, 'Expect negative timeouts in $options to throw');
  450. }
  451. // Make sure that the list of all applicable queues is correctly updated.
  452. $opts = new ListQueuesOptions();
  453. $opts->setPrefix(QueueServiceFunctionalTestData::$testUniqueId);
  454. $qs = $this->restProxy->listQueues($opts);
  455. $this->assertEquals(count($qs->getQueues()), count(QueueServiceFunctionalTestData::$testQueueNames), 'After adding then deleting one, with Prefix=(\'' . QueueServiceFunctionalTestData::$testUniqueId . '\'), then Queues->length');
  456. // Nothing else interesting to check for the options.
  457. } catch (ServiceException $e) {
  458. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  459. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  460. } else {
  461. throw $e;
  462. }
  463. }
  464. if (!$deleted) {
  465. // Try again. If it doesn't work, not much else to try.
  466. $this->restProxy->deleteQueue($queue);
  467. }
  468. }
  469. // TODO: Negative tests, like accessing a non-existant queue, or recreating an existing queue?
  470. /**
  471. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  472. * @covers WindowsAzure\Queue\QueueRestProxy::createQueue
  473. * @covers WindowsAzure\Queue\QueueRestProxy::deleteQueue
  474. * @covers WindowsAzure\Queue\QueueRestProxy::getQueueMetadata
  475. * @covers WindowsAzure\Queue\QueueRestProxy::setQueueMetadata
  476. */
  477. public function testGetQueueMetadataNoOptions()
  478. {
  479. $interestingMetadata = QueueServiceFunctionalTestData::getNiceMetadata();
  480. foreach ($interestingMetadata as $metadata) {
  481. $this->getQueueMetadataWorker(null, $metadata);
  482. }
  483. }
  484. /**
  485. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  486. * @covers WindowsAzure\Queue\QueueRestProxy::createQueue
  487. * @covers WindowsAzure\Queue\QueueRestProxy::deleteQueue
  488. * @covers WindowsAzure\Queue\QueueRestProxy::getQueueMetadata
  489. * @covers WindowsAzure\Queue\QueueRestProxy::setQueueMetadata
  490. */
  491. public function testGetQueueMetadata()
  492. {
  493. $interestingTimeouts = QueueServiceFunctionalTestData::getInterestingTimeoutValues();
  494. $interestingMetadata = QueueServiceFunctionalTestData::getNiceMetadata();
  495. foreach($interestingTimeouts as $timeout) {
  496. foreach ($interestingMetadata as $metadata) {
  497. $options = new QueueServiceOptions();
  498. $options->setTimeout($timeout);
  499. $this->getQueueMetadataWorker($options, $metadata);
  500. }
  501. }
  502. }
  503. /**
  504. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createMessage
  505. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createQueue
  506. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::deleteQueue
  507. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::getQueueMetadata
  508. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::setQueueMetadata
  509. */
  510. private function getQueueMetadataWorker($options, $metadata)
  511. {
  512. self::println( 'Trying $options: ' . self::tmptostring($options) .
  513. ' and $metadata: ' . self::tmptostring($metadata));
  514. $queue = QueueServiceFunctionalTestData::getInterestingQueueName();
  515. // Make sure there is something to test
  516. $this->restProxy->createQueue($queue);
  517. // Put some messages to verify getApproximateMessageCount
  518. if (!is_null($metadata)) {
  519. for ($i = 0; $i < count($metadata); $i++) {
  520. $this->restProxy->createMessage($queue, 'message ' . $i);
  521. }
  522. // And put in some metadata
  523. $this->restProxy->setQueueMetadata($queue, $metadata);
  524. }
  525. try {
  526. $res = (is_null($options) ? $this->restProxy->getQueueMetadata($queue) : $this->restProxy->getQueueMetadata( $queue, $options));
  527. if (is_null($options)) {
  528. $options = new QueueServiceOptions();
  529. }
  530. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  531. $this->assertTrue(false, 'Expect negative timeouts in $options to throw');
  532. }
  533. $this->verifyGetSetQueueMetadataWorker($res, $metadata);
  534. } catch (ServiceException $e) {
  535. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  536. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  537. } else {
  538. throw $e;
  539. }
  540. }
  541. // Clean up->
  542. $this->restProxy->deleteQueue($queue);
  543. }
  544. private function verifyGetSetQueueMetadataWorker($ret, $metadata)
  545. {
  546. $this->assertNotNull($ret->getMetadata(), 'queue Metadata');
  547. if (is_null($metadata)) {
  548. $this->assertEquals(0, count($ret->getMetadata()), 'Metadata');
  549. $this->assertEquals(0, $ret->getApproximateMessageCount(), 'getApproximateMessageCount');
  550. } else {
  551. $this->assertEquals(count($metadata), count($ret->getMetadata()), 'Metadata');
  552. $rm =$ret->getMetadata();
  553. foreach(array_keys($metadata) as $key) {
  554. $this->assertEquals($metadata[$key], $rm[$key], 'Metadata(' . $key . ')');
  555. }
  556. // Hard to test "approximate", so just verify that it is in the expected range
  557. $this->assertTrue(
  558. (0 <= $ret->getApproximateMessageCount()) && ($ret->getApproximateMessageCount() <= count($metadata)),
  559. '0 <= getApproximateMessageCount (' . $ret->getApproximateMessageCount() . ') <= $metadata count (' . count($metadata) . ')');
  560. }
  561. }
  562. /**
  563. * @covers WindowsAzure\Queue\QueueRestProxy::createQueue
  564. * @covers WindowsAzure\Queue\QueueRestProxy::deleteQueue
  565. * @covers WindowsAzure\Queue\QueueRestProxy::getQueueMetadata
  566. * @covers WindowsAzure\Queue\QueueRestProxy::setQueueMetadata
  567. */
  568. public function testSetQueueMetadataNoOptions()
  569. {
  570. $interestingMetadata = QueueServiceFunctionalTestData::getInterestingMetadata();
  571. foreach ($interestingMetadata as $metadata) {
  572. if (is_null($metadata)) {
  573. // This is tested above.
  574. continue;
  575. }
  576. $this->setQueueMetadataWorker(null, $metadata);
  577. }
  578. }
  579. /**
  580. * @covers WindowsAzure\Queue\QueueRestProxy::createQueue
  581. * @covers WindowsAzure\Queue\QueueRestProxy::deleteQueue
  582. * @covers WindowsAzure\Queue\QueueRestProxy::getQueueMetadata
  583. * @covers WindowsAzure\Queue\QueueRestProxy::setQueueMetadata
  584. */
  585. public function testSetQueueMetadata()
  586. {
  587. $interestingTimeouts = QueueServiceFunctionalTestData::getInterestingTimeoutValues();
  588. $interestingMetadata = QueueServiceFunctionalTestData::getInterestingMetadata();
  589. foreach($interestingTimeouts as $timeout) {
  590. foreach ($interestingMetadata as $metadata) {
  591. if (is_null($metadata)) {
  592. // This is tested above.
  593. continue;
  594. }
  595. $options = new QueueServiceOptions();
  596. $options->setTimeout($timeout);
  597. $this->setQueueMetadataWorker($options, $metadata);
  598. }
  599. }
  600. }
  601. /**
  602. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createQueue
  603. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::deleteQueue
  604. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::getQueueMetadata
  605. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::setQueueMetadata
  606. */
  607. private function setQueueMetadataWorker($options, $metadata)
  608. {
  609. self::println( 'Trying $options: ' . self::tmptostring($options) .
  610. ' and $metadata: ' . self::tmptostring($metadata));
  611. $queue = QueueServiceFunctionalTestData::getInterestingQueueName();
  612. // Make sure there is something to test
  613. $this->restProxy->createQueue($queue);
  614. try {
  615. try {
  616. // And put in some metadata
  617. if (is_null($options)) {
  618. $this->restProxy->setQueueMetadata($queue, $metadata);
  619. } else {
  620. $this->restProxy->setQueueMetadata($queue, $metadata, $options);
  621. }
  622. if (is_null($options)) {
  623. $options = new QueueServiceOptions();
  624. }
  625. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  626. $this->assertTrue(false, 'Expect negative timeouts in $options to throw');
  627. }
  628. $res = $this->restProxy->getQueueMetadata($queue);
  629. $this->verifyGetSetQueueMetadataWorker($res, $metadata);
  630. } catch (\HTTP_Request2_LogicException $le) {
  631. $keypart = array_keys($metadata);
  632. $keypart = $keypart[0];
  633. if (!is_null($metadata) && count($metadata) > 0 && (substr($keypart, 0, 1) == '<')) {
  634. // Trying to pass bad metadata
  635. } else {
  636. throw $le;
  637. }
  638. }
  639. } catch (ServiceException $e) {
  640. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  641. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  642. } else {
  643. throw $e;
  644. }
  645. }
  646. // Clean up.
  647. $this->restProxy->deleteQueue($queue);
  648. }
  649. /**
  650. * @covers WindowsAzure\Queue\QueueRestProxy::clearMessages
  651. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  652. * @covers WindowsAzure\Queue\QueueRestProxy::listMessages
  653. */
  654. public function testCreateMessageEmpty()
  655. {
  656. $this->createMessageWorker('', QueueServiceFunctionalTestData::getSimpleCreateMessageOptions());
  657. }
  658. /**
  659. * @covers WindowsAzure\Queue\QueueRestProxy::clearMessages
  660. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  661. * @covers WindowsAzure\Queue\QueueRestProxy::listMessages
  662. */
  663. public function testCreateMessageUnicodeMessage()
  664. {
  665. $this->createMessageWorker('Some unicode: ' .
  666. chr(0xEB) . chr(0x8B) . chr(0xA4) . // \uB2E4 in UTF-8
  667. chr(0xEB) . chr(0xA5) . chr(0xB4) . // \uB974 in UTF-8
  668. chr(0xEB) . chr(0x8B) . chr(0xA4) . // \uB2E4 in UTF-8
  669. chr(0xEB) . chr(0x8A) . chr(0x94) . // \uB294 in UTF-8
  670. chr(0xD8) . chr(0xA5) . // \u0625 in UTF-8
  671. ' ' .
  672. chr(0xD9) . chr(0x8A) . // \u064A in UTF-8
  673. chr(0xD8) . chr(0xAF) . // \u062F in UTF-8
  674. chr(0xD9) . chr(0x8A) . // \u064A in UTF-8
  675. chr(0xD9) . chr(0x88), // \u0648 in UTF-8
  676. QueueServiceFunctionalTestData::getSimpleCreateMessageOptions());
  677. }
  678. /**
  679. * @covers WindowsAzure\Queue\QueueRestProxy::clearMessages
  680. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  681. * @covers WindowsAzure\Queue\QueueRestProxy::listMessages
  682. */
  683. public function testCreateMessageXmlMessage()
  684. {
  685. $this->createMessageWorker('Some HTML: <this><is></a>', QueueServiceFunctionalTestData::getSimpleCreateMessageOptions());
  686. }
  687. /**
  688. * @covers WindowsAzure\Queue\QueueRestProxy::clearMessages
  689. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  690. * @covers WindowsAzure\Queue\QueueRestProxy::listMessages
  691. */
  692. public function testCreateMessageWithSmallTTL()
  693. {
  694. $queue = QueueServiceFunctionalTestData::$testQueueNames;
  695. $queue = $queue[0];
  696. $this->restProxy->clearMessages($queue);
  697. $messageText = QueueServiceFunctionalTestData::getSimpleMessageText();
  698. $options = new CreateMessageOptions();
  699. $options->setVisibilityTimeoutInSeconds(2);
  700. $options->setTimeToLiveInSeconds('4');
  701. $this->restProxy->createMessage($queue, $messageText, $options);
  702. $lmr = $this->restProxy->listMessages($queue);
  703. // No messages, because it is not visible for 2 seconds.
  704. $this->assertEquals(0, count($lmr->getQueueMessages()), 'getQueueMessages() count');
  705. sleep(6);
  706. // Try again, passed the VisibilityTimeout has passed, but also the 4 second TTL has passed.
  707. $lmr = $this->restProxy->listMessages($queue);
  708. $this->assertEquals(0, count($lmr->getQueueMessages()), 'getQueueMessages() count');
  709. $this->restProxy->clearMessages($queue);
  710. }
  711. /**
  712. * @covers WindowsAzure\Queue\QueueRestProxy::clearMessages
  713. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  714. * @covers WindowsAzure\Queue\QueueRestProxy::listMessages
  715. */
  716. public function testCreateMessage()
  717. {
  718. $interestingTimes = array( null, -1, 0, QueueServiceFunctionalTestData::INTERESTING_TTL, 1000 );
  719. foreach($interestingTimes as $timeToLiveInSeconds) {
  720. foreach($interestingTimes as $visibilityTimeoutInSeconds) {
  721. $timeout = null;
  722. $options = new CreateMessageOptions();
  723. $options->setTimeout($timeout);
  724. $options->setTimeToLiveInSeconds($timeToLiveInSeconds);
  725. $options->setVisibilityTimeoutInSeconds($visibilityTimeoutInSeconds . '');
  726. $this->createMessageWorker(QueueServiceFunctionalTestData::getSimpleMessageText(), $options);
  727. }
  728. }
  729. foreach($interestingTimes as $timeout) {
  730. $timeToLiveInSeconds = 1000;
  731. $visibilityTimeoutInSeconds = QueueServiceFunctionalTestData::INTERESTING_TTL;
  732. $options = new CreateMessageOptions();
  733. $options->setTimeout($timeout);
  734. $options->setTimeToLiveInSeconds($timeToLiveInSeconds . '');
  735. $options->setVisibilityTimeoutInSeconds($visibilityTimeoutInSeconds);
  736. $this->createMessageWorker(QueueServiceFunctionalTestData::getSimpleMessageText(), $options);
  737. }
  738. }
  739. /**
  740. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::clearMessages
  741. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createMessage
  742. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::listMessages
  743. */
  744. private function createMessageWorker($messageText, $options)
  745. {
  746. self::println( 'Trying $options: ' . self::tmptostring($options));
  747. $queue = QueueServiceFunctionalTestData::$testQueueNames;
  748. $queue = $queue[0];
  749. $this->restProxy->clearMessages($queue);
  750. try {
  751. if (is_null($options)) {
  752. $this->restProxy->createMessage($queue, $messageText);
  753. } else {
  754. $this->restProxy->createMessage($queue, $messageText, $options);
  755. }
  756. if (is_null($options)) {
  757. $options = new CreateMessageOptions();
  758. }
  759. if (!is_null($options->getVisibilityTimeoutInSeconds()) && $options->getVisibilityTimeoutInSeconds() < 0) {
  760. $this->assertTrue(false, 'Expect negative getVisibilityTimeoutInSeconds in $options to throw');
  761. } else if (!is_null($options->getTimeToLiveInSeconds()) && $options->getTimeToLiveInSeconds() <= 0) {
  762. $this->assertTrue(false, 'Expect negative getVisibilityTimeoutInSeconds in $options to throw');
  763. } else if (!is_null($options->getVisibilityTimeoutInSeconds()) &&
  764. !is_null($options->getTimeToLiveInSeconds()) &&
  765. $options->getVisibilityTimeoutInSeconds() > 0 &&
  766. $options->getTimeToLiveInSeconds() <= $options->getVisibilityTimeoutInSeconds()) {
  767. $this->assertTrue(false, 'Expect getTimeToLiveInSeconds() <= getVisibilityTimeoutInSeconds in $options to throw');
  768. } else if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  769. $this->assertTrue(false, 'Expect negative timeouts in $options to throw');
  770. }
  771. // Check that the message matches
  772. $lmr = $this->restProxy->listMessages($queue);
  773. if (!is_null($options->getVisibilityTimeoutInSeconds()) && $options->getVisibilityTimeoutInSeconds() > 0) {
  774. $this->assertEquals(0, count($lmr->getQueueMessages()), 'getQueueMessages() count');
  775. sleep(QueueServiceFunctionalTestData::INTERESTING_TTL);
  776. // Try again, not that the 4 second visibility has passed
  777. $lmr = $this->restProxy->listMessages($queue);
  778. if ($options->getVisibilityTimeoutInSeconds() > QueueServiceFunctionalTestData::INTERESTING_TTL) {
  779. $this->assertEquals(0, count($lmr->getQueueMessages()), 'getQueueMessages() count');
  780. } else {
  781. $this->assertEquals(1, count($lmr->getQueueMessages()), 'getQueueMessages() count');
  782. $qm = $lmr->getQueueMessages();
  783. $qm = $qm[0];
  784. $this->assertEquals($messageText, $qm->getMessageText(), '$qm->getMessageText');
  785. }
  786. } else {
  787. $this->assertEquals(1, count($lmr->getQueueMessages()), 'getQueueMessages() count');
  788. $qm = $lmr->getQueueMessages();
  789. $qm = $qm[0];
  790. $this->assertEquals($messageText, $qm->getMessageText(), '$qm->getMessageText');
  791. }
  792. } catch (ServiceException $e) {
  793. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  794. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  795. } else if (!is_null($options->getVisibilityTimeoutInSeconds()) && $options->getVisibilityTimeoutInSeconds() < 0) {
  796. // Trying to pass bad metadata
  797. $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
  798. } else if (!is_null($options->getTimeToLiveInSeconds()) && $options->getTimeToLiveInSeconds() <= 0) {
  799. $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
  800. } else if (!is_null($options->getVisibilityTimeoutInSeconds()) && !is_null($options->getTimeToLiveInSeconds()) && $options->getVisibilityTimeoutInSeconds() > 0 && $options->getTimeToLiveInSeconds() <= $options->getVisibilityTimeoutInSeconds()) {
  801. $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
  802. } else {
  803. throw $e;
  804. }
  805. }
  806. $this->restProxy->clearMessages($queue);
  807. }
  808. /**
  809. * @covers WindowsAzure\Queue\QueueRestProxy::clearMessages
  810. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  811. * @covers WindowsAzure\Queue\QueueRestProxy::listMessages
  812. * @covers WindowsAzure\Queue\QueueRestProxy::updateMessage
  813. */
  814. public function testUpdateMessageNoOptions()
  815. {
  816. $interestingVisibilityTimes = array(-1, 0, QueueServiceFunctionalTestData::INTERESTING_TTL, QueueServiceFunctionalTestData::INTERESTING_TTL * 2);
  817. $startingMessage = new CreateMessageOptions();
  818. $startingMessage->setTimeout(QueueServiceFunctionalTestData::INTERESTING_TTL);
  819. $startingMessage->setTimeToLiveInSeconds(QueueServiceFunctionalTestData::INTERESTING_TTL * 1.5);
  820. foreach($interestingVisibilityTimes as $visibilityTimeoutInSeconds) {
  821. $this->updateMessageWorker(QueueServiceFunctionalTestData::getSimpleMessageText(), $startingMessage, $visibilityTimeoutInSeconds, null);
  822. }
  823. }
  824. /**
  825. * @covers WindowsAzure\Queue\QueueRestProxy::clearMessages
  826. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  827. * @covers WindowsAzure\Queue\QueueRestProxy::listMessages
  828. * @covers WindowsAzure\Queue\QueueRestProxy::updateMessage
  829. */
  830. public function testUpdateMessage()
  831. {
  832. $interestingTimes = array(null, -1, 0, QueueServiceFunctionalTestData::INTERESTING_TTL, 1000);
  833. $interestingVisibilityTimes = array(-1, 0, QueueServiceFunctionalTestData::INTERESTING_TTL, QueueServiceFunctionalTestData::INTERESTING_TTL * 2);
  834. $startingMessage = new CreateMessageOptions();
  835. $startingMessage->setTimeout( QueueServiceFunctionalTestData::INTERESTING_TTL);
  836. $startingMessage->setTimeToLiveInSeconds(QueueServiceFunctionalTestData::INTERESTING_TTL * 1.5);
  837. foreach($interestingTimes as $timeout) {
  838. foreach($interestingVisibilityTimes as $visibilityTimeoutInSeconds) {
  839. $options = new QueueServiceOptions();
  840. $options->setTimeout($timeout);
  841. $this->updateMessageWorker(QueueServiceFunctionalTestData::getSimpleMessageText(), $startingMessage, $visibilityTimeoutInSeconds, $options);
  842. }
  843. }
  844. }
  845. /**
  846. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::clearMessages
  847. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createMessage
  848. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::listMessages
  849. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::updateMessage
  850. */
  851. private function updateMessageWorker($messageText, $startingMessage, $visibilityTimeoutInSeconds, $options)
  852. {
  853. self::println( 'Trying $options: ' . self::tmptostring($options) .
  854. ' and $visibilityTimeoutInSeconds: ' . self::tmptostring($visibilityTimeoutInSeconds));
  855. $queue = QueueServiceFunctionalTestData::$testQueueNames;
  856. $queue = $queue[0];
  857. $this->restProxy->clearMessages($queue);
  858. $this->restProxy->createMessage($queue, QueueServiceFunctionalTestData::getSimpleMessageText(), $startingMessage);
  859. $lmr = $this->restProxy->listMessages($queue);
  860. $m = $lmr->getQueueMessages();
  861. $m = $m[0];
  862. try {
  863. if (is_null($options)) {
  864. $this->restProxy->updateMessage($queue, $m->getMessageId(), $m->getPopReceipt(), $messageText, $visibilityTimeoutInSeconds);
  865. } else {
  866. $this->restProxy->updateMessage($queue, $m->getMessageId(), $m->getPopReceipt(), $messageText, $visibilityTimeoutInSeconds, $options);
  867. }
  868. if (is_null($options)) {
  869. $options = new CreateMessageOptions();
  870. }
  871. if ($visibilityTimeoutInSeconds < 0) {
  872. $this->assertTrue(false, 'Expect negative getVisibilityTimeoutInSeconds in $options to throw');
  873. } else if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  874. $this->assertTrue(false, 'Expect negative timeouts in $options to throw');
  875. }
  876. // Check that the message matches
  877. $lmr = $this->restProxy->listMessages($queue);
  878. if ($visibilityTimeoutInSeconds > 0) {
  879. $this->assertEquals(0, count($lmr->getQueueMessages()), 'getQueueMessages() count');
  880. sleep(QueueServiceFunctionalTestData::INTERESTING_TTL);
  881. // Try again, not that the 4 second visibility has passed
  882. $lmr = $this->restProxy->listMessages($queue);
  883. if ($visibilityTimeoutInSeconds > QueueServiceFunctionalTestData::INTERESTING_TTL) {
  884. $this->assertEquals(0, count($lmr->getQueueMessages()), 'getQueueMessages() count');
  885. } else {
  886. $this->assertEquals(1, count($lmr->getQueueMessages()), 'getQueueMessages() count');
  887. $qm = $lmr->getQueueMessages();
  888. $qm = $qm[0];
  889. $this->assertEquals($messageText, $qm->getMessageText(), '$qm->getMessageText');
  890. }
  891. } else {
  892. $this->assertEquals(1, count($lmr->getQueueMessages()), 'getQueueMessages() count');
  893. $qm = $lmr->getQueueMessages();
  894. $qm = $qm[0];
  895. $this->assertEquals($messageText, $qm->getMessageText(), '$qm->getMessageText');
  896. }
  897. } catch (ServiceException $e) {
  898. if (is_null($options)) {
  899. $options = new CreateMessageOptions();
  900. }
  901. if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
  902. $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
  903. } else if ($visibilityTimeoutInSeconds < 0) {
  904. // Trying to pass bad metadata
  905. $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
  906. } else {
  907. throw $e;
  908. }
  909. }
  910. $this->restProxy->clearMessages($queue);
  911. }
  912. /**
  913. * @covers WindowsAzure\Queue\QueueRestProxy::clearMessages
  914. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  915. * @covers WindowsAzure\Queue\QueueRestProxy::deleteMessage
  916. * @covers WindowsAzure\Queue\QueueRestProxy::listMessages
  917. */
  918. public function testDeleteMessageNoOptions()
  919. {
  920. $this->deleteMessageWorker(null);
  921. }
  922. /**
  923. * @covers WindowsAzure\Queue\QueueRestProxy::clearMessages
  924. * @covers WindowsAzure\Queue\QueueRestProxy::createMessage
  925. * @covers WindowsAzure\Queue\QueueRestProxy::deleteMessage
  926. * @covers WindowsAzure\Queue\QueueRestProxy::listMessages
  927. */
  928. public function testDeleteMessage()
  929. {
  930. $interestingTimes = array(null, -1, 0, QueueServiceFunctionalTestData::INTERESTING_TTL, 1000);
  931. foreach($interestingTimes as $timeout) {
  932. $options = new QueueServiceOptions();
  933. $options->setTimeout($timeout);
  934. $this->deleteMessageWorker($options);
  935. }
  936. }
  937. /**
  938. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::clearMessages
  939. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createMessage
  940. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::deleteMessage
  941. * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::listMessages
  942. */
  943. private function deleteMessageWorker($options)
  944. {
  945. self::pri

Large files files are truncated, but you can click here to view the full file