Beispiel #1
0
        public void CopyObjectBasicTest()
        {
            var targetObjectKey = OssTestUtils.GetObjectKey(_className);

            //construct metadata
            var          metadata      = new ObjectMetadata();
            const string userMetaKey   = "myKey";
            const string userMetaValue = "myValue";

            metadata.UserMetadata.Add(userMetaKey, userMetaValue);
            metadata.CacheControl = "No-Cache";

            var coRequest = new CopyObjectRequest(_bucketName, _sourceObjectKey, _bucketName, targetObjectKey)
            {
                NewObjectMetadata = metadata
            };

            //copy object
            _ossClient.CopyObject(coRequest);
            Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, targetObjectKey));
            var resMetadata = _ossClient.GetObjectMetadata(_bucketName, targetObjectKey);

            Assert.AreEqual(userMetaValue, resMetadata.UserMetadata[userMetaKey]);

            _ossClient.DeleteObject(_bucketName, targetObjectKey);
        }
Beispiel #2
0
        public void CreateAndDeleteIABucketTest()
        {
            //get a random bucketName
            var bucketName = OssTestUtils.GetBucketName(_className);

            //assert bucket does not exist
            Assert.IsFalse(OssTestUtils.BucketExists(_ossClient, bucketName),
                           string.Format("Bucket {0} should not exist before creation", bucketName));

            //create a new bucket
            _ossClient.CreateBucket(bucketName, StorageClass.IA);
            OssTestUtils.WaitForCacheExpire();
            Assert.IsTrue(OssTestUtils.BucketExists(_ossClient, bucketName),
                          string.Format("Bucket {0} should exist after creation", bucketName));

            var objectName = bucketName + "firstobject";

            _ossClient.PutObject(bucketName, objectName, new MemoryStream());

            var objMeta = _ossClient.GetObjectMetadata(bucketName, objectName);

            Assert.AreEqual(objMeta.HttpMetadata["x-oss-storage-class"], StorageClass.IA.ToString());
            _ossClient.DeleteObject(bucketName, objectName);

            //delete the new created bucket
            _ossClient.DeleteBucket(bucketName);
            OssTestUtils.WaitForCacheExpire();
            Assert.IsFalse(OssTestUtils.BucketExists(_ossClient, bucketName),
                           string.Format("Bucket {0} should not exist after deletion", bucketName));
        }
        public void ImageProcessTest()
        {
            try
            {
                // put example image
                _ossClient.PutObject(_bucketName, _keyName, _localImageFile);

                // get processed image
                GetObjectRequest request   = new GetObjectRequest(_bucketName, _keyName, _process);
                OssObject        ossObject = _ossClient.GetObject(request);

                // put processed image
                Stream seekableStream = ConvertStreamToSeekable(ossObject.Content);
                _ossClient.PutObject(_bucketName, _processedKey, seekableStream);

                // get info of processed image
                var imgInfo = GetOssImageObjectInfo(_bucketName, _processedKey);

                // check processed result
                Assert.AreEqual(imgInfo, _imageInfo);
            }
            finally
            {
                _ossClient.DeleteObject(_bucketName, _keyName);
                _ossClient.DeleteObject(_bucketName, _processedKey);
            }
        }
        public void PutObjectProgressTest()
        {
            // put object
            using (var inputStream = File.Open(Config.MultiUploadTestFile, FileMode.Open))
            {
                var putObjectRequest = new PutObjectRequest(_bucketName, _objectKey, inputStream);
                putObjectRequest.Metadata = new ObjectMetadata();
                putObjectRequest.StreamTransferProgress += uploadProgressCallback;
                _ossClient.PutObject(putObjectRequest);
                inputStream.Close();
            }

            // get object
            var getObjectRequest = new GetObjectRequest(_bucketName, _objectKey);

            getObjectRequest.StreamTransferProgress += uploadProgressCallback;
            var ossObject = _ossClient.GetObject(getObjectRequest);

            using (var requestStream = ossObject.Content)
            {
                using (var localfile = File.Open(_tmpLocalFile, FileMode.OpenOrCreate))
                {
                    OssTestUtils.WriteTo(requestStream, localfile);
                }
            }

            // check md5
            var expectedHashDigest = FileUtils.ComputeContentMd5(Config.MultiUploadTestFile);
            var actualHashDigest   = FileUtils.ComputeContentMd5(_tmpLocalFile);

            Assert.AreEqual(expectedHashDigest, actualHashDigest);

            _ossClient.DeleteObject(_bucketName, _objectKey);
            File.Delete(_tmpLocalFile);
        }
