278 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			278 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace OSS\Tests; | ||
|  | 
 | ||
|  | require_once __DIR__ . '/Common.php'; | ||
|  | 
 | ||
|  | use OSS\Core\OssException; | ||
|  | use OSS\Model\LiveChannelInfo; | ||
|  | use OSS\Model\LiveChannelListInfo; | ||
|  | use OSS\Model\LiveChannelConfig; | ||
|  | use OSS\Model\GetLiveChannelStatus; | ||
|  | use OSS\Model\GetLiveChannelHistory; | ||
|  | use OSS\Model\LiveChannelHistory; | ||
|  | 
 | ||
|  | class LiveChannelXmlTest extends \PHPUnit\Framework\TestCase | ||
|  | { | ||
|  |     private $config = <<<BBBB | ||
|  | <?xml version="1.0" encoding="utf-8"?>
 | ||
|  | <LiveChannelConfiguration> | ||
|  |   <Description>xxx</Description> | ||
|  |   <Status>enabled</Status> | ||
|  |   <Target> | ||
|  |      <Type>hls</Type> | ||
|  |      <FragDuration>1000</FragDuration> | ||
|  |      <FragCount>5</FragCount> | ||
|  |      <PlayListName>hello.m3u8</PlayListName> | ||
|  |   </Target> | ||
|  | </LiveChannelConfiguration> | ||
|  | BBBB; | ||
|  | 
 | ||
|  |     private $info = <<<BBBB | ||
|  | <?xml version="1.0" encoding="utf-8"?>
 | ||
|  | <CreateLiveChannelResult> | ||
|  |   <Name>live-1</Name> | ||
|  |   <Description>xxx</Description> | ||
|  |   <PublishUrls> | ||
|  |     <Url>rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/213443245345</Url> | ||
|  |   </PublishUrls> | ||
|  |   <PlayUrls> | ||
|  |     <Url>http://bucket.oss-cn-hangzhou.aliyuncs.com/213443245345/播放列表.m3u8</Url> | ||
|  |   </PlayUrls> | ||
|  |   <Status>enabled</Status> | ||
|  |   <LastModified>2015-11-24T14:25:31.000Z</LastModified> | ||
|  | </CreateLiveChannelResult> | ||
|  | BBBB; | ||
|  | 
 | ||
|  |     private $list = <<<BBBB | ||
|  | <?xml version="1.0" encoding="utf-8"?>
 | ||
|  | <ListLiveChannelResult> | ||
|  | <Prefix>xxx</Prefix> | ||
|  |   <Marker>yyy</Marker> | ||
|  |   <MaxKeys>100</MaxKeys> | ||
|  |   <IsTruncated>false</IsTruncated> | ||
|  |   <NextMarker>121312132</NextMarker> | ||
|  |   <LiveChannel> | ||
|  |     <Name>12123214323431</Name> | ||
|  |     <Description>xxx</Description> | ||
|  |     <PublishUrls> | ||
|  |       <Url>rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/1</Url> | ||
|  |     </PublishUrls> | ||
|  |     <PlayUrls> | ||
|  |       <Url>http://bucket.oss-cn-hangzhou.aliyuncs.com/1/播放列表.m3u8</Url> | ||
|  |     </PlayUrls> | ||
|  |     <Status>enabled</Status> | ||
|  |     <LastModified>2015-11-24T14:25:31.000Z</LastModified> | ||
|  |   </LiveChannel> | ||
|  |   <LiveChannel> | ||
|  |     <Name>432423432423</Name> | ||
|  |     <Description>yyy</Description> | ||
|  |     <PublishUrls> | ||
|  |       <Url>rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/2</Url> | ||
|  |     </PublishUrls> | ||
|  |     <PlayUrls> | ||
|  |       <Url>http://bucket.oss-cn-hangzhou.aliyuncs.com/2/播放列表.m3u8</Url> | ||
|  |     </PlayUrls> | ||
|  |     <Status>enabled</Status> | ||
|  |     <LastModified>2016-11-24T14:25:31.000Z</LastModified> | ||
|  |   </LiveChannel> | ||
|  | </ListLiveChannelResult> | ||
|  | BBBB; | ||
|  | 
 | ||
|  |     private $status = <<<BBBB | ||
|  | <?xml version="1.0" encoding="utf-8"?>
 | ||
|  | <LiveChannelStat> | ||
|  |     <Status>Live</Status> | ||
|  |     <ConnectedTime>2016-10-20T14:25:31.000Z</ConnectedTime> | ||
|  |     <RemoteAddr>10.1.2.4:47745</RemoteAddr> | ||
|  |     <Video> | ||
|  |         <Width>1280</Width> | ||
|  |         <Height>536</Height> | ||
|  |         <FrameRate>24</FrameRate> | ||
|  |         <Bandwidth>72513</Bandwidth> | ||
|  |         <Codec>H264</Codec> | ||
|  |     </Video> | ||
|  |         <Audio> | ||
|  |         <Bandwidth>6519</Bandwidth> | ||
|  |         <SampleRate>44100</SampleRate> | ||
|  |         <Codec>AAC</Codec> | ||
|  |     </Audio> | ||
|  | </LiveChannelStat> | ||
|  | BBBB; | ||
|  | 
 | ||
|  |     private $history = <<<BBBB | ||
|  | <?xml version="1.0" encoding="utf-8"?>
 | ||
|  | <LiveChannelHistory> | ||
|  |     <LiveRecord> | ||
|  |         <StartTime>2013-11-24T14:25:31.000Z</StartTime> | ||
|  |         <EndTime>2013-11-24T15:25:31.000Z</EndTime> | ||
|  |         <RemoteAddr>10.101.194.148:56861</RemoteAddr> | ||
|  |     </LiveRecord> | ||
|  |     <LiveRecord> | ||
|  |         <StartTime>2014-11-24T14:25:31.000Z</StartTime> | ||
|  |         <EndTime>2014-11-24T15:25:31.000Z</EndTime> | ||
|  |         <RemoteAddr>10.101.194.148:56862</RemoteAddr> | ||
|  |     </LiveRecord> | ||
|  |     <LiveRecord> | ||
|  |         <StartTime>2015-11-24T14:25:31.000Z</StartTime> | ||
|  |         <EndTime>2015-11-24T15:25:31.000Z</EndTime> | ||
|  |         <RemoteAddr>10.101.194.148:56863</RemoteAddr> | ||
|  |     </LiveRecord> | ||
|  | </LiveChannelHistory> | ||
|  | BBBB; | ||
|  | 
 | ||
|  |     public function testLiveChannelStatus() | ||
|  |     { | ||
|  |         $stat = new GetLiveChannelStatus(); | ||
|  |         $stat->parseFromXml($this->status); | ||
|  |    | ||
|  |         $this->assertEquals('Live', $stat->getStatus()); | ||
|  |         $this->assertEquals('2016-10-20T14:25:31.000Z', $stat->getConnectedTime()); | ||
|  |         $this->assertEquals('10.1.2.4:47745', $stat->getRemoteAddr()); | ||
|  | 
 | ||
|  |         $this->assertEquals(1280, $stat->getVideoWidth()); | ||
|  |         $this->assertEquals(536, $stat->getVideoHeight()); | ||
|  |         $this->assertEquals(24, $stat->getVideoFrameRate()); | ||
|  |         $this->assertEquals(72513, $stat->getVideoBandwidth()); | ||
|  |         $this->assertEquals('H264', $stat->getVideoCodec()); | ||
|  |         $this->assertEquals(6519, $stat->getAudioBandwidth()); | ||
|  |         $this->assertEquals(44100, $stat->getAudioSampleRate()); | ||
|  |         $this->assertEquals('AAC', $stat->getAudioCodec()); | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testGetLiveChannelHistory() | ||
|  |     { | ||
|  |         $history = new GetLiveChannelHistory(); | ||
|  |         $history->parseFromXml($this->history); | ||
|  | 
 | ||
|  |         $recordList = $history->getLiveRecordList(); | ||
|  |         $this->assertEquals(3, count($recordList)); | ||
|  | 
 | ||
|  |         $list0 = $recordList[0]; | ||
|  |         $this->assertEquals('2013-11-24T14:25:31.000Z', $list0->getStartTime()); | ||
|  |         $this->assertEquals('2013-11-24T15:25:31.000Z', $list0->getEndTime()); | ||
|  |         $this->assertEquals('10.101.194.148:56861', $list0->getRemoteAddr()); | ||
|  |     | ||
|  |         $list1 = $recordList[1]; | ||
|  |         $this->assertEquals('2014-11-24T14:25:31.000Z', $list1->getStartTime()); | ||
|  |         $this->assertEquals('2014-11-24T15:25:31.000Z', $list1->getEndTime()); | ||
|  |         $this->assertEquals('10.101.194.148:56862', $list1->getRemoteAddr()); | ||
|  | 
 | ||
|  |         $list2 = $recordList[2]; | ||
|  |         $this->assertEquals('2015-11-24T14:25:31.000Z', $list2->getStartTime()); | ||
|  |         $this->assertEquals('2015-11-24T15:25:31.000Z', $list2->getEndTime()); | ||
|  |         $this->assertEquals('10.101.194.148:56863', $list2->getRemoteAddr()); | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testLiveChannelConfig() | ||
|  |     { | ||
|  |         $config = new LiveChannelConfig(array('name' => 'live-1')); | ||
|  |         $config->parseFromXml($this->config); | ||
|  | 
 | ||
|  |         $this->assertEquals('xxx', $config->getDescription()); | ||
|  |         $this->assertEquals('enabled', $config->getStatus()); | ||
|  |         $this->assertEquals('hls', $config->getType()); | ||
|  |         $this->assertEquals(1000, $config->getFragDuration()); | ||
|  |         $this->assertEquals(5, $config->getFragCount()); | ||
|  |         $this->assertEquals('hello.m3u8', $config->getPlayListName()); | ||
|  | 
 | ||
|  |         $xml = $config->serializeToXml(); | ||
|  |         $config2 = new LiveChannelConfig(array('name' => 'live-2')); | ||
|  |         $config2->parseFromXml($xml); | ||
|  |         $this->assertEquals('xxx', $config2->getDescription()); | ||
|  |         $this->assertEquals('enabled', $config2->getStatus()); | ||
|  |         $this->assertEquals('hls', $config2->getType()); | ||
|  |         $this->assertEquals(1000, $config2->getFragDuration()); | ||
|  |         $this->assertEquals(5, $config2->getFragCount()); | ||
|  |         $this->assertEquals('hello.m3u8', $config2->getPlayListName()); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testLiveChannelInfo() | ||
|  |     { | ||
|  |         $info = new LiveChannelInfo(array('name' => 'live-1')); | ||
|  |         $info->parseFromXml($this->info); | ||
|  | 
 | ||
|  |         $this->assertEquals('live-1', $info->getName()); | ||
|  |         $this->assertEquals('xxx', $info->getDescription()); | ||
|  |         $this->assertEquals('enabled', $info->getStatus()); | ||
|  |         $this->assertEquals('2015-11-24T14:25:31.000Z', $info->getLastModified()); | ||
|  |         $pubs = $info->getPublishUrls(); | ||
|  |         $this->assertEquals(1, count($pubs)); | ||
|  |         $this->assertEquals('rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/213443245345', $pubs[0]); | ||
|  | 
 | ||
|  |         $plays = $info->getPlayUrls(); | ||
|  |         $this->assertEquals(1, count($plays)); | ||
|  |         $this->assertEquals('http://bucket.oss-cn-hangzhou.aliyuncs.com/213443245345/播放列表.m3u8', $plays[0]); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testLiveChannelList() | ||
|  |     { | ||
|  |         $list = new LiveChannelListInfo(); | ||
|  |         $list->parseFromXml($this->list); | ||
|  | 
 | ||
|  |         $this->assertEquals('xxx', $list->getPrefix()); | ||
|  |         $this->assertEquals('yyy', $list->getMarker()); | ||
|  |         $this->assertEquals(100, $list->getMaxKeys()); | ||
|  |         $this->assertEquals(false, $list->getIsTruncated()); | ||
|  |         $this->assertEquals('121312132', $list->getNextMarker()); | ||
|  | 
 | ||
|  |         $channels = $list->getChannelList(); | ||
|  |         $this->assertEquals(2, count($channels)); | ||
|  | 
 | ||
|  |         $chan1 = $channels[0]; | ||
|  |         $this->assertEquals('12123214323431', $chan1->getName()); | ||
|  |         $this->assertEquals('xxx', $chan1->getDescription()); | ||
|  |         $this->assertEquals('enabled', $chan1->getStatus()); | ||
|  |         $this->assertEquals('2015-11-24T14:25:31.000Z', $chan1->getLastModified()); | ||
|  |         $pubs = $chan1->getPublishUrls(); | ||
|  |         $this->assertEquals(1, count($pubs)); | ||
|  |         $this->assertEquals('rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/1', $pubs[0]); | ||
|  | 
 | ||
|  |         $plays = $chan1->getPlayUrls(); | ||
|  |         $this->assertEquals(1, count($plays)); | ||
|  |         $this->assertEquals('http://bucket.oss-cn-hangzhou.aliyuncs.com/1/播放列表.m3u8', $plays[0]); | ||
|  | 
 | ||
|  |         $chan2 = $channels[1]; | ||
|  |         $this->assertEquals('432423432423', $chan2->getName()); | ||
|  |         $this->assertEquals('yyy', $chan2->getDescription()); | ||
|  |         $this->assertEquals('enabled', $chan2->getStatus()); | ||
|  |         $this->assertEquals('2016-11-24T14:25:31.000Z', $chan2->getLastModified()); | ||
|  |         $pubs = $chan2->getPublishUrls(); | ||
|  |         $this->assertEquals(1, count($pubs)); | ||
|  |         $this->assertEquals('rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/2', $pubs[0]); | ||
|  | 
 | ||
|  |         $plays = $chan2->getPlayUrls(); | ||
|  |         $this->assertEquals(1, count($plays)); | ||
|  |         $this->assertEquals('http://bucket.oss-cn-hangzhou.aliyuncs.com/2/播放列表.m3u8', $plays[0]); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testLiveChannelHistory() | ||
|  |     { | ||
|  |         $xml = "<LiveRecord><StartTime>2013-11-24T14:25:31.000Z</StartTime><EndTime>2013-11-24T15:25:31.000Z</EndTime><RemoteAddr>10.101.194.148:56861</RemoteAddr></LiveRecord>"; | ||
|  |         $history = new LiveChannelHistory(); | ||
|  |         $history->parseFromXml($xml); | ||
|  | 
 | ||
|  |         $this->assertEquals('2013-11-24T14:25:31.000Z', $history->getStartTime()); | ||
|  |         $this->assertEquals('2013-11-24T15:25:31.000Z', $history->getEndTime()); | ||
|  |         $this->assertEquals('10.101.194.148:56861', $history->getRemoteAddr()); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testGetLiveChannelHistorySerializeToXml() | ||
|  |     { | ||
|  |         try { | ||
|  |           $history = new GetLiveChannelHistory (); | ||
|  |           $history->serializeToXml(); | ||
|  |             $this->assertTrue(false); | ||
|  |       } catch (OssException $e) { | ||
|  |           $this->assertTrue(true); | ||
|  |           if (strpos($e, "Not implemented.") == false) | ||
|  |           { | ||
|  |               $this->assertTrue(false); | ||
|  |           } | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  | } |