123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- <?php
- namespace OSS\Tests;
- require_once __DIR__ . '/Common.php';
- use OSS\Model\LiveChannelConfig;
- use OSS\Core\OssException;
- class BucketLiveChannelTest extends \PHPUnit_Framework_TestCase
- {
- private $bucketName;
- private $client;
- public function setUp()
- {
- $this->client = Common::getOssClient();
- $this->bucketName = 'php-sdk-test-rtmp-bucket-name-' . strval(rand(0, 10000));
- $this->client->createBucket($this->bucketName);
- Common::waitMetaSync();
- }
- public function tearDown()
- {
- ////to delete created bucket
- //1. delele live channel
- $list = $this->client->listBucketLiveChannels($this->bucketName);
- if (count($list->getChannelList()) != 0)
- {
- foreach($list->getChannelList() as $list)
- {
- $this->client->deleteBucketLiveChannel($this->bucketName, $list->getName());
- }
- }
- //2. delete exsited object
- $prefix = 'live-test/';
- $delimiter = '/';
- $nextMarker = '';
- $maxkeys = 1000;
- $options = array(
- 'delimiter' => $delimiter,
- 'prefix' => $prefix,
- 'max-keys' => $maxkeys,
- 'marker' => $nextMarker,
- );
- try {
- $listObjectInfo = $this->client->listObjects($this->bucketName, $options);
- } catch (OssException $e) {
- printf($e->getMessage() . "\n");
- return;
- }
- $objectList = $listObjectInfo->getObjectList(); // 文件列表
- if (!empty($objectList))
- {
- foreach($objectList as $objectInfo)
- $this->client->deleteObject($this->bucketName, $objectInfo->getKey());
- }
- //3. delete the bucket
- $this->client->deleteBucket($this->bucketName);
- }
- public function testPutLiveChannel()
- {
- $config = new LiveChannelConfig(array(
- 'description' => 'live channel 1',
- 'type' => 'HLS',
- 'fragDuration' => 10,
- 'fragCount' => 5,
- 'playListName' => 'hello.m3u8'
- ));
- $info = $this->client->putBucketLiveChannel($this->bucketName, 'live-1', $config);
- $this->client->deleteBucketLiveChannel($this->bucketName, 'live-1');
- $this->assertEquals('live-1', $info->getName());
- $this->assertEquals('live channel 1', $info->getDescription());
- $this->assertEquals(1, count($info->getPublishUrls()));
- $this->assertEquals(1, count($info->getPlayUrls()));
- }
- public function testPutLiveChannelWithDefaultParams()
- {
- $config = new LiveChannelConfig(array(
- 'description' => 'live channel 1',
- 'type' => 'HLS',
- ));
- $info = $this->client->putBucketLiveChannel($this->bucketName, 'live-1', $config);
- $this->client->deleteBucketLiveChannel($this->bucketName, 'live-1');
- $this->assertEquals('live-1', $info->getName());
- $this->assertEquals('live channel 1', $info->getDescription());
- $this->assertEquals(1, count($info->getPublishUrls()));
- $this->assertEquals(1, count($info->getPlayUrls()));
- }
- public function testListLiveChannels()
- {
- $config = new LiveChannelConfig(array(
- 'description' => 'live channel 1',
- 'type' => 'HLS',
- 'fragDuration' => 10,
- 'fragCount' => 5,
- 'playListName' => 'hello.m3u8'
- ));
- $this->client->putBucketLiveChannel($this->bucketName, 'live-1', $config);
- $config = new LiveChannelConfig(array(
- 'description' => 'live channel 2',
- 'type' => 'HLS',
- 'fragDuration' => 10,
- 'fragCount' => 5,
- 'playListName' => 'hello.m3u8'
- ));
- $this->client->putBucketLiveChannel($this->bucketName, 'live-2', $config);
- $list = $this->client->listBucketLiveChannels($this->bucketName);
- $this->assertEquals($this->bucketName, $list->getBucketName());
- $this->assertEquals(false, $list->getIsTruncated());
- $channels = $list->getChannelList();
- $this->assertEquals(2, count($channels));
- $chan1 = $channels[0];
- $this->assertEquals('live-1', $chan1->getName());
- $this->assertEquals('live channel 1', $chan1->getDescription());
- $this->assertEquals(1, count($chan1->getPublishUrls()));
- $this->assertEquals(1, count($chan1->getPlayUrls()));
- $chan2 = $channels[1];
- $this->assertEquals('live-2', $chan2->getName());
- $this->assertEquals('live channel 2', $chan2->getDescription());
- $this->assertEquals(1, count($chan2->getPublishUrls()));
- $this->assertEquals(1, count($chan2->getPlayUrls()));
- $list = $this->client->listBucketLiveChannels($this->bucketName, array(
- 'prefix' => 'live-',
- 'marker' => 'live-1',
- 'max-keys' => 10
- ));
- $channels = $list->getChannelList();
- $this->assertEquals(1, count($channels));
- $chan2 = $channels[0];
- $this->assertEquals('live-2', $chan2->getName());
- $this->assertEquals('live channel 2', $chan2->getDescription());
- $this->assertEquals(1, count($chan2->getPublishUrls()));
- $this->assertEquals(1, count($chan2->getPlayUrls()));
- $this->client->deleteBucketLiveChannel($this->bucketName, 'live-1');
- $this->client->deleteBucketLiveChannel($this->bucketName, 'live-2');
- $list = $this->client->listBucketLiveChannels($this->bucketName, array(
- 'prefix' => 'live-'
- ));
- $this->assertEquals(0, count($list->getChannelList()));
- }
- public function testDeleteLiveChannel()
- {
- $channelName = 'live-to-delete';
- $config = new LiveChannelConfig(array(
- 'description' => 'live channel to delete',
- 'type' => 'HLS',
- 'fragDuration' => 10,
- 'fragCount' => 5,
- 'playListName' => 'hello.m3u8'
- ));
- $this->client->putBucketLiveChannel($this->bucketName, $channelName, $config);
- $this->client->deleteBucketLiveChannel($this->bucketName, $channelName);
- $list = $this->client->listBucketLiveChannels($this->bucketName, array(
- 'prefix' => $channelName
- ));
- $this->assertEquals(0, count($list->getChannelList()));
- }
- public function testSignRtmpUrl()
- {
- $channelName = '90475';
- $bucket = 'douyu';
- $now = time();
- $url = $this->client->signRtmpUrl($bucket, $channelName, 900, array(
- 'params' => array(
- 'playlistName' => 'playlist.m3u8'
- )
- ));
- $ret = parse_url($url);
- $this->assertEquals('rtmp', $ret['scheme']);
- parse_str($ret['query'], $query);
- $this->assertTrue(isset($query['OSSAccessKeyId']));
- $this->assertTrue(isset($query['Signature']));
- $this->assertTrue(intval($query['Expires']) - ($now + 900) < 3);
- $this->assertEquals('playlist.m3u8', $query['playlistName']);
- }
- public function testLiveChannelInfo()
- {
- $channelName = 'live-to-put-status';
- $config = new LiveChannelConfig(array(
- 'description' => 'test live channel info',
- 'type' => 'HLS',
- 'fragDuration' => 10,
- 'fragCount' => 5,
- 'playListName' => 'hello.m3u8'
- ));
- $this->client->putBucketLiveChannel($this->bucketName, $channelName, $config);
- $info = $this->client->getLiveChannelInfo($this->bucketName, $channelName);
- $this->assertEquals('test live channel info', $info->getDescription());
- $this->assertEquals('enabled', $info->getStatus());
- $this->assertEquals('HLS', $info->getType());
- $this->assertEquals(10, $info->getFragDuration());
- $this->assertEquals(5, $info->getFragCount());
- $this->assertEquals('playlist.m3u8', $info->getPlayListName());
- $this->client->deleteBucketLiveChannel($this->bucketName, $channelName);
- $list = $this->client->listBucketLiveChannels($this->bucketName, array(
- 'prefix' => $channelName
- ));
- $this->assertEquals(0, count($list->getChannelList()));
- }
- public function testPutLiveChannelStatus()
- {
- $channelName = 'live-to-put-status';
- $config = new LiveChannelConfig(array(
- 'description' => 'test live channel info',
- 'type' => 'HLS',
- 'fragDuration' => 10,
- 'fragCount' => 5,
- 'playListName' => 'hello.m3u8'
- ));
- $this->client->putBucketLiveChannel($this->bucketName, $channelName, $config);
-
- $info = $this->client->getLiveChannelInfo($this->bucketName, $channelName);
- $this->assertEquals('test live channel info', $info->getDescription());
- $this->assertEquals('enabled', $info->getStatus());
- $this->assertEquals('HLS', $info->getType());
- $this->assertEquals(10, $info->getFragDuration());
- $this->assertEquals(5, $info->getFragCount());
- $this->assertEquals('playlist.m3u8', $info->getPlayListName());
- $status = $this->client->getLiveChannelStatus($this->bucketName, $channelName);
- $this->assertEquals('Idle', $status->getStatus());
- $resp = $this->client->putLiveChannelStatus($this->bucketName, $channelName, "disabled");
- $info = $this->client->getLiveChannelInfo($this->bucketName, $channelName);
- $this->assertEquals('test live channel info', $info->getDescription());
- $this->assertEquals('disabled', $info->getStatus());
- $this->assertEquals('HLS', $info->getType());
- $this->assertEquals(10, $info->getFragDuration());
- $this->assertEquals(5, $info->getFragCount());
- $this->assertEquals('playlist.m3u8', $info->getPlayListName());
- $status = $this->client->getLiveChannelStatus($this->bucketName, $channelName);
- //getLiveChannelInfo
- $this->assertEquals('Disabled', $status->getStatus());
- $this->client->deleteBucketLiveChannel($this->bucketName, $channelName);
- $list = $this->client->listBucketLiveChannels($this->bucketName, array(
- 'prefix' => $channelName
- ));
- $this->assertEquals(0, count($list->getChannelList()));
- }
- public function testLiveChannelHistory()
- {
- $channelName = 'live-test-history';
- $config = new LiveChannelConfig(array(
- 'description' => 'test live channel info',
- 'type' => 'HLS',
- 'fragDuration' => 10,
- 'fragCount' => 5,
- 'playListName' => 'hello.m3u8'
- ));
- $this->client->putBucketLiveChannel($this->bucketName, $channelName, $config);
-
- $history = $this->client->getLiveChannelHistory($this->bucketName, $channelName);
- $this->assertEquals(0, count($history->getLiveRecordList()));
- }
- }
|