Beispiel #5
0
        public void PutObjectDisableMD5CheckTest()
        {
            // put object
            _ossClientDisableMD5.PutObject(_bucketName, _objectKey, Config.UploadTestFile);

            // get object
            var ossObject = _ossClientDisableMD5.GetObject(_bucketName, _objectKey);

            using (var requestStream = ossObject.Content)
            {
                using (var localfile = File.Open(_tmpLocalFile, FileMode.OpenOrCreate))
                {
                    OssTestUtils.WriteTo(requestStream, localfile);
                }
            }

            // check md5
            var expectedHashDigest = FileUtils.ComputeContentMd5(Config.UploadTestFile);
            var actualHashDigest   = FileUtils.ComputeContentMd5(_tmpLocalFile);

            Assert.AreEqual(expectedHashDigest, actualHashDigest);

            _ossClientDisableMD5.DeleteObject(_bucketName, _objectKey);
            File.Delete(_tmpLocalFile);
        }
Beispiel #6
0
        public void SetObjectAclApiTest()
        {
            try
            {
                _ossClient.PutObject(_bucketName, _keyName, Config.UploadTestFile);

                // default
                var acl = _ossClient.GetObjectAcl(_bucketName, _keyName);
                Assert.AreEqual(acl.ACL, CannedAccessControlList.Default);

                // public read
                _ossClient.SetObjectAcl(_bucketName, _keyName, CannedAccessControlList.PublicRead);
                OssTestUtils.WaitForCacheExpire();
                acl = _ossClient.GetObjectAcl(_bucketName, _keyName);
                Assert.AreEqual(acl.ACL, CannedAccessControlList.PublicRead);

                // public read and write
                _ossClient.SetObjectAcl(_bucketName, _keyName, CannedAccessControlList.PublicReadWrite);
                OssTestUtils.WaitForCacheExpire();
                acl = _ossClient.GetObjectAcl(_bucketName, _keyName);
                Assert.AreEqual(acl.ACL, CannedAccessControlList.PublicReadWrite);

                // private
                _ossClient.SetObjectAcl(_bucketName, _keyName, CannedAccessControlList.Private);
                OssTestUtils.WaitForCacheExpire();
                acl = _ossClient.GetObjectAcl(_bucketName, _keyName);
                Assert.AreEqual(acl.ACL, CannedAccessControlList.Private);
            }
            finally
            {
                _ossClient.DeleteObject(_bucketName, _keyName);
            }
        }
        public static void CleanBucket(IOss oss, string bucketName)
        {
            if (!BucketExists(oss, bucketName))
            {
                return;
            }
            //abort in progress multipart uploading
            var multipartListing = oss.ListMultipartUploads(new ListMultipartUploadsRequest(bucketName));

            foreach (var upload in multipartListing.MultipartUploads)
            {
                var abortRequest = new AbortMultipartUploadRequest(bucketName, upload.Key, upload.UploadId);
                oss.AbortMultipartUpload(abortRequest);
            }

            // Clean up objects
            var objects = oss.ListObjects(bucketName);

            foreach (var obj in objects.ObjectSummaries)
            {
                oss.DeleteObject(bucketName, obj.Key);
            }

            // Delete the bucket.
            oss.DeleteBucket(bucketName);
        }
