/**
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::clearMessages
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createMessage
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::listMessages
  */
 private function createMessageWorker($messageText, $options)
 {
     self::println('Trying $options: ' . self::tmptostring($options));
     $queue = QueueServiceFunctionalTestData::$testQueueNames;
     $queue = $queue[0];
     $this->restProxy->clearMessages($queue);
     try {
         if (is_null($options)) {
             $this->restProxy->createMessage($queue, $messageText);
         } else {
             $this->restProxy->createMessage($queue, $messageText, $options);
         }
         if (is_null($options)) {
             $options = new CreateMessageOptions();
         }
         if (!is_null($options->getVisibilityTimeoutInSeconds()) && $options->getVisibilityTimeoutInSeconds() < 0) {
             $this->assertTrue(false, 'Expect negative getVisibilityTimeoutInSeconds in $options to throw');
         } else {
             if (!is_null($options->getTimeToLiveInSeconds()) && $options->getTimeToLiveInSeconds() <= 0) {
                 $this->assertTrue(false, 'Expect negative getVisibilityTimeoutInSeconds in $options to throw');
             } else {
                 if (!is_null($options->getVisibilityTimeoutInSeconds()) && !is_null($options->getTimeToLiveInSeconds()) && $options->getVisibilityTimeoutInSeconds() > 0 && $options->getTimeToLiveInSeconds() <= $options->getVisibilityTimeoutInSeconds()) {
                     $this->assertTrue(false, 'Expect getTimeToLiveInSeconds() <= getVisibilityTimeoutInSeconds in $options to throw');
                 } else {
                     if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
                         $this->assertTrue(false, 'Expect negative timeouts in $options to throw');
                     }
                 }
             }
         }
         // Check that the message matches
         $lmr = $this->restProxy->listMessages($queue);
         if (!is_null($options->getVisibilityTimeoutInSeconds()) && $options->getVisibilityTimeoutInSeconds() > 0) {
             $this->assertEquals(0, count($lmr->getQueueMessages()), 'getQueueMessages() count');
             sleep(QueueServiceFunctionalTestData::INTERESTING_TTL);
             // Try again, not that the 4 second visibility has passed
             $lmr = $this->restProxy->listMessages($queue);
             if ($options->getVisibilityTimeoutInSeconds() > QueueServiceFunctionalTestData::INTERESTING_TTL) {
                 $this->assertEquals(0, count($lmr->getQueueMessages()), 'getQueueMessages() count');
             } else {
                 $this->assertEquals(1, count($lmr->getQueueMessages()), 'getQueueMessages() count');
                 $qm = $lmr->getQueueMessages();
                 $qm = $qm[0];
                 $this->assertEquals($messageText, $qm->getMessageText(), '$qm->getMessageText');
             }
         } else {
             $this->assertEquals(1, count($lmr->getQueueMessages()), 'getQueueMessages() count');
             $qm = $lmr->getQueueMessages();
             $qm = $qm[0];
             $this->assertEquals($messageText, $qm->getMessageText(), '$qm->getMessageText');
         }
     } catch (ServiceException $e) {
         if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
             $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
         } else {
             if (!is_null($options->getVisibilityTimeoutInSeconds()) && $options->getVisibilityTimeoutInSeconds() < 0) {
                 // Trying to pass bad metadata
                 $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
             } else {
                 if (!is_null($options->getTimeToLiveInSeconds()) && $options->getTimeToLiveInSeconds() <= 0) {
                     $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
                 } else {
                     if (!is_null($options->getVisibilityTimeoutInSeconds()) && !is_null($options->getTimeToLiveInSeconds()) && $options->getVisibilityTimeoutInSeconds() > 0 && $options->getTimeToLiveInSeconds() <= $options->getVisibilityTimeoutInSeconds()) {
                         $this->assertEquals(TestResources::STATUS_BAD_REQUEST, $e->getCode(), 'getCode');
                     } else {
                         throw $e;
                     }
                 }
             }
         }
     }
     $this->restProxy->clearMessages($queue);
 }
