| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 | 
							- <?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;
 
-     protected function setUp(): void
 
-     {
 
-         $this->client = Common::getOssClient();
 
-         $this->bucketName = 'php-sdk-test-rtmp-bucket-name-' . strval(rand(0, 10000));
 
-         $this->client->createBucket($this->bucketName);
 
-         Common::waitMetaSync();
 
-     }
 
-     protected function tearDown(): void
 
-     {
 
-     ////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 testGetgenPreSignedRtmpUrlVsSignedRtmpUrl()
 
-     {
 
-         $channelName = '90475';
 
-         $bucket = 'douyu';
 
-         $url1 = '245';
 
-         $url2 = '123';
 
-         $expiration = 0;
 
-         do {
 
-             $begin = time();
 
-             $expiration = time() + 900;
 
-             $url1 = $this->client->generatePresignedRtmpUrl($bucket, $channelName, $expiration, array(
 
-                 'params' => array(
 
-                     'playlistName' => 'playlist.m3u8'
 
-                 )
 
-             ));
 
-             $url2 = $this->client->signRtmpUrl($bucket, $channelName, 900, array(
 
-                 'params' => array(
 
-                     'playlistName' => 'playlist.m3u8'
 
-                 )
 
-             ));
 
-             $end = time();
 
-             if ($begin == $end)
 
-                 break;
 
-             usleep(500000);
 
-         } while (true);
 
-         $this->assertEquals($url1, $url1);
 
-         $this->assertTrue(strpos($url1, 'Expires='.$expiration) !== false);
 
-     }
 
-     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()));
 
-     }
 
- }
 
 
  |