Beispiel #8
0
        public void ProxyAuthTest()
        {
            var key        = OssTestUtils.GetObjectKey(_className);
            var targetFile = OssTestUtils.GetTargetFileName(_className);

            targetFile = Path.Combine(Config.DownloadFolder, targetFile);

            try {
                //put object
                _ossClient.PutObject(_bucketName, key, Config.UploadTestFile);
                Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, key));

                //get object
                OssTestUtils.DownloadObject(_ossClient, _bucketName, key, targetFile);
                var expectedETag       = _ossClient.GetObjectMetadata(_bucketName, key).ETag;
                var downloadedFileETag = FileUtils.ComputeContentMd5(targetFile);
                Assert.AreEqual(expectedETag.ToLowerInvariant(), downloadedFileETag.ToLowerInvariant());

                //list object
                var allObjects     = _ossClient.ListObjects(_bucketName, key);
                var allObjectsSumm = OssTestUtils.ToArray <OssObjectSummary>(allObjects.ObjectSummaries);
                Assert.AreEqual(1, allObjectsSumm.Count);
            }
            catch (Exception e)
            {
                Assert.IsTrue(false, e.Message);
            }
            finally
            {
                _ossClient.DeleteObject(_bucketName, key);

                try
                {
                    FileUtils.DeleteFile(targetFile);
                }
                catch (Exception e)
                {
                    LogUtility.LogWarning("Delete file {0} failed with Exception {1}", targetFile, e.Message);
                }
            }
        }
        private static void PutAndGetObject(IOss ossClient, string originalFile, int i)
        {
            //prepare the object key
            var key = OssTestUtils.GetObjectKey(_className);

            key = string.Format("{0}_{1}", key, i);
            //prepare the file for download (GET)
            var targetFile = OssTestUtils.GetTargetFileName(_className);

            targetFile = string.Format("{0}_{1}", targetFile, i);
            targetFile = Path.Combine(Config.DownloadFolder, targetFile);

            try
            {
                LogUtility.LogMessage("Thread {0}--Begin to put object", i);
                var sWatch = new Stopwatch();
                sWatch.Start();
                OssTestUtils.UploadObject(ossClient, _bucketName, key, originalFile);
                sWatch.Stop();
                var duration = sWatch.Elapsed;
                LogUtility.LogMessage("Thread {0}--Put Duration is {1:00}:{2:00}:{3:00}",
                                      i, duration.Hours, duration.Minutes, duration.Seconds);
                LogUtility.LogMessage("Finish to put object");
                Assert.IsTrue(OssTestUtils.ObjectExists(ossClient, _bucketName, key));

                LogUtility.LogMessage("Thread {0}--Begin to get object", i);
                sWatch = new Stopwatch();
                sWatch.Start();
                OssTestUtils.DownloadObject(ossClient, _bucketName, key, targetFile);
                sWatch.Stop();
                duration = sWatch.Elapsed;
                LogUtility.LogMessage("Thread {0}--Get Duration is {1:00}:{2:00}:{3:00}",
                                      i, duration.Hours, duration.Minutes, duration.Seconds);
                LogUtility.LogMessage("Thread {0}--Finish to get object", i);
            }
            finally
            {
                FileUtils.DeleteFile(originalFile);
                FileUtils.DeleteFile(targetFile);
                if (OssTestUtils.ObjectExists(ossClient, _bucketName, key))
                {
                    ossClient.DeleteObject(_bucketName, key);
                }
            }
        }
        public static void CleanBucket(IOss oss, string bucketName)
        {
            if (!BucketExists(oss, bucketName))
                return;
            //abort in progress multipart uploading
            var multipartListing = oss.ListMultipartUploads(new ListMultipartUploadsRequest(bucketName));
            foreach (var upload in multipartListing.MultipartUploads)
            {
                var abortRequest = new AbortMultipartUploadRequest(bucketName, upload.Key, upload.UploadId);
                oss.AbortMultipartUpload(abortRequest);
            }

            // Clean up objects
            var objects = oss.ListObjects(bucketName);
            foreach(var obj in objects.ObjectSummaries)
            {
                oss.DeleteObject(bucketName, obj.Key);
            }

            // Delete the bucket.
            oss.DeleteBucket(bucketName);
        }
        public void DeleteObjectWithHiddenCharacters()
        {
            char[] buffer = new char[2];
            buffer[0] = Convert.ToChar(0x1c);
            buffer[1] = Convert.ToChar(0x1a);

            var newKey = _keyName + (new string(buffer)) + ".1.cd";

            try
            {
                _ossClient.PutObject(_bucketName, newKey, Config.UploadTestFile);

                Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, newKey));

                _ossClient.DeleteObject(_bucketName, newKey);

                Assert.IsFalse(OssTestUtils.ObjectExists(_ossClient, _bucketName, newKey));
            }
            finally
            {
                _ossClient.DeleteObject(_bucketName, newKey);
            }
        }
        public void UploadObjectBasicSettingsTest()
        {
            var key = OssTestUtils.GetObjectKey(_className);

            try
            {
                //upload the object
                OssTestUtils.UploadObject(_ossClient, _bucketName, key,
                                          Config.UploadSampleFile, new ObjectMetadata());
                Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, key));
            }
            finally
            {
                if (OssTestUtils.ObjectExists(_ossClient, _bucketName, key))
                {
                    _ossClient.DeleteObject(_bucketName, key);
                }
            }
        }
