github.com/qiniu/go-sdk/v7@v7.27.0/qvs/stream_test.go (about)

     1  //go:build integration
     2  // +build integration
     3  
     4  package qvs
     5  
     6  import (
     7  	"encoding/json"
     8  	"fmt"
     9  	"strings"
    10  	"testing"
    11  )
    12  
    13  func TestStreamCRUD(t *testing.T) {
    14  	if skipTest() {
    15  		t.SkipNow()
    16  	}
    17  	c := getTestManager()
    18  
    19  	ns := &NameSpace{
    20  		Name:        "testNamespace",
    21  		AccessType:  "rtmp",
    22  		RTMPURLType: 1,
    23  		Domains:     []string{"qiniu1.com"},
    24  	}
    25  	ns1, err := c.AddNamespace(ns)
    26  	noError(t, err)
    27  
    28  	stream := &Stream{
    29  		StreamID: "test001",
    30  	}
    31  	_, err = c.AddStream(ns1.ID, stream)
    32  	noError(t, err)
    33  
    34  	stream2, err := c.QueryStream(ns1.ID, "test001")
    35  	noError(t, err)
    36  	shouldBeEqual(t, stream.StreamID, stream2.StreamID)
    37  
    38  	ops := []PatchOperation{
    39  		{
    40  			Op:    "replace",
    41  			Key:   "desc",
    42  			Value: "test",
    43  		},
    44  	}
    45  	stream3, err := c.UpdateStream(ns1.ID, stream.StreamID, ops)
    46  	noError(t, err)
    47  	shouldBeEqual(t, stream3.StreamID, stream2.StreamID)
    48  	shouldBeEqual(t, stream3.Desc, "test")
    49  
    50  	stream4 := &Stream{
    51  		StreamID: "test002",
    52  	}
    53  	_, err = c.AddStream(ns1.ID, stream4)
    54  	noError(t, err)
    55  
    56  	stream5 := &Stream{
    57  		StreamID: "test003",
    58  	}
    59  	_, err = c.AddStream(ns1.ID, stream5)
    60  	noError(t, err)
    61  
    62  	streams, total, err := c.ListStream(ns1.ID, 0, 2, "", "", 0)
    63  	noError(t, err)
    64  	shouldBeEqual(t, int64(3), total)
    65  	shouldBeEqual(t, 2, len(streams))
    66  
    67  	streams, total, err = c.ListStream(ns1.ID, 2, 2, "", "", 0)
    68  	noError(t, err)
    69  	shouldBeEqual(t, int64(3), total)
    70  	shouldBeEqual(t, 1, len(streams))
    71  
    72  	err = c.DisableStream(ns1.ID, stream.StreamID)
    73  	noError(t, err)
    74  	ret, err := c.QueryStream(ns1.ID, stream.StreamID)
    75  	noError(t, err)
    76  	shouldBeEqual(t, true, ret.Disabled)
    77  
    78  	err = c.EnableStream(ns1.ID, stream.StreamID)
    79  	noError(t, err)
    80  	ret, err = c.QueryStream(ns1.ID, stream.StreamID)
    81  	noError(t, err)
    82  	shouldBeEqual(t, false, ret.Disabled)
    83  
    84  	err = c.StopStream(ns1.ID, stream.StreamID)
    85  	fmt.Println(err)
    86  
    87  	c.DeleteStream(ns1.ID, "test001")
    88  	c.DeleteStream(ns1.ID, "test002")
    89  	c.DeleteStream(ns1.ID, "test003")
    90  
    91  	c.DeleteNamespace(ns1.ID)
    92  }
    93  
    94  func TestDynamicPublishPlayURL(t *testing.T) {
    95  	if skipTest() {
    96  		t.SkipNow()
    97  	}
    98  	c := getTestManager()
    99  
   100  	ns := &NameSpace{
   101  		Name:        "testNamespace",
   102  		AccessType:  "rtmp",
   103  		RTMPURLType: 2,
   104  	}
   105  	ns1, err := c.AddNamespace(ns)
   106  	noError(t, err)
   107  
   108  	ret, err := c.DynamicPublishPlayURL(ns1.ID, "1", &DynamicLiveRoute{PublishIP: "127.0.0.1", PlayIP: "127.0.0.1", UrlExpireSec: 0})
   109  	fmt.Println(err, ret)
   110  
   111  	err = c.DeleteNamespace(ns1.ID)
   112  	noError(t, err)
   113  }
   114  
   115  func TestStaticPublishPlayURL(t *testing.T) {
   116  	if skipTest() {
   117  		t.SkipNow()
   118  	}
   119  	c := getTestManager()
   120  
   121  	ns := &NameSpace{
   122  		Name:        "testNamespace",
   123  		AccessType:  "rtmp",
   124  		RTMPURLType: 1,
   125  		Domains:     []string{"qiniu1.com"},
   126  	}
   127  	ns1, err := c.AddNamespace(ns)
   128  	noError(t, err)
   129  
   130  	ret, err := c.StaticPublishPlayURL(ns1.ID, "1", &StaticLiveRoute{Domain: "qvs-publish.qiniu1.com", DomainType: DomainPublishRTMP})
   131  	fmt.Println(err, ret)
   132  
   133  	ret, err = c.StaticPublishPlayURL(ns1.ID, "1", &StaticLiveRoute{Domain: "qvs-live-hdl.qiniu1.com", DomainType: DomainLiveHDL})
   134  	fmt.Println(err, ret)
   135  
   136  	err = c.DeleteNamespace(ns1.ID)
   137  	noError(t, err)
   138  }
   139  
   140  func TestQueryStreamRecordHistories(t *testing.T) {
   141  	if skipTest() {
   142  		t.SkipNow()
   143  	}
   144  	c := getTestManager()
   145  
   146  	items, _, err := c.QueryStreamRecordHistories("2xenzw5o81ods", "31011500991320000356", 1604851200, 1604894400, "", 0, "flv")
   147  	noError(t, err)
   148  	for _, v := range items {
   149  		fmt.Println(v)
   150  	}
   151  }
   152  
   153  func TestDeleteSnapshots(t *testing.T) {
   154  	if skipTest() {
   155  		t.SkipNow()
   156  	}
   157  	c := getTestManager()
   158  
   159  	res := struct {
   160  		Items []struct {
   161  			Snap string `json:"snap"`
   162  			Time int    `json:"time"`
   163  		} `json:"items"`
   164  		Marker string `json:"marker"`
   165  	}{}
   166  	ret, err := c.StreamsSnapshots("2xenzw5o81ods", "31011500991320000356", 1604988765, 1605002214, 1, 20, "")
   167  	noError(t, err)
   168  	fmt.Println(string(ret))
   169  	err = json.Unmarshal(ret, &res)
   170  	noError(t, err)
   171  	fmt.Println(len(res.Items))
   172  	if len(res.Items) > 0 {
   173  		err = c.DeleteSnapshots("2xenzw5o81ods", "31011500991320000356", []string{res.Items[0].Snap[strings.Index(res.Items[0].Snap, "snapshot"):strings.Index(res.Items[0].Snap, "?")]})
   174  		noError(t, err)
   175  	}
   176  	ret, err = c.StreamsSnapshots("2xenzw5o81ods", "31011500991320000356", 1604988765, 1605002214, 1, 20, "")
   177  	noError(t, err)
   178  	err = json.Unmarshal(ret, &res)
   179  	noError(t, err)
   180  	fmt.Println(len(res.Items))
   181  }