From fb30e22c30669ec3f6cc2efbaca9c4403cd19e81 Mon Sep 17 00:00:00 2001 From: Artur Kotyrba Date: Wed, 5 Jan 2011 20:31:48 +0100 Subject: [PATCH 1/4] Added possibility to use custom connection cluster classes in Predis\Client constructor. Added three methods (used by \Predis\Client) to IConnectionSingle interface. --- lib/Predis.php | 6 ++++++ test/PredisClientFeatures.php | 33 ++++++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/lib/Predis.php b/lib/Predis.php index c60baa7c..43e787ac 100644 --- a/lib/Predis.php +++ b/lib/Predis.php @@ -93,6 +93,9 @@ class Client { } $this->setConnection($cluster); } + else if ($parameters instanceof IConnectionCluster) { + $this->setConnection($parameters); + } else { $this->setConnection($this->createConnection($parameters)); } @@ -1206,6 +1209,9 @@ interface IConnectionSingle extends IConnection { public function writeBytes($buffer); public function readBytes($length); public function readLine(); + public function getParameters(); + public function pushInitCommand(ICommand $command); + public function __toString(); } interface IConnectionCluster extends IConnection { diff --git a/test/PredisClientFeatures.php b/test/PredisClientFeatures.php index 7734f256..6e7156fb 100644 --- a/test/PredisClientFeatures.php +++ b/test/PredisClientFeatures.php @@ -408,18 +408,33 @@ class PredisClientFeaturesTestSuite extends PHPUnit_Framework_TestCase { $params3 = new \Predis\ConnectionParameters($params1); $params4 = new \Predis\TcpConnection($params3); - $client = new \Predis\Client(array($params1, $params2, $params3, $params4)); - foreach ($client->getConnection() as $connection) { - $parameters = $connection->getParameters(); - $this->assertEquals($params1['host'], $parameters->host); - $this->assertEquals($params1['port'], $parameters->port); - $this->assertEquals($params1['connection_timeout'], $parameters->connection_timeout); - $this->assertEquals($params1['read_write_timeout'], $parameters->read_write_timeout); - $this->assertNull($parameters->password); + $connectionCluster1 = array($params1, $params2, $params3, $params4); + $connectionCluster2 = array($params4); + $connectionCluster3 = new \Predis\ConnectionCluster(); + $connectionCluster3->add($params4); + + foreach (array($connectionCluster1, $connectionCluster2, $connectionCluster3) as $connectionCluster) { + $client = new \Predis\Client($connectionCluster); + + foreach ($client->getConnection() as $connection) { + $parameters = $connection->getParameters(); + $this->assertEquals($params1['host'], $parameters->host); + $this->assertEquals($params1['port'], $parameters->port); + $this->assertEquals($params1['connection_timeout'], $parameters->connection_timeout); + $this->assertEquals($params1['read_write_timeout'], $parameters->read_write_timeout); + $this->assertNull($parameters->password); + } + } + + foreach (array($connectionCluster2, $connectionCluster3) as $connectionCluster) { + $client = new \Predis\Client($connectionCluster); + + foreach ($client->getConnection() as $connection) { + $this->assertSame($params4, $connection); + } } } - /* Client + CommandPipeline */ function testCommandPipeline_Simple() { From 6de72228574a668b18207cfdd1e706c2e45a9dda Mon Sep 17 00:00:00 2001 From: Daniele Alessandri Date: Wed, 5 Jan 2011 22:55:15 +0100 Subject: [PATCH 2/4] Revert changes to the test suite in 6a7fc49. --- test/PredisClientFeatures.php | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/test/PredisClientFeatures.php b/test/PredisClientFeatures.php index 6e7156fb..7734f256 100644 --- a/test/PredisClientFeatures.php +++ b/test/PredisClientFeatures.php @@ -408,33 +408,18 @@ class PredisClientFeaturesTestSuite extends PHPUnit_Framework_TestCase { $params3 = new \Predis\ConnectionParameters($params1); $params4 = new \Predis\TcpConnection($params3); - $connectionCluster1 = array($params1, $params2, $params3, $params4); - $connectionCluster2 = array($params4); - $connectionCluster3 = new \Predis\ConnectionCluster(); - $connectionCluster3->add($params4); - - foreach (array($connectionCluster1, $connectionCluster2, $connectionCluster3) as $connectionCluster) { - $client = new \Predis\Client($connectionCluster); - - foreach ($client->getConnection() as $connection) { - $parameters = $connection->getParameters(); - $this->assertEquals($params1['host'], $parameters->host); - $this->assertEquals($params1['port'], $parameters->port); - $this->assertEquals($params1['connection_timeout'], $parameters->connection_timeout); - $this->assertEquals($params1['read_write_timeout'], $parameters->read_write_timeout); - $this->assertNull($parameters->password); - } - } - - foreach (array($connectionCluster2, $connectionCluster3) as $connectionCluster) { - $client = new \Predis\Client($connectionCluster); - - foreach ($client->getConnection() as $connection) { - $this->assertSame($params4, $connection); - } + $client = new \Predis\Client(array($params1, $params2, $params3, $params4)); + foreach ($client->getConnection() as $connection) { + $parameters = $connection->getParameters(); + $this->assertEquals($params1['host'], $parameters->host); + $this->assertEquals($params1['port'], $parameters->port); + $this->assertEquals($params1['connection_timeout'], $parameters->connection_timeout); + $this->assertEquals($params1['read_write_timeout'], $parameters->read_write_timeout); + $this->assertNull($parameters->password); } } + /* Client + CommandPipeline */ function testCommandPipeline_Simple() { From a7ae86689d6864be1d37b875cd1a861fe2f78b6d Mon Sep 17 00:00:00 2001 From: Daniele Alessandri Date: Wed, 5 Jan 2011 23:03:34 +0100 Subject: [PATCH 3/4] Test suite: client initialization using an instance of Predis\IConnectionCluster. --- test/PredisClientFeatures.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test/PredisClientFeatures.php b/test/PredisClientFeatures.php index 7734f256..33f50559 100644 --- a/test/PredisClientFeatures.php +++ b/test/PredisClientFeatures.php @@ -408,8 +408,8 @@ class PredisClientFeaturesTestSuite extends PHPUnit_Framework_TestCase { $params3 = new \Predis\ConnectionParameters($params1); $params4 = new \Predis\TcpConnection($params3); - $client = new \Predis\Client(array($params1, $params2, $params3, $params4)); - foreach ($client->getConnection() as $connection) { + $client1 = new \Predis\Client(array($params1, $params2, $params3, $params4)); + foreach ($client1->getConnection() as $connection) { $parameters = $connection->getParameters(); $this->assertEquals($params1['host'], $parameters->host); $this->assertEquals($params1['port'], $parameters->port); @@ -417,6 +417,10 @@ class PredisClientFeaturesTestSuite extends PHPUnit_Framework_TestCase { $this->assertEquals($params1['read_write_timeout'], $parameters->read_write_timeout); $this->assertNull($parameters->password); } + + $connectionCluster = $client1->getConnection(); + $client2 = new \Predis\Client($connectionCluster); + $this->assertSame($connectionCluster, $client2->getConnection()); } From 8a76c8c84923ca8e42fec5776d8c41fb39ce37be Mon Sep 17 00:00:00 2001 From: Artur Kotyrba Date: Wed, 5 Jan 2011 20:39:07 +0100 Subject: [PATCH 4/4] Remove unused private method. --- lib/Predis.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/Predis.php b/lib/Predis.php index 43e787ac..c10d9ba0 100644 --- a/lib/Predis.php +++ b/lib/Predis.php @@ -715,10 +715,6 @@ class CommandPipeline { $this->_pipelineBuffer[] = $command; } - private function getRecordedCommands() { - return $this->_pipelineBuffer; - } - public function flushPipeline() { if (count($this->_pipelineBuffer) > 0) { $connection = $this->_redisClient->getConnection();