Beispiel #13
0
        public void CompleteMultipartUploadWithListParts()
        {
            var sourceFile = Config.MultiUploadTestFile;
            //get target object name
            var targetObjectKey = OssTestUtils.GetObjectKey(_className);

            var initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey);
            var initResult  = _ossClient.InitiateMultipartUpload(initRequest);

            // Set the part size
            const int partSize = 1024 * 1024 * 1;

            var partFile = new FileInfo(sourceFile);
            // Calculate the part count
            var partCount = OssTestUtils.CalculatePartCount(partFile.Length, partSize);

            LogUtility.LogMessage("File {0} is splitted to {1} parts for multipart upload",
                                  sourceFile, partCount);

            //upload the file
            using (var fs = new FileStream(partFile.FullName, FileMode.Open))
            {
                for (var i = 0; i < partCount; i++)
                {
                    // Skip to the start position
                    long skipBytes = partSize * i;
                    fs.Position = skipBytes;

                    // calculate the part size
                    var size = partSize < partFile.Length - skipBytes
                        ? partSize
                        : partFile.Length - skipBytes;

                    // Create a UploadPartRequest, uploading parts
                    var uploadPartRequest = new UploadPartRequest(_bucketName, targetObjectKey, initResult.UploadId)
                    {
                        InputStream = fs,
                        PartSize    = size,
                        PartNumber  = (i + 1)
                    };
                    _ossClient.UploadPart(uploadPartRequest);
                }
            }

            var    lmuRequest = new ListMultipartUploadsRequest(_bucketName);
            var    lmuListing = _ossClient.ListMultipartUploads(lmuRequest);
            string mpUpload   = null;

            foreach (var t in lmuListing.MultipartUploads)
            {
                if (t.UploadId == initResult.UploadId)
                {
                    mpUpload = t.UploadId;
                }
            }

            Assert.IsNotNull(mpUpload, "The multipart uploading should be in progress");

            PartListing partList = _ossClient.ListParts(new ListPartsRequest(_bucketName, targetObjectKey, mpUpload));

            var completeRequest = new CompleteMultipartUploadRequest(_bucketName, targetObjectKey, initResult.UploadId);

            foreach (var part in partList.Parts)
            {
                completeRequest.PartETags.Add(part.PartETag);
            }
            _ossClient.CompleteMultipartUpload(completeRequest);

            Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, targetObjectKey));

            //delete the object
            _ossClient.DeleteObject(_bucketName, targetObjectKey);
        }
Beispiel #14
0
        public void PutObjectCallbackTest()
        {
            string callbackHeaderBuilder = new CallbackHeaderBuilder(_callbackUrl, _callbackBody).Build();

            var metadata = new ObjectMetadata();

            metadata.AddHeader(HttpHeaders.Callback, callbackHeaderBuilder);

            var putObjectResult = _ossClient.PutObject(_bucketName, _objectKey, Config.UploadTestFile, metadata);

            Assert.IsTrue(putObjectResult.IsSetResponseStream());
            Assert.AreEqual(_callbackOkResponse, GetCallbackResponse(putObjectResult));
            Assert.AreEqual(putObjectResult.HttpStatusCode, HttpStatusCode.OK);
            Assert.AreEqual(putObjectResult.ContentLength, _callbackOkResponse.Length);
            Assert.AreEqual(putObjectResult.RequestId.Length, "58DB0ACB686D42D5B4163D75".Length);
            Assert.AreEqual(putObjectResult.ResponseMetadata[HttpHeaders.ContentType], "application/json");
            Assert.AreEqual(putObjectResult.ResponseMetadata[HttpHeaders.ETag], putObjectResult.ETag);
            Assert.AreEqual(putObjectResult.ResponseMetadata[HttpHeaders.ContentMd5].Length, "7GoU4OYaYroKXsbsG1f/lw==".Length);
            Assert.IsTrue(putObjectResult.ResponseMetadata[HttpHeaders.HashCrc64Ecma].Length > 0);
            Assert.IsTrue(putObjectResult.ResponseMetadata[HttpHeaders.ServerElapsedTime].Length > 0);
            Assert.AreEqual(putObjectResult.ResponseMetadata[HttpHeaders.Date].Length, "Wed, 29 Mar 2017 01:15:58 GMT".Length);

            _ossClient.DeleteObject(_bucketName, _objectKey);
        }
