فهرست منبع

Added possibility to use custom connection cluster classes in Predis\Client constructor.

Added three methods (used by \Predis\Client) to IConnectionSingle interface.
Artur Kotyrba 14 سال پیش
والد
کامیت
fb30e22c30
2فایلهای تغییر یافته به همراه30 افزوده شده و 9 حذف شده
  1. 6 0
      lib/Predis.php
  2. 24 9
      test/PredisClientFeatures.php

+ 6 - 0
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 {

+ 24 - 9
test/PredisClientFeatures.php

@@ -408,17 +408,32 @@ 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 */