mirror of
https://github.com/predis/predis.git
synced 2026-08-23 17:23:32 +00:00
dc14c29676
Now we follow a Symfony2-like naming convention for namespaces, interfaces and classes sticking with one clear rule. - Renamed namespaces: - Predis\Network - Predis\Profiles - Predis\Iterators - Predis\Options - Predis\Commands - Predis\Commands\Processors - Renamed interfaces: - Predis\IReplyObject - Predis\IRedisServerError - Predis\IConnectionFactory - Predis\IConnectionParameters - Predis\Options\IOption - Predis\Options\IClientOptions - Predis\Profile\IServerProfile - Predis\Pipeline\IPipelineExecutor - Predis\Distribution\INodeKeyGenerator - Predis\Distribution\IDistributionStrategy - Predis\Protocol\IProtocolProcessor - Predis\Protocol\IResponseReader - Predis\Protocol\IResponseHandler - Predis\Protocol\ICommandSerializer - Predis\Protocol\IComposableProtocolProcessor - Predis\Network\IConnection - Predis\Network\IConnectionSingle - Predis\Network\IConnectionComposable - Predis\Network\IConnectionCluster - Predis\Network\IConnectionReplication - Predis\Commands\ICommand - Predis\Commands\IPrefixable - Predis\Command\Processor\ICommandProcessor - Predis\Command\Processor\ICommandProcessorChain - Predis\Command\Processor\IProcessingSupport - Renamed Classes: - Predis\Commands\Command - Predis\Network\ConnectionBase - Classes moved to different namespaces: - Predis\MonitorContext Meh
125 lines
3.7 KiB
PHP
125 lines
3.7 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Predis package.
|
|
*
|
|
* (c) Daniele Alessandri <suppakilla@gmail.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Predis\Connection;
|
|
|
|
use \PHPUnit_Framework_TestCase as StandardTestCase;
|
|
|
|
use Predis\ConnectionParameters;
|
|
use Predis\Profile\ServerProfile;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
class StreamConnectionTest extends ConnectionTestCase
|
|
{
|
|
/**
|
|
* @group disconnected
|
|
*/
|
|
public function testConstructorDoesNotOpenConnection()
|
|
{
|
|
$connection = new StreamConnection($this->getParameters());
|
|
|
|
$this->assertFalse($connection->isConnected());
|
|
}
|
|
|
|
/**
|
|
* @group disconnected
|
|
*/
|
|
public function testExposesConnectionParameters()
|
|
{
|
|
$parameters = $this->getParameters();
|
|
$connection = new StreamConnection($parameters);
|
|
|
|
$this->assertSame($parameters, $connection->getParameters());
|
|
}
|
|
|
|
/**
|
|
* @group disconnected
|
|
* @expectedException InvalidArgumentException
|
|
* @expectedExceptionMessage Invalid scheme: udp
|
|
*/
|
|
public function testThrowsExceptionOnInvalidScheme()
|
|
{
|
|
$parameters = $this->getParameters(array('scheme' => 'udp'));
|
|
$connection = new StreamConnection($parameters);
|
|
}
|
|
|
|
/**
|
|
* @group disconnected
|
|
*/
|
|
public function testCanBeSerialized()
|
|
{
|
|
$parameters = $this->getParameters(array('alias' => 'redis', 'read_write_timeout' => 10));
|
|
$connection = new StreamConnection($parameters);
|
|
|
|
$unserialized = unserialize(serialize($connection));
|
|
|
|
$this->assertEquals($connection, $unserialized);
|
|
}
|
|
|
|
// ******************************************************************** //
|
|
// ---- INTEGRATION TESTS --------------------------------------------- //
|
|
// ******************************************************************** //
|
|
|
|
/**
|
|
* @group connected
|
|
*/
|
|
public function testReadsMultibulkRepliesAsIterators()
|
|
{
|
|
$connection = $this->getConnection($profile, true, array('iterable_multibulk' => true));
|
|
|
|
$connection->executeCommand($profile->createCommand('rpush', array('metavars', 'foo', 'hoge', 'lol')));
|
|
$connection->writeCommand($profile->createCommand('lrange', array('metavars', 0, -1)));
|
|
|
|
$this->assertInstanceOf('Predis\Iterator\MultiBulkResponse', $iterator = $connection->read());
|
|
$this->assertSame(array('foo', 'hoge', 'lol'), iterator_to_array($iterator));
|
|
}
|
|
|
|
/**
|
|
* @group connected
|
|
* @expectedException Predis\Protocol\ProtocolException
|
|
* @expectedExceptionMessage Unknown prefix: 'P'
|
|
*/
|
|
public function testThrowsExceptionOnProtocolDesynchronizationErrors()
|
|
{
|
|
$connection = $this->getConnection($profile);
|
|
$stream = $connection->getResource();
|
|
|
|
$connection->writeCommand($profile->createCommand('ping'));
|
|
fread($stream, 1);
|
|
|
|
$connection->read();
|
|
}
|
|
|
|
// ******************************************************************** //
|
|
// ---- HELPER METHODS ------------------------------------------------ //
|
|
// ******************************************************************** //
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function getConnection(&$profile = null, $initialize = false, Array $parameters = array())
|
|
{
|
|
$parameters = $this->getParameters($parameters);
|
|
$profile = $this->getProfile();
|
|
|
|
$connection = new StreamConnection($parameters);
|
|
|
|
if ($initialize) {
|
|
$connection->pushInitCommand($profile->createCommand('select', array($parameters->database)));
|
|
$connection->pushInitCommand($profile->createCommand('flushdb'));
|
|
}
|
|
|
|
return $connection;
|
|
}
|
|
}
|