Beispiel #15
0
        public void TestDisableCrc()
        {
            Common.ClientConfiguration config = new Common.ClientConfiguration();
            config.EnableCrcCheck = false;
            IOss ossClient  = OssClientFactory.CreateOssClient(config);
            var  targetFile = OssTestUtils.GetTargetFileName(_className);

            targetFile = Path.Combine(Config.DownloadFolder, targetFile);
            var objectKeyName = "test-object-disable-crc";

            try
            {
                // put & get
                PutObjectResult putObjectResult = ossClient.PutObject(_bucketName, objectKeyName, Config.UploadTestFile);
                var             actualCrc       = putObjectResult.ResponseMetadata[HttpHeaders.HashCrc64Ecma];

                OssObject ossObject   = ossClient.GetObject(_bucketName, objectKeyName);
                var       expectedCrc = OssUtils.ComputeContentCrc64(ossObject.Content, ossObject.ContentLength);

                Assert.AreEqual(expectedCrc, actualCrc);
                ossClient.DeleteObject(_bucketName, objectKeyName);

                // put & get by uri
                var testStr    = FileUtils.GenerateOneKb();
                var content    = Encoding.ASCII.GetBytes(testStr);
                var now        = DateTime.Now;
                var expireDate = now.AddSeconds(120);
                var uri        = _ossClient.GeneratePresignedUri(_bucketName, objectKeyName, expireDate, SignHttpMethod.Put);
                var putResult  = ossClient.PutObject(uri, new MemoryStream(content));

                expectedCrc = putResult.ResponseMetadata[HttpHeaders.HashCrc64Ecma];
                actualCrc   = OssUtils.ComputeContentCrc64(new MemoryStream(content), content.Length);
                Assert.AreEqual(expectedCrc, actualCrc);

                uri         = _ossClient.GeneratePresignedUri(_bucketName, objectKeyName, expireDate, SignHttpMethod.Get);
                ossObject   = ossClient.GetObject(uri);
                expectedCrc = OssUtils.ComputeContentCrc64(ossObject.Content, ossObject.ContentLength);

                Assert.AreEqual(expectedCrc, actualCrc);
                ossClient.DeleteObject(_bucketName, objectKeyName);

                // upload & download
                var uploadObjectResult = ossClient.ResumableUploadObject(_bucketName, objectKeyName, Config.MultiUploadTestFile, null,
                                                                         Config.DownloadFolder);
                actualCrc = uploadObjectResult.ResponseMetadata[HttpHeaders.HashCrc64Ecma];

                DownloadObjectRequest downloadObjectRequest = new DownloadObjectRequest(_bucketName, objectKeyName, targetFile);
                var metadata = ossClient.ResumableDownloadObject(downloadObjectRequest);

                Assert.AreEqual(metadata.Crc64, actualCrc);
                ossClient.DeleteObject(_bucketName, objectKeyName);

                // append
                using (var fs = File.Open(Config.UploadTestFile, FileMode.Open))
                {
                    var fileLength          = fs.Length;
                    var appendObjectRequest = new AppendObjectRequest(_bucketName, objectKeyName)
                    {
                        Content = fs,
                    };
                    var appendObjectResult = _ossClient.AppendObject(appendObjectRequest);
                    fs.Seek(0, SeekOrigin.Begin);
                    actualCrc = OssUtils.ComputeContentCrc64(fs, fs.Length);
                    Assert.AreEqual(appendObjectResult.HashCrc64Ecma.ToString(), actualCrc);
                    ossClient.DeleteObject(_bucketName, objectKeyName);
                }
            }
            finally
            {
                try
                {
                    FileUtils.DeleteFile(targetFile);
                }
                catch (Exception e)
                {
                    LogUtility.LogWarning("Delete file {0} failed with Exception {1}", targetFile, e.Message);
                }
            }
        }
        private static void PutAndGetObject(IOss ossClient, string originalFile, int i)
        {
            //prepare the object key
            var key = OssTestUtils.GetObjectKey(_className);
            key = string.Format("{0}_{1}", key, i);
            //prepare the file for download (GET)
            var targetFile = OssTestUtils.GetTargetFileName(_className);
            targetFile = string.Format("{0}_{1}", targetFile, i);
            targetFile = Path.Combine(Config.DownloadFolder, targetFile);

            try
            {
                LogUtility.LogMessage("Thread {0}--Begin to put object", i);
                var sWatch = new Stopwatch();
                sWatch.Start();
                OssTestUtils.UploadObject(ossClient, _bucketName, key, originalFile);
                sWatch.Stop();
                var duration = sWatch.Elapsed;
                LogUtility.LogMessage("Thread {0}--Put Duration is {1:00}:{2:00}:{3:00}",
                    i, duration.Hours, duration.Minutes, duration.Seconds);
                LogUtility.LogMessage("Finish to put object");
                Assert.IsTrue(OssTestUtils.ObjectExists(ossClient, _bucketName, key));

                LogUtility.LogMessage("Thread {0}--Begin to get object", i);
                sWatch = new Stopwatch();
                sWatch.Start();
                OssTestUtils.DownloadObject(ossClient, _bucketName, key, targetFile);
                sWatch.Stop();
                duration = sWatch.Elapsed;
                LogUtility.LogMessage("Thread {0}--Get Duration is {1:00}:{2:00}:{3:00}",
                    i, duration.Hours, duration.Minutes, duration.Seconds);
                LogUtility.LogMessage("Thread {0}--Finish to get object", i);
            }
            finally
            {
                FileUtils.DeleteFile(originalFile);
                FileUtils.DeleteFile(targetFile);
                if (OssTestUtils.ObjectExists(ossClient, _bucketName, key))
                {
                    ossClient.DeleteObject(_bucketName, key);
                }
            }
        }
        public void ResumableUploadObjectTest()
        {
            var key = OssTestUtils.GetObjectKey(_className);

            try
            {
                var result = _ossClient.ResumableUploadObject(_bucketName, key, Config.MultiUploadTestFile, null,
                                                              Config.DownloadFolder);
                Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, key));
                Assert.IsTrue(result.ETag.Length > 0);
            }
            finally
            {
                if (OssTestUtils.ObjectExists(_ossClient, _bucketName, key))
                {
                    _ossClient.DeleteObject(_bucketName, key);
                }
            }
        }
        public void MultipartUploadComplexStepTest()
        {
            var sourceFile = Config.MultiUploadTestFile;
            //get target object name
            var targetObjectKey = OssTestUtils.GetObjectKey(_className);

            var initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey);
            var initResult  = _ossClient.InitiateMultipartUpload(initRequest);

            // 设置每块为 1M
            const int partSize = 1024 * 1024 * 1;

            var partFile = new FileInfo(sourceFile);
            // 计算分块数目
            var partCount = OssTestUtils.CalculatePartCount(partFile.Length, partSize);

            LogUtility.LogMessage("File {0} is splitted to {1} parts for multipart upload",
                                  sourceFile, partCount);

            // 新建一个List保存每个分块上传后的ETag和PartNumber
            var partETags = new List <PartETag>();

            //upload the file
            using (var fs = new FileStream(partFile.FullName, FileMode.Open))
            {
                for (var i = 0; i < partCount; i++)
                {
                    // 跳到每个分块的开头
                    long skipBytes = partSize * i;
                    fs.Position = skipBytes;

                    // 计算每个分块的大小
                    var size = partSize < partFile.Length - skipBytes
                        ? partSize
                        : partFile.Length - skipBytes;

                    // 创建UploadPartRequest,上传分块
                    var uploadPartRequest = new UploadPartRequest(_bucketName, targetObjectKey, initResult.UploadId)
                    {
                        InputStream = fs,
                        PartSize    = size,
                        PartNumber  = (i + 1)
                    };
                    var uploadPartResult = _ossClient.UploadPart(uploadPartRequest);

                    // 将返回的PartETag保存到List中。
                    partETags.Add(uploadPartResult.PartETag);
                }
            }

            var    lmuRequest = new ListMultipartUploadsRequest(_bucketName);
            var    lmuListing = _ossClient.ListMultipartUploads(lmuRequest);
            string mpUpload   = null;

            foreach (var t in lmuListing.MultipartUploads)
            {
                if (t.UploadId == initResult.UploadId)
                {
                    mpUpload = t.UploadId;
                }
            }

            Assert.IsNotNull(mpUpload, "The multipart uploading should be in progress");

            var completeRequest = new CompleteMultipartUploadRequest(_bucketName, targetObjectKey, initResult.UploadId);

            foreach (var partETag in partETags)
            {
                completeRequest.PartETags.Add(partETag);
            }
            _ossClient.CompleteMultipartUpload(completeRequest);

            Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, targetObjectKey));

            //delete the object
            _ossClient.DeleteObject(_bucketName, targetObjectKey);
        }
