Updated the tests to reflect the changes that has been made in the internal design of the library in the latest weeks.

This commit is contained in:
Daniele Alessandri
2010-04-17 17:04:06 +02:00
parent 4cce99d388
commit 471102253a
2 changed files with 43 additions and 19 deletions
+29 -19
View File
@@ -92,7 +92,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
$this->assertEquals('PING', $cmd->getCommandId());
$this->assertFalse($cmd->closesConnection());
$this->assertFalse($cmd->canBeHashed());
$this->assertNull($cmd->getHash());
$this->assertNull($cmd->getHash(new \Predis\Utilities\HashRing()));
$this->assertEquals("PING\r\n", $cmd());
}
@@ -104,7 +104,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
$this->assertEquals('GET', $cmd->getCommandId());
$this->assertFalse($cmd->closesConnection());
$this->assertTrue($cmd->canBeHashed());
$this->assertNotNull($cmd->getHash());
$this->assertNotNull($cmd->getHash(new \Predis\Utilities\HashRing()));
$this->assertEquals("GET key\r\n", $cmd());
}
@@ -116,7 +116,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
$this->assertEquals('SET', $cmd->getCommandId());
$this->assertFalse($cmd->closesConnection());
$this->assertTrue($cmd->canBeHashed());
$this->assertNotNull($cmd->getHash());
$this->assertNotNull($cmd->getHash(new \Predis\Utilities\HashRing()));
$this->assertEquals("SET key 5\r\nvalue\r\n", $cmd());
}
@@ -128,7 +128,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
$this->assertEquals('MSET', $cmd->getCommandId());
$this->assertFalse($cmd->closesConnection());
$this->assertFalse($cmd->canBeHashed());
$this->assertNull($cmd->getHash());
$this->assertNull($cmd->getHash(new \Predis\Utilities\HashRing()));
$this->assertEquals("*5\r\n$4\r\nMSET\r\n$4\r\nkey1\r\n$6\r\nvalue1\r\n$4\r\nkey2\r\n$6\r\nvalue2\r\n", $cmd());
}
@@ -264,8 +264,8 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
$this->assertTrue($connection->isConnected());
$connection->writeCommand($cmd);
$exceptionMessage = 'An error has occurred while reading from the network stream';
RC::testForClientException($this, $exceptionMessage, function() use($connection, $cmd) {
$exceptionMessage = 'Error while reading line from the server';
RC::testForCommunicationException($this, $exceptionMessage, function() use($connection, $cmd) {
$connection->readResponse($cmd);
});
//$this->assertFalse($connection->isConnected());
@@ -296,11 +296,11 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
function testConnection_Alias() {
$connection1 = new \Predis\Connection(RC::getConnectionParameters());
$this->assertNull($connection1->getAlias());
$this->assertNull($connection1->getParameters()->alias);
$args = array_merge(RC::getConnectionArguments(), array('alias' => 'servername'));
$connection2 = new \Predis\Connection(new \Predis\ConnectionParameters($args));
$this->assertEquals('servername', $connection2->getAlias());
$this->assertEquals('servername', $connection2->getParameters()->alias);
}
function testConnection_ConnectionTimeout() {
@@ -309,7 +309,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
$connection = new \Predis\Connection(new \Predis\ConnectionParameters($args));
$start = time();
RC::testForClientException($this, null, function() use($connection) {
RC::testForCommunicationException($this, null, function() use($connection) {
$connection->connect();
});
$this->assertEquals((float)(time() - $start), $timeout, '', 1);
@@ -321,8 +321,9 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
$cmdFake = \Predis\RedisServerProfile::getDefault()->createCommand('ping');
$connection = new \Predis\Connection(new \Predis\ConnectionParameters($args));
$expectedMessage = 'Error while reading line from the server';
$start = time();
RC::testForClientException($this, null, function() use($connection, $cmdFake) {
RC::testForCommunicationException($this, $expectedMessage, function() use($connection, $cmdFake) {
$connection->readResponse($cmdFake);
});
$this->assertEquals((float)(time() - $start), $timeout, '', 1);
@@ -335,12 +336,16 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
$connection = new \Predis\Connection(RC::getConnectionParameters());
$responseReader = $connection->getResponseReader();
$responseReader->setOption('iterable_multibulk_replies', false);
$this->assertFalse($responseReader->getOption('iterable_multibulk_replies'));
$responseReader->setHandler(
\Predis\ResponseReader::PREFIX_MULTI_BULK,
new \Predis\ResponseMultiBulkHandler()
);
$this->assertType('array', $connection->rawCommand("KEYS *\r\n"));
$responseReader->setOption('iterable_multibulk_replies', true);
$this->assertTrue($responseReader->getOption('iterable_multibulk_replies'));
$responseReader->setHandler(
\Predis\ResponseReader::PREFIX_MULTI_BULK,
new \Predis\ResponseMultiBulkStreamHandler()
);
$this->assertType('\Iterator', $connection->rawCommand("KEYS *\r\n"));
}
@@ -350,14 +355,18 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
$connection->rawCommand("SET key 5\r\nvalue\r\n");
$rawCmdUnexpected = "LPUSH key 5\r\nvalue\r\n";
$responseReader->setOption('error_throw_exception', false);
$this->assertFalse($responseReader->getOption('error_throw_exception'));
$responseReader->setHandler(
\Predis\ResponseReader::PREFIX_ERROR,
new \Predis\ResponseErrorSilentHandler()
);
$errorReply = $connection->rawCommand($rawCmdUnexpected);
$this->assertType('\Predis\ResponseError', $errorReply);
$this->assertEquals(RC::EXCEPTION_WRONG_TYPE, $errorReply->message);
$responseReader->setOption('error_throw_exception', true);
$this->assertTrue($responseReader->getOption('error_throw_exception'));
$responseReader->setHandler(
\Predis\ResponseReader::PREFIX_ERROR,
new \Predis\ResponseErrorHandler()
);
RC::testForServerException($this, RC::EXCEPTION_WRONG_TYPE, function()
use ($connection, $rawCmdUnexpected) {
@@ -431,6 +440,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
function testCommandPipeline_ServerExceptionInCallableBlock() {
$client = RC::getConnection();
$client->flushdb();
$client->getResponseReader()->setHandler('-', new \Predis\ResponseErrorSilentHandler());
$replies = $client->pipeline(function($pipe) {
$pipe->set('foo', 'bar');
@@ -460,4 +470,4 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase {
$this->assertEquals('piyo', $replies[3][1]);
}
}
?>
?>
+14
View File
@@ -132,6 +132,20 @@ class RC {
}
}
public static function testForCommunicationException($testcaseInstance, $expectedMessage, $wrapFunction) {
$thrownException = null;
try {
$wrapFunction($testcaseInstance);
}
catch (Predis\CommunicationException $exception) {
$thrownException = $exception;
}
$testcaseInstance->assertType('Predis\CommunicationException', $thrownException);
if (isset($expectedMessage)) {
$testcaseInstance->assertEquals($expectedMessage, $thrownException->getMessage());
}
}
public static function pushTailAndReturn(Predis\Client $client, $keyName, Array $values, $wipeOut = 0) {
if ($wipeOut == true) {
$client->delete($keyName);