Exemple #1
0
 public function testFetchStatus()
 {
     $serverList = new CM_Janus_ServerList();
     foreach ([1, 5] as $serverId) {
         $server = $this->mockClass('CM_Janus_Server')->newInstanceWithoutConstructor();
         $server->mockMethod('getId')->set($serverId);
         /** @var CM_Janus_Server $server */
         $serverList->addServer($server);
     }
     $httpApiClient = $this->mockClass('CM_Janus_HttpApiClient')->newInstanceWithoutConstructor();
     $httpApiClient->mockMethod('fetchStatus')->set(function (CM_Janus_Server $server) {
         switch ($server->getId()) {
             case 1:
                 return [['id' => 'stream-foo', 'channelName' => 'channel-foo', 'isPublish' => false]];
             case 5:
                 return [['id' => 'stream-bar', 'channelName' => 'channel-bar', 'isPublish' => false], ['id' => 'stream-zoo', 'channelName' => 'channel-zoo', 'isPublish' => false]];
         }
     });
     /** @var CM_Janus_HttpApiClient $httpApiClient */
     $janus = new CM_Janus_Service($serverList, $httpApiClient);
     /** @var CM_Janus_Stream[] $streams */
     $streams = $this->callProtectedMethod($janus, '_fetchStatus');
     $this->assertContainsOnlyInstancesOf('CM_Janus_Stream', $streams);
     $this->assertCount(3, $streams);
     $this->assertSame($serverList->getById(1), $streams[0]->getServer());
     $this->assertSame('stream-foo', $streams[0]->getStreamKey());
     $this->assertSame('channel-foo', $streams[0]->getStreamChannelKey());
     $this->assertSame($serverList->getById(5), $streams[1]->getServer());
     $this->assertSame('stream-bar', $streams[1]->getStreamKey());
     $this->assertSame('channel-bar', $streams[1]->getStreamChannelKey());
     $this->assertSame($serverList->getById(5), $streams[2]->getServer());
     $this->assertSame('stream-zoo', $streams[2]->getStreamKey());
     $this->assertSame('channel-zoo', $streams[2]->getStreamChannelKey());
 }
Exemple #2
0
 public function testGetById()
 {
     $server = $this->mockClass('CM_Janus_Server')->newInstanceWithoutConstructor();
     $server->mockMethod('getId')->set(1);
     $serverList = new CM_Janus_ServerList([$server]);
     $this->assertSame($server, $serverList->getById(1));
     $exception = $this->catchException(function () use($serverList) {
         $serverList->getById(2);
     });
     $this->assertTrue($exception instanceof CM_Exception_Invalid);
     /** @var CM_Exception_Invalid $exception */
     $this->assertSame('Cannot find server', $exception->getMessage());
     $this->assertSame(['serverId' => 2], $exception->getMetaInfo());
 }
Exemple #3
0
 /**
  * @param CM_Model_Stream_Abstract $stream
  * @throws CM_Exception_Invalid
  * @throws CM_Janus_StopStreamError
  */
 protected function _stopStream(CM_Model_Stream_Abstract $stream)
 {
     /** @var $streamChannel CM_Model_StreamChannel_Media */
     $streamChannel = $stream->getStreamChannel();
     $server = $this->_serverList->getById($streamChannel->getServerId());
     $result = $this->_httpApiClient->stopStream($server, $stream->getKey());
     if (array_key_exists('error', $result)) {
         throw new CM_Janus_StopStreamError($result['error']);
     }
 }