Beispiel #19
0
        public void CSVSelectObjectNormalTest()
        {
            const string key = "SqlObjectWithCsvData";

            try
            {
                byte[] binaryData = Encoding.ASCII.GetBytes(_sqlMessage);
                var    stream     = new MemoryStream(binaryData);

                _ossClient.PutObject(_bucketName, key, stream);

                var request = new SelectObjectRequest(_bucketName, key);
                request.Expression = "select * from ossobject";

                var inputFormat = new SelectObjectCSVInputFormat();
                inputFormat.FileHeaderInfo   = FileHeaderInfo.Use;
                inputFormat.RecordDelimiter  = "\r\n";
                inputFormat.FieldDelimiter   = ",";
                inputFormat.QuoteCharacter   = "\"";
                inputFormat.CommentCharacter = "#";
                inputFormat.CompressionType  = CompressionType.None;

                request.InputFormat = inputFormat;

                var outputFormat = new SelectObjectCSVOutputFormat();
                outputFormat.EnablePayloadCrc = true;
                outputFormat.OutputRawData    = false;

                outputFormat.KeepAllColumns  = false;
                outputFormat.OutputHeader    = false;
                outputFormat.FieldDelimiter  = ",";
                outputFormat.RecordDelimiter = "\n";


                request.OutputFormat = outputFormat;

                var result = _ossClient.SelectObject(request);

                string expect = "Lora Francis,School A,Staples Inc,27\n" +
                                "Eleanor Little,School B,\"Conectiv, Inc\",43\n" +
                                "Rosie Hughes,School C,Western Gas Resources Inc,44\n" +
                                "Lawrence Ross,School D,MetLife Inc.,24\n";

                var buf    = new byte[256];
                int offset = 0;

                for (int i = 1; i < 30; i++)
                {
                    int got = result.Content.Read(buf, offset, i);
                    offset += got;
                }

                Assert.AreEqual(expect.Length, offset);
                string str = Encoding.Default.GetString(buf, 0, offset);
                Assert.AreEqual(expect, str);
            }
            finally
            {
                _ossClient.DeleteObject(_bucketName, key);
            }
        }
        public void ObjectBasicTest()
        {
            //Get Case
            var key = OssTestUtils.GetObjectKey(_className);

            _ossClient.PutObject(_bucketName, key, new MemoryStream(Encoding.ASCII.GetBytes("hello world")));

            var getRequest = new GetObjectRequest(_bucketName, key);

            Assert.AreEqual(getRequest.RequestPayer, RequestPayer.BucketOwner);

            try
            {
                _ossPayerClient.GetObject(getRequest);
                Assert.Fail("should not here.");
            }
            catch (OssException e)
            {
                Assert.AreEqual(e.ErrorCode, "AccessDenied");
            }

            getRequest.RequestPayer = RequestPayer.Requester;
            var getResult = _ossPayerClient.GetObject(getRequest);

            Assert.AreEqual(getResult.ContentLength, 11);
            _ossClient.DeleteObject(_bucketName, key);

            //Put Case
            key = OssTestUtils.GetObjectKey(_className);
            var content    = new MemoryStream(Encoding.ASCII.GetBytes("hello world"));
            var putRequest = new PutObjectRequest(_bucketName, key, content);

            Assert.AreEqual(putRequest.RequestPayer, RequestPayer.BucketOwner);

            try
            {
                _ossPayerClient.PutObject(putRequest);
                Assert.Fail("should not here.");
            }
            catch (OssException e)
            {
                Assert.AreEqual(e.ErrorCode, "AccessDenied");
            }

            content    = new MemoryStream(Encoding.ASCII.GetBytes("hello world"));
            putRequest = new PutObjectRequest(_bucketName, key, content);
            putRequest.RequestPayer = RequestPayer.Requester;
            var putResult = _ossPayerClient.PutObject(putRequest);

            Assert.AreEqual(putResult.HttpStatusCode, HttpStatusCode.OK);

            //head object
            var headRequest = new GetObjectMetadataRequest(_bucketName, key);

            Assert.AreEqual(headRequest.RequestPayer, RequestPayer.BucketOwner);

            try
            {
                _ossPayerClient.GetObjectMetadata(headRequest);
                Assert.Fail("should not here.");
            }
            catch (Exception e)
            {
                Assert.IsTrue(true, e.Message);
            }

            headRequest.RequestPayer = RequestPayer.Requester;
            var headResult = _ossPayerClient.GetObjectMetadata(headRequest);

            Assert.AreEqual(headResult.ContentLength, 11);

            //Delete Case
            Assert.IsTrue(_ossClient.DoesObjectExist(_bucketName, key));

            var delReqeust = new DeleteObjectRequest(_bucketName, key);

            Assert.AreEqual(delReqeust.RequestPayer, RequestPayer.BucketOwner);

            try
            {
                _ossPayerClient.DeleteObject(delReqeust);
                Assert.Fail("should not here.");
            }
            catch (OssException e)
            {
                Assert.AreEqual(e.ErrorCode, "AccessDenied");
            }

            delReqeust = new DeleteObjectRequest(_bucketName, key);
            delReqeust.RequestPayer = RequestPayer.Requester;
            _ossPayerClient.DeleteObject(delReqeust);

            Assert.IsFalse(_ossClient.DoesObjectExist(_bucketName, key));

            //delete objects
            var keys = new List <string>();

            keys.Add(key);
            var delsReqeust = new DeleteObjectsRequest(_bucketName, keys);

            Assert.AreEqual(delsReqeust.RequestPayer, RequestPayer.BucketOwner);
            try
            {
                _ossPayerClient.DeleteObjects(delsReqeust);
                Assert.Fail("should not here.");
            }
            catch (OssException e)
            {
                Assert.AreEqual(e.ErrorCode, "AccessDenied");
            }

            delsReqeust.RequestPayer = RequestPayer.Requester;
            _ossPayerClient.DeleteObjects(delsReqeust);

            //delete object versions
            var objects = new List <ObjectIdentifier>();

            objects.Add(new ObjectIdentifier(key));
            var delvsReqeust = new DeleteObjectVersionsRequest(_bucketName, objects);

            Assert.AreEqual(delvsReqeust.RequestPayer, RequestPayer.BucketOwner);
            try
            {
                _ossPayerClient.DeleteObjectVersions(delvsReqeust);
                Assert.Fail("should not here.");
            }
            catch (OssException e)
            {
                Assert.AreEqual(e.ErrorCode, "AccessDenied");
            }

            delvsReqeust.RequestPayer = RequestPayer.Requester;
            _ossPayerClient.DeleteObjectVersions(delvsReqeust);


            //list objets
            var lsRequest = new ListObjectsRequest(_bucketName);

            Assert.AreEqual(lsRequest.RequestPayer, RequestPayer.BucketOwner);
            try
            {
                _ossPayerClient.ListObjects(lsRequest);
                Assert.Fail("should not here.");
            }
            catch (OssException e)
            {
                Assert.AreEqual(e.ErrorCode, "AccessDenied");
            }

            lsRequest.RequestPayer = RequestPayer.Requester;
            _ossPayerClient.ListObjects(lsRequest);
        }
