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);
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |