github.com/qiniu/go-sdk/v7@v7.27.0/storage/bucket_get_test.go (about)

     1  //go:build integration
     2  // +build integration
     3  
     4  package storage
     5  
     6  import (
     7  	"io"
     8  	"testing"
     9  	"time"
    10  
    11  	clientv1 "github.com/qiniu/go-sdk/v7/client"
    12  )
    13  
    14  func TestGet(t *testing.T) {
    15  	key := "TestGet_A" + time.Now().String()
    16  
    17  	data := "just test get object!"
    18  	err := putDataByResumableV2(key, []byte(data))
    19  	if err != nil {
    20  		t.Logf("StatWithOption test upload data error, %s", err)
    21  	}
    22  
    23  	bm := NewBucketManager(mac, &Config{})
    24  	resp, err := bm.Get(testBucket, key, &GetObjectInput{
    25  		DownloadDomains: []string{
    26  			testBucketDomain,
    27  		},
    28  		PresignUrl: true,
    29  		Range:      "",
    30  	})
    31  	if err != nil {
    32  		t.Logf("Get test error, %s", err)
    33  	}
    34  
    35  	body, err := io.ReadAll(resp.Body)
    36  	if err != nil {
    37  		t.Logf("Get test read body error, %s", err)
    38  	}
    39  
    40  	if string(body) != data {
    41  		t.Logf("Get test body diff:\n%s \n%s", data, string(body))
    42  	}
    43  
    44  	if len(resp.Metadata) == 0 {
    45  		t.Fatal("Get test Metadata empty")
    46  	}
    47  
    48  	if resp.LastModified.IsZero() {
    49  		t.Fatal("Get test LastModified empty")
    50  	}
    51  
    52  	if len(resp.ETag) == 0 {
    53  		t.Fatal("Get test ETag empty")
    54  	}
    55  
    56  	if len(resp.ContentType) == 0 {
    57  		t.Fatal("Get test ContentType empty")
    58  	}
    59  
    60  	if resp.ContentLength <= 0 {
    61  		t.Fatal("Get test ContentLength empty")
    62  	}
    63  
    64  	// Get With Range
    65  	resp, err = bm.Get(testBucket, key, &GetObjectInput{
    66  		DownloadDomains: []string{},
    67  		PresignUrl:      true,
    68  		Range:           "bytes=2-5",
    69  	})
    70  	if err != nil {
    71  		t.Logf("Get test error, %s", err)
    72  	}
    73  
    74  	defer func() {
    75  		resp.Close()
    76  	}()
    77  
    78  	body, err = io.ReadAll(resp.Body)
    79  	if err != nil {
    80  		t.Logf("Get test read body error, %s", err)
    81  	}
    82  
    83  	if string(body) != "st t" {
    84  		t.Logf("Get test body Range diff:\n%s \nst ", string(body))
    85  	}
    86  }
    87  
    88  func TestGetTrafficLimit(t *testing.T) {
    89  	clientv1.DeepDebugInfo = true
    90  	key := "TestGetTrafficLimit_A" + time.Now().String()
    91  	data := make([]byte, 410*1024)
    92  	err := putDataByResumableV2(key, data)
    93  	if err != nil {
    94  		t.Fatalf("TestGetTrafficLimit test upload data error, %s", err)
    95  	}
    96  
    97  	st := time.Now().UnixMilli()
    98  	bm := NewBucketManager(mac, &Config{})
    99  	resp, err := bm.Get(testBucket, key, &GetObjectInput{
   100  		DownloadDomains: []string{
   101  			testBucketDomain,
   102  		},
   103  		PresignUrl:   true,
   104  		Range:        "",
   105  		TrafficLimit: 819200, // 限速:100KB/s 单位:Kb/s
   106  	})
   107  	if err != nil {
   108  		t.Fatalf("Get test error, %s", err)
   109  	}
   110  
   111  	body, err := io.ReadAll(resp.Body)
   112  	if err != nil || body == nil {
   113  		t.Logf("Get test read body error, %s", err)
   114  	}
   115  
   116  	et := time.Now().UnixMilli()
   117  	duration := et - st
   118  	// 限速后,至少需要 4s
   119  	if duration < 4000 {
   120  		// t.Fatal("TestGetTrafficLimit() error, TrafficLimit invalid")
   121  	}
   122  }