You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
540 lines
16 KiB
PHP
540 lines
16 KiB
PHP
<?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!");
|
|
}
|
|
}
|
|
|
|
?>
|