Beispiel #21
0
        private void MultipartUploadComplexStepTest(IOss ossClient, bool overrideCrc = false)
        {
            var sourceFile = Config.MultiUploadTestFile;
            //get target object name
            var targetObjectKey = OssTestUtils.GetObjectKey(_className);

            var initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey);
            var initResult  = ossClient.InitiateMultipartUpload(initRequest);

            // Set the part size
            const int partSize = 1024 * 1024 * 1;

            var partFile = new FileInfo(sourceFile);
            // Calculate the part count
            var partCount = OssTestUtils.CalculatePartCount(partFile.Length, partSize);

            LogUtility.LogMessage("File {0} is splitted to {1} parts for multipart upload",
                                  sourceFile, partCount);

            // Create a list to save result
            var partETags = new List <PartETag>();

            //upload the file
            using (var fs = new FileStream(partFile.FullName, FileMode.Open))
            {
                for (var i = 0; i < partCount; i++)
                {
                    // Skip to the start position
                    long skipBytes = partSize * i;
                    fs.Position = skipBytes;

                    // calculate the part size
                    var size = partSize < partFile.Length - skipBytes
                        ? partSize
                        : partFile.Length - skipBytes;

                    // Create a UploadPartRequest, uploading parts
                    var uploadPartRequest = new UploadPartRequest(_bucketName, targetObjectKey, initResult.UploadId)
                    {
                        InputStream = fs,
                        PartSize    = size,
                        PartNumber  = (i + 1)
                    };
                    var uploadPartResult = ossClient.UploadPart(uploadPartRequest);

                    // Save the result
                    partETags.Add(uploadPartResult.PartETag);

                    Assert.AreNotEqual(uploadPartResult.Crc64, 0);
                    Assert.AreNotEqual(uploadPartResult.Length, 0);
                }
            }

            var    lmuRequest   = new ListMultipartUploadsRequest(_bucketName);
            var    lmuListing   = ossClient.ListMultipartUploads(lmuRequest);
            string mpUpload     = null;
            string mpUploadInfo = null;

            foreach (var t in lmuListing.MultipartUploads)
            {
                if (t.UploadId == initResult.UploadId)
                {
                    mpUpload     = t.UploadId;
                    mpUploadInfo = t.ToString();
                }
            }

            Assert.IsNotNull(mpUpload, "The multipart uploading should be in progress");
            Assert.IsTrue(mpUploadInfo.Contains(mpUpload));

            var completeRequest = new CompleteMultipartUploadRequest(_bucketName, targetObjectKey, initResult.UploadId);

            foreach (var partETag in partETags)
            {
                if (overrideCrc)
                {
                    partETag.Crc64 = "0";
                }

                completeRequest.PartETags.Add(partETag);
            }
            ossClient.CompleteMultipartUpload(completeRequest);

            Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, targetObjectKey));

            //delete the object
            ossClient.DeleteObject(_bucketName, targetObjectKey);
        }