rclone/vendor/github.com/yunify/qingstor-sdk-go/test/upload.go
2017-09-30 15:27:27 +01:00

68 lines
1.2 KiB
Go

package main
import (
"os"
"os/exec"
"errors"
"github.com/DATA-DOG/godog"
"github.com/yunify/qingstor-sdk-go/client/upload"
)
var uploader *upload.Uploader
// UploadFeatureContext provides feature context for upload.
func UploadFeatureContext(s *godog.Suite) {
s.Step("initialize uploader$", initializeUploader)
s.Step("uploader is initialized$", uploaderIsInitialized)
s.Step("upload a large file$", uploadLargeFile)
s.Step("the large file is uploaded$", largeFileIsUploaded)
}
var fd *os.File
func initializeUploader() error {
uploadSetup()
PartSize := 4 * 1024 * 1024
fd, err = os.Open("test_file")
if err != nil {
return err
}
uploader = upload.Init(bucket, PartSize)
return nil
}
func uploaderIsInitialized() error {
if uploader == nil {
return errors.New("uploader not initialized")
}
return nil
}
var objectKey string
func uploadLargeFile() error {
objectKey = "test_multipart_upload"
err := uploader.Upload(fd, objectKey)
if err != nil {
return err
}
return nil
}
func largeFileIsUploaded() error {
defer uploadTearDown()
return nil
}
func uploadSetup() {
exec.Command("dd", "if=/dev/zero", "of=test_file", "bs=1024", "count=20480").Output()
}
func uploadTearDown() {
exec.Command("rm", "", "test_file").Output()
}