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

     1  //go:build integration
     2  // +build integration
     3  
     4  package storage
     5  
     6  import (
     7  	"context"
     8  	"fmt"
     9  	"math/rand"
    10  	"os"
    11  	"sync"
    12  	"testing"
    13  	"time"
    14  )
    15  
    16  func TestWorkerCopy(t *testing.T) {
    17  	wg := sync.WaitGroup{}
    18  	var initOnce sync.Once
    19  	workers := 10
    20  	var tasks chan func()
    21  	initOnce.Do(func() {
    22  		tasks = make(chan func(), workers)
    23  		for i := 0; i < workers; i++ {
    24  			go worker(tasks)
    25  		}
    26  	})
    27  
    28  	m := NewBucketManager(mac, nil)
    29  
    30  	for i := 0; i < 100; i++ {
    31  		wg.Add(1)
    32  		tasks <- func() {
    33  			defer wg.Done()
    34  			err := m.Copy(testBucket, "qiniu.png", testBucket, fmt.Sprintf("test_%d", i), true)
    35  			t.Log(err)
    36  		}
    37  	}
    38  	wg.Wait()
    39  }
    40  
    41  func TestWorkerUpload(t *testing.T) {
    42  	// prepare file for test uploading
    43  	testLocalFile, err := os.CreateTemp("", "TestWorkerUpload")
    44  	if err != nil {
    45  		t.Fatalf("os.CreateTemp file failed, err: %v", err)
    46  	}
    47  	defer os.Remove(testLocalFile.Name())
    48  
    49  	wg := sync.WaitGroup{}
    50  	var initOnce sync.Once
    51  	workers := 10
    52  	var tasks chan func()
    53  	initOnce.Do(func() {
    54  		tasks = make(chan func(), workers)
    55  		for i := 0; i < workers; i++ {
    56  			go worker(tasks)
    57  		}
    58  	})
    59  
    60  	uploader := NewResumeUploader(nil)
    61  	ctx := context.Background()
    62  
    63  	for i := 0; i < 20; i++ {
    64  		wg.Add(1)
    65  
    66  		tasks <- func() {
    67  			defer wg.Done()
    68  
    69  			r := rand.New(rand.NewSource(time.Now().UnixNano()))
    70  			testKey := fmt.Sprintf("testPutFileKey_%d", r.Int())
    71  			t.Logf("start to upload %s ...", testKey)
    72  
    73  			var putRet PutRet
    74  			putPolicy := PutPolicy{
    75  				Scope:           testBucket + ":" + testKey,
    76  				DeleteAfterDays: 7,
    77  			}
    78  			upToken := putPolicy.UploadToken(mac)
    79  			err := uploader.PutFile(ctx, &putRet, upToken, testKey, testLocalFile.Name(), nil)
    80  			if err != nil {
    81  				t.Errorf("TestWorkerUpload error, %s", err)
    82  			}
    83  
    84  			t.Logf("upload success, key: %s, hash:%s", putRet.Key, putRet.Hash)
    85  		}
    86  	}
    87  
    88  	wg.Wait()
    89  }