|
|
@@ -102,6 +102,7 @@ func (s *OssProgressSuite) TearDownTest(c *C) {
|
|
|
|
|
|
// OssProgressListener is the progress listener
|
|
|
type OssProgressListener struct {
|
|
|
+ TotalRwBytes int64
|
|
|
}
|
|
|
|
|
|
// ProgressChanged handles progress event
|
|
|
@@ -111,6 +112,7 @@ func (listener *OssProgressListener) ProgressChanged(event *ProgressEvent) {
|
|
|
testLogger.Printf("Transfer Started, ConsumedBytes: %d, TotalBytes %d.\n",
|
|
|
event.ConsumedBytes, event.TotalBytes)
|
|
|
case TransferDataEvent:
|
|
|
+ listener.TotalRwBytes += event.RwBytes
|
|
|
testLogger.Printf("Transfer Data, ConsumedBytes: %d, TotalBytes %d, %d%%.\n",
|
|
|
event.ConsumedBytes, event.TotalBytes, event.ConsumedBytes*100/event.TotalBytes)
|
|
|
case TransferCompletedEvent:
|
|
|
@@ -128,17 +130,24 @@ func (s *OssProgressSuite) TestPutObject(c *C) {
|
|
|
objectName := randStr(8) + ".jpg"
|
|
|
localFile := "../sample/The Go Programming Language.html"
|
|
|
|
|
|
+ fileInfo, err := os.Stat(localFile)
|
|
|
+ c.Assert(err, IsNil)
|
|
|
+
|
|
|
// PutObject
|
|
|
fd, err := os.Open(localFile)
|
|
|
c.Assert(err, IsNil)
|
|
|
defer fd.Close()
|
|
|
|
|
|
- err = s.bucket.PutObject(objectName, fd, Progress(&OssProgressListener{}))
|
|
|
+ progressListener := OssProgressListener{}
|
|
|
+ err = s.bucket.PutObject(objectName, fd, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
// PutObjectFromFile
|
|
|
- err = s.bucket.PutObjectFromFile(objectName, localFile, Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.PutObjectFromFile(objectName, localFile, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
// DoPutObject
|
|
|
fd, err = os.Open(localFile)
|
|
|
@@ -150,13 +159,17 @@ func (s *OssProgressSuite) TestPutObject(c *C) {
|
|
|
Reader: fd,
|
|
|
}
|
|
|
|
|
|
- options := []Option{Progress(&OssProgressListener{})}
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ options := []Option{Progress(&progressListener)}
|
|
|
_, err = s.bucket.DoPutObject(request, options)
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
// PutObject size is 0
|
|
|
- err = s.bucket.PutObject(objectName, strings.NewReader(""), Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.PutObject(objectName, strings.NewReader(""), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, int64(0))
|
|
|
|
|
|
testLogger.Println("OssProgressSuite.TestPutObject")
|
|
|
}
|
|
|
@@ -169,7 +182,8 @@ func (s *OssProgressSuite) TestSignURL(c *C) {
|
|
|
createFile(filePath, content, c)
|
|
|
|
|
|
// Sign URL for put
|
|
|
- str, err := s.bucket.SignURL(objectName, HTTPPut, 60, Progress(&OssProgressListener{}))
|
|
|
+ progressListener := OssProgressListener{}
|
|
|
+ str, err := s.bucket.SignURL(objectName, HTTPPut, 60, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
c.Assert(strings.Contains(str, HTTPParamExpires+"="), Equals, true)
|
|
|
c.Assert(strings.Contains(str, HTTPParamAccessKeyID+"="), Equals, true)
|
|
|
@@ -180,42 +194,52 @@ func (s *OssProgressSuite) TestSignURL(c *C) {
|
|
|
c.Assert(err, IsNil)
|
|
|
defer fd.Close()
|
|
|
|
|
|
- err = s.bucket.PutObjectWithURL(str, fd, Progress(&OssProgressListener{}))
|
|
|
+ err = s.bucket.PutObjectWithURL(str, fd, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, int64(len(content)))
|
|
|
|
|
|
// Put object from file with URL
|
|
|
- err = s.bucket.PutObjectFromFileWithURL(str, filePath, Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.PutObjectFromFileWithURL(str, filePath, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, int64(len(content)))
|
|
|
|
|
|
// DoPutObject
|
|
|
fd, err = os.Open(filePath)
|
|
|
c.Assert(err, IsNil)
|
|
|
defer fd.Close()
|
|
|
|
|
|
- options := []Option{Progress(&OssProgressListener{})}
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ options := []Option{Progress(&progressListener)}
|
|
|
_, err = s.bucket.DoPutObjectWithURL(str, fd, options)
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, int64(len(content)))
|
|
|
|
|
|
// Sign URL for get
|
|
|
- str, err = s.bucket.SignURL(objectName, HTTPGet, 60, Progress(&OssProgressListener{}))
|
|
|
+ str, err = s.bucket.SignURL(objectName, HTTPGet, 60, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
c.Assert(strings.Contains(str, HTTPParamExpires+"="), Equals, true)
|
|
|
c.Assert(strings.Contains(str, HTTPParamAccessKeyID+"="), Equals, true)
|
|
|
c.Assert(strings.Contains(str, HTTPParamSignature+"="), Equals, true)
|
|
|
|
|
|
// Get object with URL
|
|
|
- body, err := s.bucket.GetObjectWithURL(str, Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ body, err := s.bucket.GetObjectWithURL(str, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
str, err = readBody(body)
|
|
|
c.Assert(err, IsNil)
|
|
|
c.Assert(str, Equals, content)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, int64(len(content)))
|
|
|
|
|
|
// Get object to file with URL
|
|
|
- str, err = s.bucket.SignURL(objectName, HTTPGet, 10, Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ str, err = s.bucket.SignURL(objectName, HTTPGet, 10, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
|
|
|
newFile := randStr(10)
|
|
|
- err = s.bucket.GetObjectToFileWithURL(str, newFile, Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.GetObjectToFileWithURL(str, newFile, Progress(&progressListener))
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, int64(len(content)))
|
|
|
c.Assert(err, IsNil)
|
|
|
eq, err := compareFiles(filePath, newFile)
|
|
|
c.Assert(err, IsNil)
|
|
|
@@ -251,14 +275,16 @@ func (s *OssProgressSuite) TestPutObjectNegative(c *C) {
|
|
|
// TestAppendObject
|
|
|
func (s *OssProgressSuite) TestAppendObject(c *C) {
|
|
|
objectName := objectNamePrefix + randStr(8)
|
|
|
- objectValue := "昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。"
|
|
|
+ objectValue := randStr(100)
|
|
|
var val = []byte(objectValue)
|
|
|
var nextPos int64
|
|
|
var midPos = 1 + rand.Intn(len(val)-1)
|
|
|
|
|
|
// AppendObject
|
|
|
- nextPos, err := s.bucket.AppendObject(objectName, bytes.NewReader(val[0:midPos]), nextPos, Progress(&OssProgressListener{}))
|
|
|
+ progressListener := OssProgressListener{}
|
|
|
+ nextPos, err := s.bucket.AppendObject(objectName, bytes.NewReader(val[0:midPos]), nextPos, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, nextPos)
|
|
|
|
|
|
// DoAppendObject
|
|
|
request := &AppendObjectRequest{
|
|
|
@@ -278,6 +304,9 @@ func (s *OssProgressSuite) TestMultipartUpload(c *C) {
|
|
|
objectName := objectNamePrefix + randStr(8)
|
|
|
var fileName = "../sample/BingWallpaper-2015-11-07.jpg"
|
|
|
|
|
|
+ fileInfo, err := os.Stat(fileName)
|
|
|
+ c.Assert(err, IsNil)
|
|
|
+
|
|
|
chunks, err := SplitFileByPartNum(fileName, 3)
|
|
|
c.Assert(err, IsNil)
|
|
|
testLogger.Println("chunks:", chunks)
|
|
|
@@ -287,6 +316,7 @@ func (s *OssProgressSuite) TestMultipartUpload(c *C) {
|
|
|
defer fd.Close()
|
|
|
|
|
|
// Initiate
|
|
|
+ progressListener := OssProgressListener{}
|
|
|
imur, err := s.bucket.InitiateMultipartUpload(objectName)
|
|
|
c.Assert(err, IsNil)
|
|
|
|
|
|
@@ -294,7 +324,7 @@ func (s *OssProgressSuite) TestMultipartUpload(c *C) {
|
|
|
var parts []UploadPart
|
|
|
for _, chunk := range chunks {
|
|
|
fd.Seek(chunk.Offset, os.SEEK_SET)
|
|
|
- part, err := s.bucket.UploadPart(imur, fd, chunk.Size, chunk.Number, Progress(&OssProgressListener{}))
|
|
|
+ part, err := s.bucket.UploadPart(imur, fd, chunk.Size, chunk.Number, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
parts = append(parts, part)
|
|
|
}
|
|
|
@@ -302,6 +332,7 @@ func (s *OssProgressSuite) TestMultipartUpload(c *C) {
|
|
|
// Complete
|
|
|
_, err = s.bucket.CompleteMultipartUpload(imur, parts)
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
err = s.bucket.DeleteObject(objectName)
|
|
|
c.Assert(err, IsNil)
|
|
|
@@ -313,6 +344,8 @@ func (s *OssProgressSuite) TestMultipartUpload(c *C) {
|
|
|
func (s *OssProgressSuite) TestMultipartUploadFromFile(c *C) {
|
|
|
objectName := objectNamePrefix + randStr(8)
|
|
|
var fileName = "../sample/BingWallpaper-2015-11-07.jpg"
|
|
|
+ fileInfo, err := os.Stat(fileName)
|
|
|
+ c.Assert(err, IsNil)
|
|
|
|
|
|
chunks, err := SplitFileByPartNum(fileName, 3)
|
|
|
c.Assert(err, IsNil)
|
|
|
@@ -322,9 +355,10 @@ func (s *OssProgressSuite) TestMultipartUploadFromFile(c *C) {
|
|
|
c.Assert(err, IsNil)
|
|
|
|
|
|
// UploadPart
|
|
|
+ progressListener := OssProgressListener{}
|
|
|
var parts []UploadPart
|
|
|
for _, chunk := range chunks {
|
|
|
- part, err := s.bucket.UploadPartFromFile(imur, fileName, chunk.Offset, chunk.Size, chunk.Number, Progress(&OssProgressListener{}))
|
|
|
+ part, err := s.bucket.UploadPartFromFile(imur, fileName, chunk.Offset, chunk.Size, chunk.Number, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
parts = append(parts, part)
|
|
|
}
|
|
|
@@ -332,6 +366,7 @@ func (s *OssProgressSuite) TestMultipartUploadFromFile(c *C) {
|
|
|
// Complete
|
|
|
_, err = s.bucket.CompleteMultipartUpload(imur, parts)
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
err = s.bucket.DeleteObject(objectName)
|
|
|
c.Assert(err, IsNil)
|
|
|
@@ -345,47 +380,64 @@ func (s *OssProgressSuite) TestGetObject(c *C) {
|
|
|
localFile := "../sample/BingWallpaper-2015-11-07.jpg"
|
|
|
newFile := "newpic-progress-1.jpg"
|
|
|
|
|
|
+ fileInfo, err := os.Stat(localFile)
|
|
|
+ c.Assert(err, IsNil)
|
|
|
+
|
|
|
+ progressListener := OssProgressListener{}
|
|
|
// PutObject
|
|
|
- err := s.bucket.PutObjectFromFile(objectName, localFile, Progress(&OssProgressListener{}))
|
|
|
+ err = s.bucket.PutObjectFromFile(objectName, localFile, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
// GetObject
|
|
|
- body, err := s.bucket.GetObject(objectName, Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ body, err := s.bucket.GetObject(objectName, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
_, err = ioutil.ReadAll(body)
|
|
|
c.Assert(err, IsNil)
|
|
|
body.Close()
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
// GetObjectToFile
|
|
|
- err = s.bucket.GetObjectToFile(objectName, newFile, Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.GetObjectToFile(objectName, newFile, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
// DoGetObject
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
request := &GetObjectRequest{objectName}
|
|
|
- options := []Option{Progress(&OssProgressListener{})}
|
|
|
+ options := []Option{Progress(&progressListener)}
|
|
|
result, err := s.bucket.DoGetObject(request, options)
|
|
|
c.Assert(err, IsNil)
|
|
|
_, err = ioutil.ReadAll(result.Response.Body)
|
|
|
c.Assert(err, IsNil)
|
|
|
result.Response.Body.Close()
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
// GetObject with range
|
|
|
- body, err = s.bucket.GetObject(objectName, Range(1024, 4*1024), Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ body, err = s.bucket.GetObject(objectName, Range(1024, 4*1024), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
- _, err = ioutil.ReadAll(body)
|
|
|
+ text, err := ioutil.ReadAll(body)
|
|
|
c.Assert(err, IsNil)
|
|
|
body.Close()
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, int64(len(text)))
|
|
|
|
|
|
// PutObject size is 0
|
|
|
- err = s.bucket.PutObject(objectName, strings.NewReader(""), Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.PutObject(objectName, strings.NewReader(""), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, int64(0))
|
|
|
|
|
|
// GetObject size is 0
|
|
|
- body, err = s.bucket.GetObject(objectName, Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ body, err = s.bucket.GetObject(objectName, Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
_, err = ioutil.ReadAll(body)
|
|
|
c.Assert(err, IsNil)
|
|
|
body.Close()
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, int64(0))
|
|
|
|
|
|
testLogger.Println("OssProgressSuite.TestGetObject")
|
|
|
}
|
|
|
@@ -425,11 +477,18 @@ func (s *OssProgressSuite) TestUploadFile(c *C) {
|
|
|
objectName := objectNamePrefix + randStr(8)
|
|
|
fileName := "../sample/BingWallpaper-2015-11-07.jpg"
|
|
|
|
|
|
- err := s.bucket.UploadFile(objectName, fileName, 100*1024, Routines(5), Progress(&OssProgressListener{}))
|
|
|
+ fileInfo, err := os.Stat(fileName)
|
|
|
+ c.Assert(err, IsNil)
|
|
|
+
|
|
|
+ progressListener := OssProgressListener{}
|
|
|
+ err = s.bucket.UploadFile(objectName, fileName, 100*1024, Routines(5), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
- err = s.bucket.UploadFile(objectName, fileName, 100*1024, Routines(3), Checkpoint(true, objectName+".cp"), Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.UploadFile(objectName, fileName, 100*1024, Routines(3), Checkpoint(true, objectName+".cp"), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
testLogger.Println("OssProgressSuite.TestUploadFile")
|
|
|
}
|
|
|
@@ -440,18 +499,27 @@ func (s *OssProgressSuite) TestDownloadFile(c *C) {
|
|
|
fileName := "../sample/BingWallpaper-2015-11-07.jpg"
|
|
|
newFile := "down-new-file-progress-2.jpg"
|
|
|
|
|
|
+ fileInfo, err := os.Stat(fileName)
|
|
|
+ c.Assert(err, IsNil)
|
|
|
+
|
|
|
// Upload
|
|
|
- err := s.bucket.UploadFile(objectName, fileName, 100*1024, Routines(3))
|
|
|
+ err = s.bucket.UploadFile(objectName, fileName, 100*1024, Routines(3))
|
|
|
c.Assert(err, IsNil)
|
|
|
|
|
|
- err = s.bucket.DownloadFile(objectName, newFile, 100*1024, Routines(5), Progress(&OssProgressListener{}))
|
|
|
+ progressListener := OssProgressListener{}
|
|
|
+ err = s.bucket.DownloadFile(objectName, newFile, 100*1024, Routines(5), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
- err = s.bucket.DownloadFile(objectName, newFile, 1024*1024, Routines(3), Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.DownloadFile(objectName, newFile, 1024*1024, Routines(3), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
- err = s.bucket.DownloadFile(objectName, newFile, 50*1024, Routines(3), Checkpoint(true, ""), Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.DownloadFile(objectName, newFile, 50*1024, Routines(3), Checkpoint(true, ""), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
testLogger.Println("OssProgressSuite.TestDownloadFile")
|
|
|
}
|
|
|
@@ -462,15 +530,24 @@ func (s *OssProgressSuite) TestCopyFile(c *C) {
|
|
|
destObjectName := srcObjectName + "-copy"
|
|
|
fileName := "../sample/BingWallpaper-2015-11-07.jpg"
|
|
|
|
|
|
+ fileInfo, err := os.Stat(fileName)
|
|
|
+ c.Assert(err, IsNil)
|
|
|
+
|
|
|
// Upload
|
|
|
- err := s.bucket.UploadFile(srcObjectName, fileName, 100*1024, Routines(3))
|
|
|
+ progressListener := OssProgressListener{}
|
|
|
+ err = s.bucket.UploadFile(srcObjectName, fileName, 100*1024, Routines(3), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
- err = s.bucket.CopyFile(bucketName, srcObjectName, destObjectName, 100*1024, Routines(5), Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.CopyFile(bucketName, srcObjectName, destObjectName, 100*1024, Routines(5), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
- err = s.bucket.CopyFile(bucketName, srcObjectName, destObjectName, 1024*100, Routines(3), Checkpoint(true, ""), Progress(&OssProgressListener{}))
|
|
|
+ progressListener.TotalRwBytes = 0
|
|
|
+ err = s.bucket.CopyFile(bucketName, srcObjectName, destObjectName, 1024*100, Routines(3), Checkpoint(true, ""), Progress(&progressListener))
|
|
|
c.Assert(err, IsNil)
|
|
|
+ c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size())
|
|
|
|
|
|
testLogger.Println("OssProgressSuite.TestCopyFile")
|
|
|
}
|