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 }