鸣镝 9 anni fa
parent
commit
82a7ca89e2
5 ha cambiato i file con 32 aggiunte e 20 eliminazioni
  1. 3 3
      oss/client_test.go
  2. 10 2
      oss/conn.go
  3. 0 3
      oss/error_test.go
  4. 1 12
      oss/progress.go
  5. 18 0
      oss/progress_test.go

+ 3 - 3
oss/client_test.go

@@ -42,11 +42,11 @@ var (
 
 const (
 	// prefix of bucket name for bucket ops test
-	bucketNamePrefix = "go-sdk-test-bucket-xyza-"
+	bucketNamePrefix = "go-sdk-test-bucket-xyz-"
 	// bucket name for object ops test
-	bucketName = "go-sdk-test-bucket-xyza-for-object"
+	bucketName = "go-sdk-test-bucket-xyz-for-object"
 	// object name for object ops test
-	objectNamePrefix = "go-sdk-test-object-xyza-"
+	objectNamePrefix = "go-sdk-test-object-xyz-"
 	// sts region is one and only hangzhou
 	stsRegion = "cn-hangzhou"
 )

+ 10 - 2
oss/conn.go

@@ -113,14 +113,22 @@ func (conn Conn) doRequest(method string, uri *url.URL, canonicalizedResource st
 
 	conn.signHeader(req, canonicalizedResource)
 
+	// transfer started
+	event := newProgressEvent(TransferStartedEvent, 0, req.ContentLength)
+	publishProgress(listener, event)
+
 	resp, err := conn.client.Do(req)
 	if err != nil {
-		// fail transfer
-		event := newProgressEvent(TransferFailedEvent, tracker.completedBytes, req.ContentLength)
+		// transfer failed
+		event = newProgressEvent(TransferFailedEvent, tracker.completedBytes, req.ContentLength)
 		publishProgress(listener, event)
 		return nil, err
 	}
 
+	// transfer completed
+	event = newProgressEvent(TransferCompletedEvent, tracker.completedBytes, req.ContentLength)
+	publishProgress(listener, event)
+
 	return conn.handleResponse(resp, crc)
 }
 

+ 0 - 3
oss/error_test.go

@@ -4,8 +4,6 @@ import (
 	"math"
 	"net/http"
 
-	"fmt"
-
 	. "gopkg.in/check.v1"
 )
 
@@ -31,7 +29,6 @@ func (s *OssErrorSuite) TestCheckCRCHasCRCInResp(c *C) {
 
 	err := checkCRC(resp, "test")
 	c.Assert(err, IsNil)
-	fmt.Printf("completed\n")
 }
 
 func (s *OssErrorSuite) TestCheckCRCNotHasCRCInResp(c *C) {

+ 1 - 12
oss/progress.go

@@ -63,7 +63,7 @@ type teeReader struct {
 // the write must complete before the read completes.
 // Any error encountered while writing is reported as a read error.
 func TeeReader(reader io.Reader, writer io.Writer, totalBytes int64, listener ProgressListener, tracker *readerTracker) io.Reader {
-	t := &teeReader{
+	return &teeReader{
 		reader:        reader,
 		writer:        writer,
 		listener:      listener,
@@ -71,12 +71,6 @@ func TeeReader(reader io.Reader, writer io.Writer, totalBytes int64, listener Pr
 		totalBytes:    totalBytes,
 		tracker:       tracker,
 	}
-
-	// start transfer
-	event := newProgressEvent(TransferStartedEvent, 0, totalBytes)
-	publishProgress(listener, event)
-
-	return t
 }
 
 func (t *teeReader) Read(p []byte) (n int, err error) {
@@ -107,10 +101,5 @@ func (t *teeReader) Read(p []byte) (n int, err error) {
 		}
 	}
 
-	// read completed
-	if err == io.EOF {
-		event := newProgressEvent(TransferCompletedEvent, t.consumedBytes, t.totalBytes)
-		publishProgress(t.listener, event)
-	}
 	return
 }

+ 18 - 0
oss/progress_test.go

@@ -145,6 +145,24 @@ func (s *OssProgressSuite) TestPutObject(c *C) {
 	testLogger.Println("OssProgressSuite.TestPutObject")
 }
 
+func (s *OssProgressSuite) TestPutObjectNegative(c *C) {
+	objectName := objectNamePrefix + "tpon.html"
+	localFile := "../sample/The Go Programming Language.html"
+
+	// invalid endpoint
+	client, err := New("http://oss-cn-taikang.aliyuncs.com", accessID, accessKey)
+	c.Assert(err, IsNil)
+
+	bucket, err := client.Bucket(bucketName)
+	c.Assert(err, IsNil)
+
+	err = bucket.PutObjectFromFile(objectName, localFile, Progress(&OssProgressListener{}))
+	testLogger.Println(err)
+	c.Assert(err, NotNil)
+
+	testLogger.Println("OssProgressSuite.TestPutObjectNegative")
+}
+
 // TestAppendObject
 func (s *OssProgressSuite) TestAppendObject(c *C) {
 	objectName := objectNamePrefix + "tao"