Пример #2
0
 /**
  * Adds a message to the queue and optionally sets a visibility timeout 
  * for the message.
  * 
  * @param string               $queueName   The name of the queue.
  * @param string               $messageText The message contents.
  * @param CreateMessageOptions $options     The optional parameters.
  * 
  * @return none
  */
 public function createMessage($queueName, $messageText, $options = null)
 {
     Validate::isString($queueName, 'queueName');
     Validate::notNullOrEmpty($queueName, 'queueName');
     Validate::isString($messageText, 'messageText');
     $method = Resources::HTTP_POST;
     $headers = array();
     $postParams = array();
     $queryParams = array();
     $path = $queueName . '/messages';
     $body = Resources::EMPTY_STRING;
     $statusCode = Resources::STATUS_CREATED;
     $message = new QueueMessage();
     $message->setMessageText($messageText);
     $body = $message->toXml($this->dataSerializer);
     if (is_null($options)) {
         $options = new CreateMessageOptions();
     }
     $this->addOptionalHeader($headers, Resources::CONTENT_TYPE, Resources::URL_ENCODED_CONTENT_TYPE);
     $visibility = $options->getVisibilityTimeoutInSeconds();
     $timeToLive = $options->getTimeToLiveInSeconds();
     $timeout = $options->getTimeout();
     $this->addOptionalQueryParam($queryParams, Resources::QP_TIMEOUT, $timeout);
     $this->addOptionalQueryParam($queryParams, Resources::QP_VISIBILITY_TIMEOUT, $visibility);
     $this->addOptionalQueryParam($queryParams, Resources::QP_MESSAGE_TTL, $timeToLive);
     $this->send($method, $headers, $queryParams, $postParams, $path, $statusCode, $body);
 }
 /**
  * @covers WindowsAzure\Queue\Models\CreateMessageOptions::setTimeToLiveInSeconds
  */
 public function testSetTimeToLiveInSeconds()
 {
     // Setup
     $createMessageOptions = new CreateMessageOptions();
     $expected = 20;
     // Test
     $createMessageOptions->setTimeToLiveInSeconds($expected);
     // Assert
     $actual = $createMessageOptions->getTimeToLiveInSeconds();
     $this->assertEquals($expected, $actual);
 }
 public function testCheckCreateMessageOptions()
 {
     $options = new CreateMessageOptions();
     $this->assertNull($options->getTimeout(), 'Default CreateMessageOptions->getTimeout');
     $this->assertNull($options->getTimeToLiveInSeconds(), 'Default CreateMessageOptions->getTimeToLiveInSeconds');
     $this->assertNull($options->getVisibilityTimeoutInSeconds(), 'Default CreateMessageOptions->getVisibilityTimeoutInSeconds');
     $options->setTimeout(self::INT_MAX_VALUE);
     $options->setTimeToLiveInSeconds(0);
     $options->setVisibilityTimeoutInSeconds(self::INT_MIN_VALUE);
     $this->assertEquals(self::INT_MAX_VALUE, $options->getTimeout(), 'Set CreateMessageOptions->getTimeout');
     $this->assertEquals(0, $options->getTimeToLiveInSeconds(), 'Set CreateMessageOptions->getTimeToLiveInSeconds');
     $this->assertEquals(self::INT_MIN_VALUE, $options->getVisibilityTimeoutInSeconds(), 'Set CreateMessageOptions->getVisibilityTimeoutInSeconds');
 }
 public function testCheckCreateMessageOptions()
 {
     $options = new CreateMessageOptions();
     // TODO: Uncomment when fixed.
     // https://github.com/WindowsAzure/azure-sdk-for-php/issues/59
     // $this->assertNull($options->getTimeout(), 'Default CreateMessageOptions->getTimeout');
     $this->assertNull($options->getTimeToLiveInSeconds(), 'Default CreateMessageOptions->getTimeToLiveInSeconds');
     $this->assertNull($options->getVisibilityTimeoutInSeconds(), 'Default CreateMessageOptions->getVisibilityTimeoutInSeconds');
     // TODO: Uncomment when fixed.
     // https://github.com/WindowsAzure/azure-sdk-for-php/issues/59
     // $options->setTimeout(self::IntegerMAX_VALUE);
     $options->setTimeToLiveInSeconds(0);
     $options->setVisibilityTimeoutInSeconds(self::IntegerMIN_VALUE);
     // TODO: Uncomment when fixed.
     // https://github.com/WindowsAzure/azure-sdk-for-php/issues/59
     // $this->assertEquals(self::IntegerMAX_VALUE, $options->getTimeout(), 'Set CreateMessageOptions->getTimeout');
     $this->assertEquals(0, $options->getTimeToLiveInSeconds(), 'Set CreateMessageOptions->getTimeToLiveInSeconds');
     $this->assertEquals(self::IntegerMIN_VALUE, $options->getVisibilityTimeoutInSeconds(), 'Set CreateMessageOptions->getVisibilityTimeoutInSeconds');
 }