/**
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createQueue
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::deleteQueue
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::getQueueMetadata
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::setQueueMetadata
  */
 private function setQueueMetadataWorker($options, $metadata)
 {
     self::println('Trying $options: ' . self::tmptostring($options) . ' and $metadata: ' . self::tmptostring($metadata));
     $queue = QueueServiceFunctionalTestData::getInterestingQueueName();
     // Make sure there is something to test
     $this->restProxy->createQueue($queue);
     try {
         try {
             // And put in some metadata
             if (is_null($options)) {
                 $this->restProxy->setQueueMetadata($queue, $metadata);
             } else {
                 $this->restProxy->setQueueMetadata($queue, $metadata, $options);
             }
             if (is_null($options)) {
                 $options = new QueueServiceOptions();
             }
             if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
                 $this->assertTrue(false, 'Expect negative timeouts in $options to throw');
             }
             $res = $this->restProxy->getQueueMetadata($queue);
             $this->verifyGetSetQueueMetadataWorker($res, $metadata);
         } catch (\HTTP_Request2_LogicException $le) {
             $keypart = array_keys($metadata);
             $keypart = $keypart[0];
             if (!is_null($metadata) && count($metadata) > 0 && substr($keypart, 0, 1) == '<') {
                 // Trying to pass bad metadata
             } else {
                 throw $le;
             }
         }
     } catch (ServiceException $e) {
         if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
             $this->assertEquals(TestResources::STATUS_INTERNAL_SERVER_ERROR, $e->getCode(), 'getCode');
         } else {
             throw $e;
         }
     }
     // Clean up.
     $this->restProxy->deleteQueue($queue);
 }