Esempio n. 1
0
 public function testCreate()
 {
     /** @var CM_Model_StreamChannel_Abstract $streamChannel */
     $streamChannel = CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), array('key' => 'foo1', 'adapterType' => CM_MessageStream_Adapter_SocketRedis::getTypeStatic()));
     $this->assertInstanceOf('CM_Model_StreamChannel_Message', $streamChannel);
     $this->assertSame('foo1', $streamChannel->getKey());
     $this->assertEquals(CM_MessageStream_Adapter_SocketRedis::getTypeStatic(), $streamChannel->getAdapterType());
     $this->assertSame(time(), $streamChannel->getCreateStamp());
     /** @var CM_Model_StreamChannel_Abstract $channel1 */
     $channel1 = CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), ['key' => 'foo', 'adapterType' => CM_MessageStream_Adapter_SocketRedis::getTypeStatic()]);
     /** @var CM_Model_StreamChannel_Abstract $channel2 */
     $channel2 = CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), ['key' => 'foo', 'adapterType' => CM_MessageStream_Adapter_SocketRedis::getTypeStatic()]);
     $this->assertInstanceOf('CM_Model_StreamChannel_Message', $channel1);
     $this->assertInstanceOf('CM_Model_StreamChannel_Message', $channel2);
     $this->assertSame($channel1->getId(), $channel2->getId());
     $this->assertSame($channel1->getCreateStamp(), $channel2->getCreateStamp());
 }
Esempio n. 2
0
 public function testCreate()
 {
     $streamChannel = CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), array('key' => 'foo1', 'adapterType' => CM_MessageStream_Adapter_SocketRedis::getTypeStatic()));
     $this->assertInstanceOf('CM_Model_StreamChannel_Message', $streamChannel);
     try {
         CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), array('key' => 'foo1', 'adapterType' => CM_MessageStream_Adapter_SocketRedis::getTypeStatic()));
         $this->fail();
     } catch (CM_Db_Exception $e) {
         $this->assertContains('Duplicate entry', $e->getMessage());
     }
     CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), array('key' => 'foo1', 'adapterType' => 2));
 }
Esempio n. 3
0
 /**
  * @param array $status
  */
 private function _testSynchronize($status)
 {
     $adapter = $this->getMockBuilder('CM_MessageStream_Adapter_SocketRedis')->disableOriginalConstructor()->setMethods(array('_fetchStatus'))->getMock();
     $adapter->expects($this->any())->method('_fetchStatus')->will($this->returnValue($status));
     /** @var $adapter CM_MessageStream_Adapter_SocketRedis */
     $adapter->synchronize();
     $streamChannels = new CM_Paging_StreamChannel_AdapterType($adapter->getType());
     $this->assertSame(count($status), $streamChannels->getCount());
     /** @var $streamChannel CM_Model_StreamChannel_Message */
     foreach ($streamChannels as $streamChannel) {
         $this->assertInstanceOf('CM_Model_StreamChannel_Message', $streamChannel);
         $channel = $streamChannel->getKey() . ':' . CM_Model_StreamChannel_Message::getTypeStatic();
         $this->assertSame(count($status[$channel]['subscribers']), $streamChannel->getStreamSubscribes()->getCount());
     }
     foreach ($status as $channel => $channelData) {
         list($channelKey, $channelType) = explode(':', $channel);
         $streamChannel = CM_Model_StreamChannel_Message::findByKeyAndAdapter($channelKey, $adapter->getType());
         $this->assertInstanceOf('CM_Model_StreamChannel_Message', $streamChannel);
         foreach ($channelData['subscribers'] as $clientKey => $subscriberData) {
             $subscribe = CM_Model_Stream_Subscribe::findByKeyAndChannel($clientKey, $streamChannel);
             $this->assertInstanceOf('CM_Model_Stream_Subscribe', $subscribe);
             $this->assertSameTime(time() - CM_MessageStream_Adapter_SocketRedis::SYNCHRONIZE_DELAY - 1, $subscribe->getStart());
         }
     }
 }