mirror of
https://github.com/predis/predis.git
synced 2026-08-24 12:49:34 +00:00
6ceebbfbec
The new name is more explicit as it makes obvious that the commands added with it will be executed upon connect().
126 lines
3.8 KiB
PHP
126 lines
3.8 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;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
class ComposableStreamConnectionTest extends PredisConnectionTestCase
|
|
{
|
|
/**
|
|
* @group disconnected
|
|
*/
|
|
public function testConstructorDoesNotOpenConnection()
|
|
{
|
|
$connection = new ComposableStreamConnection($this->getParameters());
|
|
|
|
$this->assertFalse($connection->isConnected());
|
|
}
|
|
|
|
/**
|
|
* @group disconnected
|
|
*/
|
|
public function testExposesParameters()
|
|
{
|
|
$parameters = $this->getParameters();
|
|
$connection = new ComposableStreamConnection($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 ComposableStreamConnection($parameters);
|
|
}
|
|
|
|
/**
|
|
* @group disconnected
|
|
*/
|
|
public function testCanBeSerialized()
|
|
{
|
|
$parameters = $this->getParameters(array('alias' => 'redis', 'read_write_timeout' => 10));
|
|
$connection = new ComposableStreamConnection($parameters);
|
|
|
|
$unserialized = unserialize(serialize($connection));
|
|
|
|
$this->assertEquals($connection, $unserialized);
|
|
}
|
|
|
|
// ******************************************************************** //
|
|
// ---- INTEGRATION TESTS --------------------------------------------- //
|
|
// ******************************************************************** //
|
|
|
|
/**
|
|
* @group connected
|
|
*/
|
|
public function testReadsMultibulkResponsesAsIterators()
|
|
{
|
|
$connection = $this->getConnection($profile, true);
|
|
$connection->getProtocol()->useIterableMultibulk(true);
|
|
|
|
$connection->executeCommand($profile->createCommand('rpush', array('metavars', 'foo', 'hoge', 'lol')));
|
|
$connection->writeRequest($profile->createCommand('lrange', array('metavars', 0, -1)));
|
|
|
|
$this->assertInstanceOf('Predis\Response\Iterator\MultiBulkIterator', $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->writeRequest($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 ComposableStreamConnection($parameters);
|
|
|
|
if ($initialize) {
|
|
$connection->addConnectCommand(
|
|
$profile->createCommand('select', array($parameters->database))
|
|
);
|
|
|
|
$connection->addConnectCommand(
|
|
$profile->createCommand('flushdb')
|
|
);
|
|
}
|
|
|
|
return $connection;
|
|
}
|
|
}
|