123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540 |
- <?php
- require_once(dirname(dirname(__FILE__)).'/mns-autoloader.php');
- use AliyunMNS\Client;
- use AliyunMNS\Constants;
- use AliyunMNS\AsyncCallback;
- use AliyunMNS\Model\QueueAttributes;
- use AliyunMNS\Model\TopicAttributes;
- use AliyunMNS\Model\AccountAttributes;
- use AliyunMNS\Exception\MnsException;
- use AliyunMNS\Requests\CreateQueueRequest;
- use AliyunMNS\Requests\CreateTopicRequest;
- use AliyunMNS\Requests\ListQueueRequest;
- use AliyunMNS\Requests\ListTopicRequest;
- use AliyunMNS\Requests\SetAccountAttributesRequest;
- use AliyunMNS\Requests\GetAccountAttributesRequest;
- class ClientTest extends \PHPUnit_Framework_TestCase
- {
- private $accessId;
- private $accessKey;
- private $endPoint;
- private $client;
- private $queueToDelete;
- private $topicToDelete;
- public function setUp()
- {
- $ini_array = parse_ini_file(__DIR__ . "/aliyun-mns.ini");
- $this->endPoint = $ini_array["endpoint"];
- $this->accessId = $ini_array["accessid"];
- $this->accessKey = $ini_array["accesskey"];
- $this->queueToDelete = array();
- $this->topicToDelete = array();
- $this->client = new Client($this->endPoint, $this->accessId, $this->accessKey);
- }
- public function tearDown()
- {
- foreach ($this->queueToDelete as $queueName)
- {
- try {
- $this->client->deleteQueue($queueName);
- } catch (\Exception $e) {
- }
- }
- foreach ($this->topicToDelete as $topicName)
- {
- try {
- $this->client->deleteTopic($topicName);
- } catch (\Exception $e) {
- }
- }
- }
- public function testAccountAttributes()
- {
- try
- {
- $attributes = new AccountAttributes;
- $attributes->setLoggingBucket("Test");
- $this->client->setAccountAttributes($attributes);
- $res = $this->client->getAccountAttributes();
- $this->assertTrue($res->isSucceed());
- $this->assertEquals("Test", $res->getAccountAttributes()->getLoggingBucket());
- $attributes = new AccountAttributes;
- $this->client->setAccountAttributes($attributes);
- $res = $this->client->getAccountAttributes();
- $this->assertTrue($res->isSucceed());
- $this->assertEquals("Test", $res->getAccountAttributes()->getLoggingBucket());
- $attributes = new AccountAttributes;
- $attributes->setLoggingBucket("");
- $this->client->setAccountAttributes($attributes);
- $res = $this->client->getAccountAttributes();
- $this->assertTrue($res->isSucceed());
- $this->assertEquals("", $res->getAccountAttributes()->getLoggingBucket());
- }
- catch (MnsException $e)
- {
- $this->assertEquals($e->getMnsErrorCode(), Constants::INVALID_ARGUMENT);
- }
- }
- public function testCreateQueueAsync()
- {
- $queueName = "testCreateQueueAsync";
- $request = new CreateQueueRequest($queueName);
- $this->queueToDelete[] = $queueName;
- // Async Call with callback
- try
- {
- $res = $this->client->createQueueAsync($request,
- new AsyncCallback(
- function($response) {
- $this->assertTrue($response->isSucceed());
- },
- function($e) {
- $this->assertTrue(FALSE, $e);
- }
- )
- );
- $res = $res->wait();
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- // Async call without callback
- try
- {
- $res = $this->client->createQueueAsync($request);
- $res = $res->wait();
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- }
- public function testCreateQueueSync()
- {
- $queueName = "testCreateQueueSync";
- // 1. create queue with InvalidArgument
- $attributes = new QueueAttributes;
- $attributes->setPollingWaitSeconds(60);
- $request = new CreateQueueRequest($queueName, $attributes);
- try
- {
- $res = $this->client->createQueue($request);
- $this->assertTrue(FALSE, "Should throw InvalidArgumentException");
- }
- catch (MnsException $e)
- {
- $this->assertEquals($e->getMnsErrorCode(), Constants::INVALID_ARGUMENT);
- }
- // 2. create queue
- $request = new CreateQueueRequest($queueName);
- $this->queueToDelete[] = $queueName;
- try
- {
- $res = $this->client->createQueue($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- // 3. create queue with same attributes
- $request = new CreateQueueRequest($queueName);
- $this->queueToDelete[] = $queueName;
- try
- {
- $res = $this->client->createQueue($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- // 4. create same queue with different attributes
- $attributes = new QueueAttributes;
- $attributes->setPollingWaitSeconds(20);
- $request = new CreateQueueRequest($queueName, $attributes);
- try
- {
- $res = $this->client->createQueue($request);
- $this->assertTrue(FALSE, "Should throw QueueAlreadyExistException");
- }
- catch (MnsException $e)
- {
- $this->assertEquals($e->getMnsErrorCode(), Constants::QUEUE_ALREADY_EXIST);
- }
- }
- public function testListQueue()
- {
- $queueNamePrefix = uniqid();
- $queueName1 = $queueNamePrefix . "testListQueue1";
- $queueName2 = $queueNamePrefix . "testListQueue2";
- // 1. create queue
- $request = new CreateQueueRequest($queueName1);
- $this->queueToDelete[] = $queueName1;
- try
- {
- $res = $this->client->createQueue($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- $request = new CreateQueueRequest($queueName2);
- $this->queueToDelete[] = $queueName2;
- try
- {
- $res = $this->client->createQueue($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- // 2. list queue
- $queueName1Found = FALSE;
- $queueName2Found = FALSE;
- $count = 0;
- $request = new ListQueueRequest(1, $queueNamePrefix);
- while ($count < 2) {
- try
- {
- $res = $this->client->listQueue($request);
- $this->assertTrue($res->isSucceed());
- $queueNames = $res->getQueueNames();
- foreach ($queueNames as $queueName) {
- if ($queueName == $queueName1) {
- $queueName1Found = TRUE;
- } elseif ($queueName == $queueName2) {
- $queueName2Found = TRUE;
- } else {
- $this->assertTrue(FALSE, $queueName . " Should not be here.");
- }
- }
- if ($count > 0) {
- $this->assertTrue($res->isFinished(), implode(", ", $queueNames));
- }
- $request->setMarker($res->getNextMarker());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- $count += 1;
- }
- $this->assertTrue($queueName1Found, $queueName1 . " Not Found!");
- $this->assertTrue($queueName2Found, $queueName2 . " Not Found!");
- }
- public function testListQueueAsync()
- {
- $queueNamePrefix = uniqid();
- $queueName1 = $queueNamePrefix . "testListQueue1";
- $queueName2 = $queueNamePrefix . "testListQueue2";
- // 1. create queue
- $request = new CreateQueueRequest($queueName1);
- $this->queueToDelete[] = $queueName1;
- try
- {
- $res = $this->client->createQueue($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- $request = new CreateQueueRequest($queueName2);
- $this->queueToDelete[] = $queueName2;
- try
- {
- $res = $this->client->createQueue($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- // 2. list queue
- $queueName1Found = FALSE;
- $queueName2Found = FALSE;
- $count = 0;
- $request = new ListQueueRequest(1, $queueNamePrefix);
- while ($count < 2) {
- try
- {
- $res = $this->client->listQueueAsync($request,
- new AsyncCallback(
- function($response) use ($count, &$request, $queueName1, $queueName2, &$queueName1Found, &$queueName2Found) {
- $this->assertTrue($response->isSucceed());
- $queueNames = $response->getQueueNames();
- foreach ($queueNames as $queueName) {
- if ($queueName == $queueName1) {
- $queueName1Found = TRUE;
- } elseif ($queueName == $queueName2) {
- $queueName2Found = TRUE;
- } else {
- $this->assertTrue(FALSE, $queueName . " Should not be here.");
- }
- }
- if ($count > 0) {
- $this->assertTrue($response->isFinished(), implode(", ", $queueNames));
- }
- $request->setMarker($response->getNextMarker());
- },
- function($e) {
- $this->assertTrue(FALSE, $e);
- }
- )
- );
- $res = $res->wait();
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- $count += 1;
- }
- $this->assertTrue($queueName1Found, $queueName1 . " Not Found!");
- $this->assertTrue($queueName2Found, $queueName2 . " Not Found!");
- }
- public function testDeleteQueue()
- {
- $queueName = "testDeleteQueue";
- // 1. create queue
- $request = new CreateQueueRequest($queueName);
- $this->queueToDelete[] = $queueName;
- try
- {
- $res = $this->client->createQueue($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- // 2. delete queue
- try
- {
- $res = $this->client->deleteQueue($queueName);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- }
- public function testDeleteQueueAsync()
- {
- $queueName = "testDeleteQueueAsync";
- // 1. create queue
- $request = new CreateQueueRequest($queueName);
- $this->queueToDelete[] = $queueName;
- try
- {
- $res = $this->client->createQueue($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- // 2. delete Queue
- try
- {
- $res = $this->client->deleteQueueAsync($queueName);
- $res = $res->wait();
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- }
- public function testCreateTopicSync()
- {
- $topicName = "testCreateTopicSync";
- // 1. create topic with InvalidArgument
- $attributes = new TopicAttributes;
- $attributes->setMaximumMessageSize(65 * 1024);
- $request = new CreateTopicRequest($topicName, $attributes);
- try
- {
- $res = $this->client->createTopic($request);
- $this->assertTrue(FALSE, "Should throw InvalidArgumentException");
- }
- catch (MnsException $e)
- {
- $this->assertEquals($e->getMnsErrorCode(), Constants::INVALID_ARGUMENT);
- }
- // 2. create topic
- $request = new CreateTopicRequest($topicName);
- $this->topicToDelete[] = $topicName;
- try
- {
- $res = $this->client->createTopic($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- // 3. create topic with same attributes
- $request = new CreateTopicRequest($topicName);
- $this->topicToDelete[] = $topicName;
- try
- {
- $res = $this->client->createTopic($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- // 4. create same topic with different attributes
- $attributes = new TopicAttributes;
- $attributes->setMaximumMessageSize(10 * 1024);
- $request = new CreateTopicRequest($topicName, $attributes);
- try
- {
- $res = $this->client->createTopic($request);
- $this->assertTrue(FALSE, "Should throw TopicAlreadyExistException");
- }
- catch (MnsException $e)
- {
- $this->assertEquals($e->getMnsErrorCode(), Constants::TOPIC_ALREADY_EXIST);
- }
- }
- public function testListTopic()
- {
- $topicNamePrefix = uniqid();
- $topicName1 = $topicNamePrefix . "testListTopic1";
- $topicName2 = $topicNamePrefix . "testListTopic2";
- // 1. create Topic
- $request = new CreateTopicRequest($topicName1);
- $this->topicToDelete[] = $topicName1;
- try
- {
- $res = $this->client->createTopic($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- $request = new CreateTopicRequest($topicName2);
- $this->topicToDelete[] = $topicName2;
- try
- {
- $res = $this->client->createTopic($request);
- $this->assertTrue($res->isSucceed());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- // 2. list Topic
- $topicName1Found = FALSE;
- $topicName2Found = FALSE;
- $count = 0;
- $request = new ListTopicRequest(1, $topicNamePrefix);
- while ($count < 2) {
- try
- {
- $res = $this->client->listTopic($request);
- $this->assertTrue($res->isSucceed());
- $topicNames = $res->getTopicNames();
- foreach ($topicNames as $topicName) {
- if ($topicName == $topicName1) {
- $topicName1Found = TRUE;
- } elseif ($topicName == $topicName2) {
- $topicName2Found = TRUE;
- } else {
- $this->assertTrue(FALSE, $topicName . " Should not be here.");
- }
- }
- if ($count > 0) {
- $this->assertTrue($res->isFinished(), implode(", ", $topicNames));
- }
- $request->setMarker($res->getNextMarker());
- }
- catch (MnsException $e)
- {
- $this->assertTrue(FALSE, $e);
- }
- $count += 1;
- }
- $this->assertTrue($topicName1Found, $topicName1 . " Not Found!");
- $this->assertTrue($topicName2Found, $topicName2 . " Not Found!");
- }
- }
- ?>
|