OSSSwiftDemo/OSSSwiftDemoTests/OSSMultipartUploadTests.swift (77 lines of code) (raw):
//
// OSSMultipartUploadTests.swift
// OSSSwiftDemoTests
//
// Created by huaixu on 2018/1/13.
// Copyright © 2018年 aliyun. All rights reserved.
//
import XCTest
import AliyunOSSiOS
import AliyunOSSSwiftSDK
class OSSMultipartUploadTests: OSSSwiftDemoTests {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testAPI_multipartUpload() {
let fileURL = Bundle.main.url(forResource: "wangwang", withExtension: "zip")
let request = OSSMultipartUploadRequest()
request.uploadingFileURL = fileURL!
request.bucketName = OSS_BUCKET_PRIVATE
request.objectKey = "wangwangForSwift.zip"
request.partSize = 412000
request.uploadProgress = { (bytesSend, totoalBytesSend, totalBytesExpectedToSend) -> Void in
OSSLogVerbose("bytesSend: \(bytesSend), totoalBytesSend: \(totoalBytesSend), totalBytesExpectedToSend: \(totalBytesExpectedToSend)")
}
let task = client.multipartUpload(request)
task.continue({ (t) -> Any? in
XCTAssertNil(t.error)
return nil
}).waitUntilFinished()
}
func testAPI_abortMultipartUpload() {
let request = OSSInitMultipartUploadRequest()
request.bucketName = OSS_BUCKET_PRIVATE
request.objectKey = OSS_MULTIPART_UPLOADKEY
request.contentType = "application/octet-stream"
request.objectMeta = ["x-oss-meta-name1": "value1"]
let task = client.multipartUploadInit(request)
var uploadId: String? = nil
task.continue({ (t) -> Any? in
XCTAssertNil(t.error)
let result = t.result as! OSSInitMultipartUploadResult
uploadId = result.uploadId
return nil
}).waitUntilFinished()
let otherRequest = OSSAbortMultipartUploadRequest()
otherRequest.bucketName = OSS_BUCKET_PRIVATE
otherRequest.objectKey = OSS_MULTIPART_UPLOADKEY
otherRequest.uploadId = uploadId!
let otherTask = client.abortMultipartUpload(otherRequest)
otherTask.continue({ (t) -> Any? in
XCTAssertNil(t.error)
let result = t.result as! OSSAbortMultipartUploadResult
XCTAssertEqual(204, result.httpResponseCode)
return nil
}).waitUntilFinished()
}
func testAPI_cancelMultipartUpload() {
let fileURL = Bundle.main.url(forResource: "wangwang", withExtension: "zip")
let request = OSSMultipartUploadRequest()
request.uploadingFileURL = fileURL!
request.bucketName = OSS_BUCKET_PRIVATE
request.objectKey = "wangwangForSwift.zip"
request.partSize = 512000
request.uploadProgress = { (bytesSend, totoalBytesSend, totalBytesExpectedToSend) -> Void in
OSSLogVerbose("bytesSend: \(bytesSend), totoalBytesSend: \(totoalBytesSend), totalBytesExpectedToSend: \(totalBytesExpectedToSend)")
}
let tcs = OSSTaskCompletionSource<AnyObject>()
let task = client.multipartUpload(request)
task.continue({ (t) -> Any? in
XCTAssertNotNil(t.error)
let error = t.error! as NSError
XCTAssertEqual(OSSClientErrorCODE.codeTaskCancelled.rawValue, error.code)
tcs.setError(error)
return nil
})
// 3秒后取消上传请求
DispatchQueue.global().asyncAfter(deadline: .now() + 3) {
request.cancel()
}
tcs.task.waitUntilFinished()
}
}