| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 | 
							- <?php
 
- require_once dirname(__FILE__).'/../Client.php';
 
- require_once dirname(__FILE__).'/../Cluster.php';
 
- require_once dirname(__FILE__).'/../Sentinel.php';
 
- require_once dirname(__FILE__).'/CredisTestCommon.php';
 
- class CredisSentinelTest extends CredisTestCommon
 
- {
 
-   /** @var Credis_Sentinel */
 
-   protected $sentinel;
 
-   protected $sentinelConfig;
 
-   protected function setUp()
 
-   {
 
-     parent::setUp();
 
-     if($this->sentinelConfig === NULL) {
 
-       $configFile = dirname(__FILE__).'/sentinel_config.json';
 
-       if( ! file_exists($configFile) || ! ($config = file_get_contents($configFile))) {
 
-         $this->markTestSkipped('Could not load '.$configFile);
 
-         return;
 
-       }
 
-       $this->sentinelConfig = json_decode($config);
 
-     }
 
-     $sentinelClient = new Credis_Client($this->sentinelConfig->host, $this->sentinelConfig->port);
 
-     $this->sentinel = new Credis_Sentinel($sentinelClient);
 
-     if($this->useStandalone) {
 
-       $this->sentinel->forceStandalone();
 
-     }
 
-     $this->waitForSlaveReplication();
 
-   }
 
-   protected function tearDown()
 
-   {
 
-     if($this->sentinel) {
 
-       $this->sentinel = NULL;
 
-     }
 
-   }
 
-   public function testMasterClient()
 
-   {
 
-       $master = $this->sentinel->getMasterClient($this->sentinelConfig->clustername);
 
-       $this->assertInstanceOf('Credis_Client',$master);
 
-       $this->assertEquals($this->redisConfig[0]['port'],$master->getPort());
 
-       $this->setExpectedExceptionShim('CredisException','Master not found');
 
-       $this->sentinel->getMasterClient('non-existing-cluster');
 
-   }
 
-   public function testMasters()
 
-   {
 
-       $masters = $this->sentinel->masters();
 
-       $this->assertInternalType('array',$masters);
 
-       $this->assertCount(2,$masters);
 
-       $this->assertArrayHasKey(0,$masters);
 
-       $this->assertArrayHasKey(1,$masters);
 
-       $this->assertArrayHasKey(1,$masters[0]);
 
-       $this->assertArrayHasKey(1,$masters[1]);
 
-       $this->assertArrayHasKey(5,$masters[1]);
 
-       if($masters[0][1] == 'masterdown'){
 
-           $this->assertEquals($this->sentinelConfig->clustername,$masters[1][1]);
 
-           $this->assertEquals($this->redisConfig[0]['port'],$masters[1][5]);
 
-       } else {
 
-           $this->assertEquals('masterdown',$masters[1][1]);
 
-           $this->assertEquals($this->sentinelConfig->clustername,$masters[0][1]);
 
-           $this->assertEquals($this->redisConfig[0]['port'],$masters[0][5]);
 
-       }
 
-   }
 
-   public function testMaster()
 
-   {
 
-       $master = $this->sentinel->master($this->sentinelConfig->clustername);
 
-       $this->assertInternalType('array',$master);
 
-       $this->assertArrayHasKey(1,$master);
 
-       $this->assertArrayHasKey(5,$master);
 
-       $this->assertEquals($this->sentinelConfig->clustername,$master[1]);
 
-       $this->assertEquals($this->redisConfig[0]['port'],$master[5]);
 
-       $this->setExpectedExceptionShim('CredisException','No such master with that name');
 
-       $this->sentinel->master('non-existing-cluster');
 
-   }
 
-   public function testSlaveClient()
 
-   {
 
-       $slaves = $this->sentinel->getSlaveClients($this->sentinelConfig->clustername);
 
-       $this->assertInternalType('array',$slaves);
 
-       $this->assertCount(1,$slaves);
 
-       foreach($slaves as $slave){
 
-           $this->assertInstanceOf('Credis_Client',$slave);
 
-       }
 
-       $this->setExpectedExceptionShim('CredisException','No such master with that name');
 
-       $this->sentinel->getSlaveClients('non-existing-cluster');
 
-   }
 
-   public function testSlaves()
 
-   {
 
-       $slaves = $this->sentinel->slaves($this->sentinelConfig->clustername);
 
-       $this->assertInternalType('array',$slaves);
 
-       $this->assertCount(1,$slaves);
 
-       $this->assertArrayHasKey(0,$slaves);
 
-       $this->assertArrayHasKey(5,$slaves[0]);
 
-       $this->assertEquals(6385,$slaves[0][5]);
 
-       $slaves = $this->sentinel->slaves('masterdown');
 
-       $this->assertInternalType('array',$slaves);
 
-       $this->assertCount(0,$slaves);
 
-       $this->setExpectedExceptionShim('CredisException','No such master with that name');
 
-       $this->sentinel->slaves('non-existing-cluster');
 
-   }
 
-   public function testNonExistingClusterNameWhenCreatingSlaves()
 
-   {
 
-       $this->setExpectedExceptionShim('CredisException','No such master with that name');
 
-       $this->sentinel->createSlaveClients('non-existing-cluster');
 
-   }
 
-   public function testCreateCluster()
 
-   {
 
-       $cluster = $this->sentinel->createCluster($this->sentinelConfig->clustername);
 
-       $this->assertInstanceOf('Credis_Cluster',$cluster);
 
-       $this->assertCount(2,$cluster->clients());
 
-       $cluster = $this->sentinel->createCluster($this->sentinelConfig->clustername,0,1,false);
 
-       $this->assertInstanceOf('Credis_Cluster',$cluster);
 
-       $this->assertCount(2,$cluster->clients());
 
-       $this->setExpectedExceptionShim('CredisException','The master is down');
 
-       $this->sentinel->createCluster($this->sentinelConfig->downclustername);
 
-   }
 
-   public function testGetCluster()
 
-   {
 
-       $cluster = $this->sentinel->getCluster($this->sentinelConfig->clustername);
 
-       $this->assertInstanceOf('Credis_Cluster',$cluster);
 
-       $this->assertCount(2,$cluster->clients());
 
-   }
 
-   public function testGetClusterOnDbNumber2()
 
-   {
 
-       $cluster = $this->sentinel->getCluster($this->sentinelConfig->clustername,2);
 
-       $this->assertInstanceOf('Credis_Cluster',$cluster);
 
-       $this->assertCount(2,$cluster->clients());
 
-       $clients = $cluster->clients();
 
-       $this->assertEquals(2,$clients[0]->getSelectedDb());
 
-       $this->assertEquals(2,$clients[1]->getSelectedDb());
 
-   }
 
-   public function testGetMasterAddressByName()
 
-   {
 
-       $address = $this->sentinel->getMasterAddressByName($this->sentinelConfig->clustername);
 
-       $this->assertInternalType('array',$address);
 
-       $this->assertCount(2,$address);
 
-       $this->assertArrayHasKey(0,$address);
 
-       $this->assertArrayHasKey(1,$address);
 
-       $this->assertEquals($this->redisConfig[0]['host'],$address[0]);
 
-       $this->assertEquals($this->redisConfig[0]['port'],$address[1]);
 
-   }
 
-   public function testPing()
 
-   {
 
-       $pong = $this->sentinel->ping();
 
-       $this->assertEquals("PONG",$pong);
 
-   }
 
-   public function testGetHostAndPort()
 
-   {
 
-       $host = 'localhost';
 
-       $port = '123456';
 
-       $client = $this->createMockShim('\Credis_Client');
 
-       $sentinel = new Credis_Sentinel($client);
 
-       $client->expects($this->once())->method('getHost')->willReturn($host);
 
-       $client->expects($this->once())->method('getPort')->willReturn($port);
 
-       $this->assertEquals($host, $sentinel->getHost());
 
-       $this->assertEquals($port, $sentinel->getPort());
 
-   }
 
-   public function testNonExistingMethod()
 
-   {
 
-       $this->setExpectedExceptionShim('CredisException','Unknown sentinel subcommand \'bla\'');
 
-       $this->sentinel->bla();
 
-   }
 
- }
 
 
  |