/** * @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); }
/** * 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'); }