github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/oss/progress_test.go (about) 1 // bucket test 2 3 package oss 4 5 import ( 6 "bytes" 7 "io/ioutil" 8 "math/rand" 9 "os" 10 "strings" 11 "sync/atomic" 12 13 . "gopkg.in/check.v1" 14 ) 15 16 type OssProgressSuite struct { 17 cloudBoxControlClient *Client 18 client *Client 19 bucket *Bucket 20 } 21 22 var _ = Suite(&OssProgressSuite{}) 23 24 // SetUpSuite runs once when the suite starts running 25 func (s *OssProgressSuite) SetUpSuite(c *C) { 26 bucketName = bucketNamePrefix + RandLowStr(6) 27 if cloudboxControlEndpoint == "" { 28 client, err := New(endpoint, accessID, accessKey) 29 c.Assert(err, IsNil) 30 s.client = client 31 32 s.client.CreateBucket(bucketName) 33 34 bucket, err := s.client.Bucket(bucketName) 35 c.Assert(err, IsNil) 36 s.bucket = bucket 37 } else { 38 client, err := New(cloudboxEndpoint, accessID, accessKey) 39 c.Assert(err, IsNil) 40 s.client = client 41 42 controlClient, err := New(cloudboxControlEndpoint, accessID, accessKey) 43 c.Assert(err, IsNil) 44 s.cloudBoxControlClient = controlClient 45 controlClient.CreateBucket(bucketName) 46 47 bucket, err := s.client.Bucket(bucketName) 48 c.Assert(err, IsNil) 49 s.bucket = bucket 50 } 51 52 testLogger.Println("test progress started") 53 } 54 55 // TearDownSuite runs before each test or benchmark starts running 56 func (s *OssProgressSuite) TearDownSuite(c *C) { 57 // Abort multipart uploads 58 keyMarker := KeyMarker("") 59 uploadIDMarker := UploadIDMarker("") 60 for { 61 lmu, err := s.bucket.ListMultipartUploads(keyMarker, uploadIDMarker) 62 c.Assert(err, IsNil) 63 for _, upload := range lmu.Uploads { 64 imur := InitiateMultipartUploadResult{Bucket: bucketName, Key: upload.Key, UploadID: upload.UploadID} 65 err = s.bucket.AbortMultipartUpload(imur) 66 c.Assert(err, IsNil) 67 } 68 keyMarker = KeyMarker(lmu.NextKeyMarker) 69 uploadIDMarker = UploadIDMarker(lmu.NextUploadIDMarker) 70 if !lmu.IsTruncated { 71 break 72 } 73 } 74 75 // Delete objects 76 marker := Marker("") 77 for { 78 lor, err := s.bucket.ListObjects(marker) 79 c.Assert(err, IsNil) 80 for _, object := range lor.Objects { 81 err = s.bucket.DeleteObject(object.Key) 82 c.Assert(err, IsNil) 83 } 84 marker = Marker(lor.NextMarker) 85 if !lor.IsTruncated { 86 break 87 } 88 } 89 90 // Delete bucket 91 if s.cloudBoxControlClient != nil { 92 err := s.cloudBoxControlClient.DeleteBucket(s.bucket.BucketName) 93 c.Assert(err, IsNil) 94 } else { 95 err := s.client.DeleteBucket(s.bucket.BucketName) 96 c.Assert(err, IsNil) 97 } 98 99 testLogger.Println("test progress completed") 100 } 101 102 // SetUpTest runs after each test or benchmark runs 103 func (s *OssProgressSuite) SetUpTest(c *C) { 104 err := removeTempFiles("../oss", ".jpg") 105 c.Assert(err, IsNil) 106 107 err = removeTempFiles("../oss", ".txt") 108 c.Assert(err, IsNil) 109 110 err = removeTempFiles("../oss", ".html") 111 c.Assert(err, IsNil) 112 } 113 114 // TearDownTest runs once after all tests or benchmarks have finished running 115 func (s *OssProgressSuite) TearDownTest(c *C) { 116 err := removeTempFiles("../oss", ".jpg") 117 c.Assert(err, IsNil) 118 119 err = removeTempFiles("../oss", ".txt") 120 c.Assert(err, IsNil) 121 122 err = removeTempFiles("../oss", ".html") 123 c.Assert(err, IsNil) 124 } 125 126 // OssProgressListener is the progress listener 127 type OssProgressListener struct { 128 TotalRwBytes int64 129 } 130 131 // ProgressChanged handles progress event 132 func (listener *OssProgressListener) ProgressChanged(event *ProgressEvent) { 133 switch event.EventType { 134 case TransferStartedEvent: 135 testLogger.Printf("Transfer Started, ConsumedBytes: %d, TotalBytes %d.\n", 136 event.ConsumedBytes, event.TotalBytes) 137 case TransferDataEvent: 138 atomic.AddInt64(&listener.TotalRwBytes, event.RwBytes) 139 testLogger.Printf("Transfer Data, ConsumedBytes: %d, TotalBytes %d, %d%%.\n", 140 event.ConsumedBytes, event.TotalBytes, event.ConsumedBytes*100/event.TotalBytes) 141 case TransferCompletedEvent: 142 testLogger.Printf("Transfer Completed, ConsumedBytes: %d, TotalBytes %d.\n", 143 event.ConsumedBytes, event.TotalBytes) 144 case TransferFailedEvent: 145 testLogger.Printf("Transfer Failed, ConsumedBytes: %d, TotalBytes %d.\n", 146 event.ConsumedBytes, event.TotalBytes) 147 default: 148 } 149 } 150 151 // TestPutObject 152 func (s *OssProgressSuite) TestPutObject(c *C) { 153 objectName := RandStr(8) + ".jpg" 154 localFile := "../sample/The Go Programming Language.html" 155 156 fileInfo, err := os.Stat(localFile) 157 c.Assert(err, IsNil) 158 159 // PutObject 160 fd, err := os.Open(localFile) 161 c.Assert(err, IsNil) 162 defer fd.Close() 163 164 progressListener := OssProgressListener{} 165 err = s.bucket.PutObject(objectName, fd, Progress(&progressListener)) 166 c.Assert(err, IsNil) 167 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 168 169 // PutObjectFromFile 170 progressListener.TotalRwBytes = 0 171 err = s.bucket.PutObjectFromFile(objectName, localFile, Progress(&progressListener)) 172 c.Assert(err, IsNil) 173 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 174 175 // DoPutObject 176 fd, err = os.Open(localFile) 177 c.Assert(err, IsNil) 178 defer fd.Close() 179 180 request := &PutObjectRequest{ 181 ObjectKey: objectName, 182 Reader: fd, 183 } 184 185 progressListener.TotalRwBytes = 0 186 options := []Option{Progress(&progressListener)} 187 _, err = s.bucket.DoPutObject(request, options) 188 c.Assert(err, IsNil) 189 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 190 191 // PutObject size is 0 192 progressListener.TotalRwBytes = 0 193 err = s.bucket.PutObject(objectName, strings.NewReader(""), Progress(&progressListener)) 194 c.Assert(err, IsNil) 195 c.Assert(progressListener.TotalRwBytes, Equals, int64(0)) 196 197 testLogger.Println("OssProgressSuite.TestPutObject") 198 } 199 200 // TestSignURL 201 func (s *OssProgressSuite) SignURLTestFunc(c *C, authVersion AuthVersionType, extraHeaders []string) { 202 objectName := objectNamePrefix + RandStr(8) 203 filePath := RandLowStr(10) 204 content := RandStr(20) 205 CreateFile(filePath, content, c) 206 207 oldType := s.bucket.Client.Config.AuthVersion 208 oldHeaders := s.bucket.Client.Config.AdditionalHeaders 209 s.bucket.Client.Config.AuthVersion = authVersion 210 s.bucket.Client.Config.AdditionalHeaders = extraHeaders 211 212 // Sign URL for put 213 progressListener := OssProgressListener{} 214 str, err := s.bucket.SignURL(objectName, HTTPPut, 60, Progress(&progressListener)) 215 c.Assert(err, IsNil) 216 if s.bucket.Client.Config.AuthVersion == AuthV1 { 217 c.Assert(strings.Contains(str, HTTPParamExpires+"="), Equals, true) 218 c.Assert(strings.Contains(str, HTTPParamAccessKeyID+"="), Equals, true) 219 c.Assert(strings.Contains(str, HTTPParamSignature+"="), Equals, true) 220 } else { 221 c.Assert(strings.Contains(str, HTTPParamSignatureVersion+"=OSS2"), Equals, true) 222 c.Assert(strings.Contains(str, HTTPParamExpiresV2+"="), Equals, true) 223 c.Assert(strings.Contains(str, HTTPParamAccessKeyIDV2+"="), Equals, true) 224 c.Assert(strings.Contains(str, HTTPParamSignatureV2+"="), Equals, true) 225 } 226 227 // Put object with URL 228 fd, err := os.Open(filePath) 229 c.Assert(err, IsNil) 230 defer fd.Close() 231 232 err = s.bucket.PutObjectWithURL(str, fd, Progress(&progressListener)) 233 c.Assert(err, IsNil) 234 c.Assert(progressListener.TotalRwBytes, Equals, int64(len(content))) 235 236 // Put object from file with URL 237 progressListener.TotalRwBytes = 0 238 err = s.bucket.PutObjectFromFileWithURL(str, filePath, Progress(&progressListener)) 239 c.Assert(err, IsNil) 240 c.Assert(progressListener.TotalRwBytes, Equals, int64(len(content))) 241 242 // DoPutObject 243 fd, err = os.Open(filePath) 244 c.Assert(err, IsNil) 245 defer fd.Close() 246 247 progressListener.TotalRwBytes = 0 248 options := []Option{Progress(&progressListener)} 249 _, err = s.bucket.DoPutObjectWithURL(str, fd, options) 250 c.Assert(err, IsNil) 251 c.Assert(progressListener.TotalRwBytes, Equals, int64(len(content))) 252 253 // Sign URL for get 254 str, err = s.bucket.SignURL(objectName, HTTPGet, 60, Progress(&progressListener)) 255 c.Assert(err, IsNil) 256 if s.bucket.Client.Config.AuthVersion == AuthV1 { 257 c.Assert(strings.Contains(str, HTTPParamExpires+"="), Equals, true) 258 c.Assert(strings.Contains(str, HTTPParamAccessKeyID+"="), Equals, true) 259 c.Assert(strings.Contains(str, HTTPParamSignature+"="), Equals, true) 260 } else { 261 c.Assert(strings.Contains(str, HTTPParamSignatureVersion+"=OSS2"), Equals, true) 262 c.Assert(strings.Contains(str, HTTPParamExpiresV2+"="), Equals, true) 263 c.Assert(strings.Contains(str, HTTPParamAccessKeyIDV2+"="), Equals, true) 264 c.Assert(strings.Contains(str, HTTPParamSignatureV2+"="), Equals, true) 265 } 266 267 // Get object with URL 268 progressListener.TotalRwBytes = 0 269 body, err := s.bucket.GetObjectWithURL(str, Progress(&progressListener)) 270 c.Assert(err, IsNil) 271 str, err = readBody(body) 272 c.Assert(err, IsNil) 273 c.Assert(str, Equals, content) 274 c.Assert(progressListener.TotalRwBytes, Equals, int64(len(content))) 275 276 // Get object to file with URL 277 progressListener.TotalRwBytes = 0 278 str, err = s.bucket.SignURL(objectName, HTTPGet, 10, Progress(&progressListener)) 279 c.Assert(err, IsNil) 280 281 newFile := RandStr(10) 282 progressListener.TotalRwBytes = 0 283 err = s.bucket.GetObjectToFileWithURL(str, newFile, Progress(&progressListener)) 284 c.Assert(progressListener.TotalRwBytes, Equals, int64(len(content))) 285 c.Assert(err, IsNil) 286 eq, err := compareFiles(filePath, newFile) 287 c.Assert(err, IsNil) 288 c.Assert(eq, Equals, true) 289 290 os.Remove(filePath) 291 os.Remove(newFile) 292 293 err = s.bucket.DeleteObject(objectName) 294 c.Assert(err, IsNil) 295 296 testLogger.Println("OssProgressSuite.TestSignURL") 297 298 s.bucket.Client.Config.AuthVersion = oldType 299 s.bucket.Client.Config.AdditionalHeaders = oldHeaders 300 } 301 302 func (s *OssProgressSuite) TestSignURL(c *C) { 303 s.SignURLTestFunc(c, AuthV1, []string{}) 304 s.SignURLTestFunc(c, AuthV2, []string{}) 305 s.SignURLTestFunc(c, AuthV2, []string{"host", "range", "user-agent"}) 306 } 307 308 func (s *OssProgressSuite) TestPutObjectNegative(c *C) { 309 objectName := objectNamePrefix + RandStr(8) 310 localFile := "../sample/The Go Programming Language.html" 311 312 // Invalid endpoint 313 client, err := New("http://oss-cn-taikang.aliyuncs.com", accessID, accessKey) 314 c.Assert(err, IsNil) 315 316 bucket, err := client.Bucket(bucketName) 317 c.Assert(err, IsNil) 318 319 err = bucket.PutObjectFromFile(objectName, localFile, Progress(&OssProgressListener{})) 320 testLogger.Println(err) 321 c.Assert(err, NotNil) 322 323 testLogger.Println("OssProgressSuite.TestPutObjectNegative") 324 } 325 326 // TestAppendObject 327 func (s *OssProgressSuite) TestAppendObject(c *C) { 328 objectName := objectNamePrefix + RandStr(8) 329 objectValue := RandStr(100) 330 var val = []byte(objectValue) 331 var nextPos int64 332 var midPos = 1 + rand.Intn(len(val)-1) 333 334 // AppendObject 335 progressListener := OssProgressListener{} 336 nextPos, err := s.bucket.AppendObject(objectName, bytes.NewReader(val[0:midPos]), nextPos, Progress(&progressListener)) 337 c.Assert(err, IsNil) 338 c.Assert(progressListener.TotalRwBytes, Equals, nextPos) 339 340 // DoAppendObject 341 request := &AppendObjectRequest{ 342 ObjectKey: objectName, 343 Reader: bytes.NewReader(val[midPos:]), 344 Position: nextPos, 345 } 346 options := []Option{Progress(&OssProgressListener{})} 347 _, err = s.bucket.DoAppendObject(request, options) 348 c.Assert(err, IsNil) 349 350 testLogger.Println("OssProgressSuite.TestAppendObject") 351 } 352 353 // TestMultipartUpload 354 func (s *OssProgressSuite) TestMultipartUpload(c *C) { 355 objectName := objectNamePrefix + RandStr(8) 356 var fileName = "../sample/BingWallpaper-2015-11-07.jpg" 357 358 fileInfo, err := os.Stat(fileName) 359 c.Assert(err, IsNil) 360 361 chunks, err := SplitFileByPartNum(fileName, 3) 362 c.Assert(err, IsNil) 363 testLogger.Println("chunks:", chunks) 364 365 fd, err := os.Open(fileName) 366 c.Assert(err, IsNil) 367 defer fd.Close() 368 369 // Initiate 370 progressListener := OssProgressListener{} 371 imur, err := s.bucket.InitiateMultipartUpload(objectName) 372 c.Assert(err, IsNil) 373 374 // UploadPart 375 var parts []UploadPart 376 for _, chunk := range chunks { 377 fd.Seek(chunk.Offset, os.SEEK_SET) 378 part, err := s.bucket.UploadPart(imur, fd, chunk.Size, chunk.Number, Progress(&progressListener)) 379 c.Assert(err, IsNil) 380 parts = append(parts, part) 381 } 382 383 // Complete 384 _, err = s.bucket.CompleteMultipartUpload(imur, parts) 385 c.Assert(err, IsNil) 386 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 387 388 err = s.bucket.DeleteObject(objectName) 389 c.Assert(err, IsNil) 390 391 testLogger.Println("OssProgressSuite.TestMultipartUpload") 392 } 393 394 // TestMultipartUploadFromFile 395 func (s *OssProgressSuite) TestMultipartUploadFromFile(c *C) { 396 objectName := objectNamePrefix + RandStr(8) 397 var fileName = "../sample/BingWallpaper-2015-11-07.jpg" 398 fileInfo, err := os.Stat(fileName) 399 c.Assert(err, IsNil) 400 401 chunks, err := SplitFileByPartNum(fileName, 3) 402 c.Assert(err, IsNil) 403 404 // Initiate 405 imur, err := s.bucket.InitiateMultipartUpload(objectName) 406 c.Assert(err, IsNil) 407 408 // UploadPart 409 progressListener := OssProgressListener{} 410 var parts []UploadPart 411 for _, chunk := range chunks { 412 part, err := s.bucket.UploadPartFromFile(imur, fileName, chunk.Offset, chunk.Size, chunk.Number, Progress(&progressListener)) 413 c.Assert(err, IsNil) 414 parts = append(parts, part) 415 } 416 417 // Complete 418 _, err = s.bucket.CompleteMultipartUpload(imur, parts) 419 c.Assert(err, IsNil) 420 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 421 422 err = s.bucket.DeleteObject(objectName) 423 c.Assert(err, IsNil) 424 425 testLogger.Println("OssProgressSuite.TestMultipartUploadFromFile") 426 } 427 428 // TestGetObject 429 func (s *OssProgressSuite) TestGetObject(c *C) { 430 objectName := objectNamePrefix + RandStr(8) 431 localFile := "../sample/BingWallpaper-2015-11-07.jpg" 432 newFile := "newpic-progress-1.jpg" 433 434 fileInfo, err := os.Stat(localFile) 435 c.Assert(err, IsNil) 436 437 progressListener := OssProgressListener{} 438 // PutObject 439 err = s.bucket.PutObjectFromFile(objectName, localFile, Progress(&progressListener)) 440 c.Assert(err, IsNil) 441 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 442 443 // GetObject 444 progressListener.TotalRwBytes = 0 445 body, err := s.bucket.GetObject(objectName, Progress(&progressListener)) 446 c.Assert(err, IsNil) 447 _, err = ioutil.ReadAll(body) 448 c.Assert(err, IsNil) 449 body.Close() 450 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 451 452 // GetObjectToFile 453 progressListener.TotalRwBytes = 0 454 err = s.bucket.GetObjectToFile(objectName, newFile, Progress(&progressListener)) 455 c.Assert(err, IsNil) 456 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 457 458 // DoGetObject 459 progressListener.TotalRwBytes = 0 460 request := &GetObjectRequest{objectName} 461 options := []Option{Progress(&progressListener)} 462 result, err := s.bucket.DoGetObject(request, options) 463 c.Assert(err, IsNil) 464 _, err = ioutil.ReadAll(result.Response.Body) 465 c.Assert(err, IsNil) 466 result.Response.Body.Close() 467 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 468 469 // GetObject with range 470 progressListener.TotalRwBytes = 0 471 body, err = s.bucket.GetObject(objectName, Range(1024, 4*1024), Progress(&progressListener)) 472 c.Assert(err, IsNil) 473 text, err := ioutil.ReadAll(body) 474 c.Assert(err, IsNil) 475 body.Close() 476 c.Assert(progressListener.TotalRwBytes, Equals, int64(len(text))) 477 478 // PutObject size is 0 479 progressListener.TotalRwBytes = 0 480 err = s.bucket.PutObject(objectName, strings.NewReader(""), Progress(&progressListener)) 481 c.Assert(err, IsNil) 482 c.Assert(progressListener.TotalRwBytes, Equals, int64(0)) 483 484 // GetObject size is 0 485 progressListener.TotalRwBytes = 0 486 body, err = s.bucket.GetObject(objectName, Progress(&progressListener)) 487 c.Assert(err, IsNil) 488 _, err = ioutil.ReadAll(body) 489 c.Assert(err, IsNil) 490 body.Close() 491 c.Assert(progressListener.TotalRwBytes, Equals, int64(0)) 492 493 testLogger.Println("OssProgressSuite.TestGetObject") 494 } 495 496 // TestGetObjectNegative 497 func (s *OssProgressSuite) TestGetObjectNegative(c *C) { 498 objectName := objectNamePrefix + RandStr(8) 499 localFile := "../sample/BingWallpaper-2015-11-07.jpg" 500 501 // PutObject 502 err := s.bucket.PutObjectFromFile(objectName, localFile) 503 c.Assert(err, IsNil) 504 505 // GetObject 506 body, err := s.bucket.GetObject(objectName, Progress(&OssProgressListener{})) 507 c.Assert(err, IsNil) 508 509 buf := make([]byte, 4*1024) 510 n, err := body.Read(buf) 511 c.Assert(err, IsNil) 512 513 //time.Sleep(70 * time.Second) TODO 514 515 // Read should fail 516 for err == nil { 517 n, err = body.Read(buf) 518 n += n 519 } 520 c.Assert(err, NotNil) 521 body.Close() 522 523 testLogger.Println("OssProgressSuite.TestGetObjectNegative") 524 } 525 526 // TestUploadFile 527 func (s *OssProgressSuite) TestUploadFile(c *C) { 528 objectName := objectNamePrefix + RandStr(8) 529 fileName := "../sample/BingWallpaper-2015-11-07.jpg" 530 531 fileInfo, err := os.Stat(fileName) 532 c.Assert(err, IsNil) 533 534 progressListener := OssProgressListener{} 535 err = s.bucket.UploadFile(objectName, fileName, 100*1024, Routines(5), Progress(&progressListener)) 536 c.Assert(err, IsNil) 537 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 538 539 progressListener.TotalRwBytes = 0 540 err = s.bucket.UploadFile(objectName, fileName, 100*1024, Routines(3), Checkpoint(true, objectName+".cp"), Progress(&progressListener)) 541 c.Assert(err, IsNil) 542 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 543 544 testLogger.Println("OssProgressSuite.TestUploadFile") 545 } 546 547 // TestDownloadFile 548 func (s *OssProgressSuite) TestDownloadFile(c *C) { 549 objectName := objectNamePrefix + RandStr(8) 550 fileName := "../sample/BingWallpaper-2015-11-07.jpg" 551 newFile := "down-new-file-progress-2.jpg" 552 553 fileInfo, err := os.Stat(fileName) 554 c.Assert(err, IsNil) 555 556 // Upload 557 err = s.bucket.UploadFile(objectName, fileName, 100*1024, Routines(3)) 558 c.Assert(err, IsNil) 559 560 progressListener := OssProgressListener{} 561 err = s.bucket.DownloadFile(objectName, newFile, 100*1024, Routines(5), Progress(&progressListener)) 562 c.Assert(err, IsNil) 563 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 564 565 progressListener.TotalRwBytes = 0 566 err = s.bucket.DownloadFile(objectName, newFile, 1024*1024, Routines(3), Progress(&progressListener)) 567 c.Assert(err, IsNil) 568 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 569 570 progressListener.TotalRwBytes = 0 571 err = s.bucket.DownloadFile(objectName, newFile, 50*1024, Routines(3), Checkpoint(true, ""), Progress(&progressListener)) 572 c.Assert(err, IsNil) 573 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 574 575 testLogger.Println("OssProgressSuite.TestDownloadFile") 576 } 577 578 // TestCopyFile 579 func (s *OssProgressSuite) TestCopyFile(c *C) { 580 srcObjectName := objectNamePrefix + RandStr(8) 581 destObjectName := srcObjectName + "-copy" 582 fileName := "../sample/BingWallpaper-2015-11-07.jpg" 583 584 fileInfo, err := os.Stat(fileName) 585 c.Assert(err, IsNil) 586 587 // Upload 588 progressListener := OssProgressListener{} 589 err = s.bucket.UploadFile(srcObjectName, fileName, 100*1024, Routines(3), Progress(&progressListener)) 590 c.Assert(err, IsNil) 591 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 592 593 progressListener.TotalRwBytes = 0 594 err = s.bucket.CopyFile(bucketName, srcObjectName, destObjectName, 100*1024, Routines(5), Progress(&progressListener)) 595 c.Assert(err, IsNil) 596 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 597 598 progressListener.TotalRwBytes = 0 599 err = s.bucket.CopyFile(bucketName, srcObjectName, destObjectName, 1024*100, Routines(3), Checkpoint(true, ""), Progress(&progressListener)) 600 c.Assert(err, IsNil) 601 c.Assert(progressListener.TotalRwBytes, Equals, fileInfo.Size()) 602 603 testLogger.Println("OssProgressSuite.TestCopyFile") 604 }