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()); }
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)); }
/** * @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()); } } }