From 857d1029c9cf786c381b7d94ccd99e57c4718ff1 Mon Sep 17 00:00:00 2001 From: Ersan Date: Sun, 30 Oct 2022 16:14:58 -0700 Subject: [PATCH 1/2] Fixes broken Tags and Versioning multipart upload functionality --- Minio.Functional.Tests/FunctionalTest.cs | 480 ++++++++++++----------- Minio.Functional.Tests/Program.cs | 3 + Minio/DataModel/ObjectOperationsArgs.cs | 12 + 3 files changed, 266 insertions(+), 229 deletions(-) diff --git a/Minio.Functional.Tests/FunctionalTest.cs b/Minio.Functional.Tests/FunctionalTest.cs index 4b9c29501..a08b800f9 100644 --- a/Minio.Functional.Tests/FunctionalTest.cs +++ b/Minio.Functional.Tests/FunctionalTest.cs @@ -1799,139 +1799,151 @@ internal static async Task BucketTagsAsync_Test1(MinioClient minio) internal static async Task ObjectTagsAsync_Test1(MinioClient minio) { - var startTime = DateTime.Now; - var bucketName = GetRandomName(15); - var objectName = GetRandomName(10); - var args = new Dictionary - { - { "bucketName", bucketName }, - { "objectName", objectName } - }; - var tags = new Dictionary - { - { "key1", "value1" }, - { "key2", "value2" }, - { "key3", "value3" } - }; - try - { - await Setup_Test(minio, bucketName); - } - catch (Exception ex) - { - new MintLogger(nameof(ObjectTagsAsync_Test1), setObjectTagsSignature, - "Tests whether SetObjectTagsAsync passes", TestStatus.FAIL, DateTime.Now - startTime, ex.Message, - ex.ToString(), args: args).Log(); - throw; - } + // Test will run twice once for file size 1KB amd once + // for 6MB to cover single and multipart upload + var sizesList = new List { 1 * KB, 6 * MB }; + foreach (var size in sizesList) + { + var startTime = DateTime.Now; + var bucketName = GetRandomName(15); + var objectName = GetRandomName(10); + var args = new Dictionary + { + { "bucketName", bucketName }, + { "objectName", objectName }, + { "fileSize", size.ToString() } + }; + var tags = new Dictionary + { + { "key1", "value1" }, + { "key2", "value2" }, + { "key3", "value3" } + }; + try + { + await Setup_Test(minio, bucketName); + } + catch (Exception ex) + { + new MintLogger(nameof(ObjectTagsAsync_Test1), setObjectTagsSignature, + "Tests whether SetObjectTagsAsync passes", TestStatus.FAIL, DateTime.Now - startTime, ex.Message, + ex.ToString(), args: args).Log(); + throw; + } - var exceptionThrown = false; - try - { - using (var filestream = rsg.GenerateStreamFromSeed(1 * KB)) + var exceptionThrown = false; + try { - var putObjectArgs = new PutObjectArgs() + using (var filestream = rsg.GenerateStreamFromSeed(size)) + { + var putObjectArgs = new PutObjectArgs() + .WithBucket(bucketName) + .WithObject(objectName) + .WithStreamData(filestream) + .WithObjectSize(filestream.Length) + .WithContentType(null); + await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false); + } + + var tagsArgs = new SetObjectTagsArgs() .WithBucket(bucketName) .WithObject(objectName) - .WithStreamData(filestream) - .WithObjectSize(filestream.Length) - .WithContentType(null); - await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false); + .WithTagging(Tagging.GetObjectTags(tags)); + await minio.SetObjectTagsAsync(tagsArgs).ConfigureAwait(false); + new MintLogger(nameof(ObjectTagsAsync_Test1), setObjectTagsSignature, + "Tests whether SetObjectTagsAsync passes", TestStatus.PASS, DateTime.Now - startTime, + args: args) + .Log(); + } + catch (NotImplementedException ex) + { + exceptionThrown = true; + new MintLogger(nameof(ObjectTagsAsync_Test1), setObjectTagsSignature, + "Tests whether SetObjectTagsAsync passes", TestStatus.NA, DateTime.Now - startTime, ex.Message, + ex.ToString(), args: args).Log(); + } + catch (Exception ex) + { + exceptionThrown = true; + new MintLogger(nameof(ObjectTagsAsync_Test1), setObjectTagsSignature, + "Tests whether SetObjectTagsAsync passes", TestStatus.FAIL, DateTime.Now - startTime, ex.Message, + ex.ToString(), args: args).Log(); + throw; } - var tagsArgs = new SetObjectTagsArgs() - .WithBucket(bucketName) - .WithObject(objectName) - .WithTagging(Tagging.GetObjectTags(tags)); - await minio.SetObjectTagsAsync(tagsArgs).ConfigureAwait(false); - new MintLogger(nameof(ObjectTagsAsync_Test1), setObjectTagsSignature, - "Tests whether SetObjectTagsAsync passes", TestStatus.PASS, DateTime.Now - startTime, args: args).Log(); - } - catch (NotImplementedException ex) - { - exceptionThrown = true; - new MintLogger(nameof(ObjectTagsAsync_Test1), setObjectTagsSignature, - "Tests whether SetObjectTagsAsync passes", TestStatus.NA, DateTime.Now - startTime, ex.Message, - ex.ToString(), args: args).Log(); - } - catch (Exception ex) - { - exceptionThrown = true; - new MintLogger(nameof(ObjectTagsAsync_Test1), setObjectTagsSignature, - "Tests whether SetObjectTagsAsync passes", TestStatus.FAIL, DateTime.Now - startTime, ex.Message, - ex.ToString(), args: args).Log(); - throw; - } - - try - { - exceptionThrown = false; - var tagsArgs = new GetObjectTagsArgs() - .WithBucket(bucketName) - .WithObject(objectName); - var tagObj = await minio.GetObjectTagsAsync(tagsArgs).ConfigureAwait(false); - Assert.IsNotNull(tagObj); - Assert.IsNotNull(tagObj.GetTags()); - var tagsRes = tagObj.GetTags(); - Assert.AreEqual(tagsRes.Count, tags.Count); - new MintLogger(nameof(ObjectTagsAsync_Test1), getObjectTagsSignature, - "Tests whether GetObjectTagsAsync passes", TestStatus.PASS, DateTime.Now - startTime, args: args).Log(); - } - catch (NotImplementedException ex) - { - exceptionThrown = true; - new MintLogger(nameof(ObjectTagsAsync_Test1), getObjectTagsSignature, - "Tests whether GetObjectTagsAsync passes", TestStatus.NA, DateTime.Now - startTime, ex.Message, - ex.ToString(), args: args).Log(); - } - catch (Exception ex) - { - exceptionThrown = true; - new MintLogger(nameof(ObjectTagsAsync_Test1), getObjectTagsSignature, - "Tests whether GetObjectTagsAsync passes", TestStatus.FAIL, DateTime.Now - startTime, ex.Message, - ex.ToString(), args: args).Log(); - throw; - } + try + { + exceptionThrown = false; + var tagsArgs = new GetObjectTagsArgs() + .WithBucket(bucketName) + .WithObject(objectName); + var tagObj = await minio.GetObjectTagsAsync(tagsArgs).ConfigureAwait(false); + Assert.IsNotNull(tagObj); + Assert.IsNotNull(tagObj.GetTags()); + var tagsRes = tagObj.GetTags(); + Assert.AreEqual(tagsRes.Count, tags.Count); + new MintLogger(nameof(ObjectTagsAsync_Test1), getObjectTagsSignature, + "Tests whether GetObjectTagsAsync passes", TestStatus.PASS, DateTime.Now - startTime, + args: args) + .Log(); + } + catch (NotImplementedException ex) + { + exceptionThrown = true; + new MintLogger(nameof(ObjectTagsAsync_Test1), getObjectTagsSignature, + "Tests whether GetObjectTagsAsync passes", TestStatus.NA, DateTime.Now - startTime, ex.Message, + ex.ToString(), args: args).Log(); + } + catch (Exception ex) + { + exceptionThrown = true; + new MintLogger(nameof(ObjectTagsAsync_Test1), getObjectTagsSignature, + "Tests whether GetObjectTagsAsync passes", TestStatus.FAIL, DateTime.Now - startTime, ex.Message, + ex.ToString(), args: args).Log(); + throw; + } - if (exceptionThrown) - { - await TearDown(minio, bucketName); - return; - } + if (exceptionThrown) + { + await TearDown(minio, bucketName); + return; + } - try - { - var tagsArgs = new RemoveObjectTagsArgs() - .WithBucket(bucketName) - .WithObject(objectName); - await minio.RemoveObjectTagsAsync(tagsArgs).ConfigureAwait(false); - var getTagsArgs = new GetObjectTagsArgs() - .WithBucket(bucketName) - .WithObject(objectName); - var tagObj = await minio.GetObjectTagsAsync(getTagsArgs).ConfigureAwait(false); - Assert.IsNotNull(tagObj); - var tagsRes = tagObj.GetTags(); - Assert.IsNull(tagsRes); - new MintLogger(nameof(ObjectTagsAsync_Test1), deleteObjectTagsSignature, - "Tests whether RemoveObjectTagsAsync passes", TestStatus.PASS, DateTime.Now - startTime, args: args) - .Log(); - } - catch (NotImplementedException ex) - { - new MintLogger(nameof(ObjectTagsAsync_Test1), deleteObjectTagsSignature, - "Tests whether RemoveObjectTagsAsync passes", TestStatus.NA, DateTime.Now - startTime, ex.Message, - ex.ToString(), args: args).Log(); - } - catch (Exception ex) - { - new MintLogger(nameof(ObjectTagsAsync_Test1), deleteObjectTagsSignature, - "Tests whether RemoveObjectTagsAsync passes", TestStatus.FAIL, DateTime.Now - startTime, ex.Message, - ex.ToString(), args: args).Log(); - throw; - } - finally - { - await TearDown(minio, bucketName); + try + { + var tagsArgs = new RemoveObjectTagsArgs() + .WithBucket(bucketName) + .WithObject(objectName); + await minio.RemoveObjectTagsAsync(tagsArgs).ConfigureAwait(false); + var getTagsArgs = new GetObjectTagsArgs() + .WithBucket(bucketName) + .WithObject(objectName); + var tagObj = await minio.GetObjectTagsAsync(getTagsArgs).ConfigureAwait(false); + Assert.IsNotNull(tagObj); + var tagsRes = tagObj.GetTags(); + Assert.IsNull(tagsRes); + new MintLogger(nameof(ObjectTagsAsync_Test1), deleteObjectTagsSignature, + "Tests whether RemoveObjectTagsAsync passes", TestStatus.PASS, DateTime.Now - startTime, + args: args) + .Log(); + } + catch (NotImplementedException ex) + { + new MintLogger(nameof(ObjectTagsAsync_Test1), deleteObjectTagsSignature, + "Tests whether RemoveObjectTagsAsync passes", TestStatus.NA, DateTime.Now - startTime, ex.Message, + ex.ToString(), args: args).Log(); + } + catch (Exception ex) + { + new MintLogger(nameof(ObjectTagsAsync_Test1), deleteObjectTagsSignature, + "Tests whether RemoveObjectTagsAsync passes", TestStatus.FAIL, DateTime.Now - startTime, ex.Message, + ex.ToString(), args: args).Log(); + throw; + } + finally + { + await TearDown(minio, bucketName); + } } } @@ -1941,125 +1953,135 @@ internal static async Task ObjectTagsAsync_Test1(MinioClient minio) internal static async Task ObjectVersioningAsync_Test1(MinioClient minio) { - var startTime = DateTime.Now; - var bucketName = GetRandomName(15); - var objectName = GetRandomName(10); - var args = new Dictionary - { - { "bucketName", bucketName }, - { "objectName", objectName } - }; - try - { - await Setup_Test(minio, bucketName); + // Test will run twice once for file size 1KB amd once + // for 6MB to cover single and multipart upload + var sizesList = new List { 1 * KB, 6 * MB }; + foreach (var size in sizesList) + { + var startTime = DateTime.Now; + var bucketName = GetRandomName(15); + var objectName = GetRandomName(10); + var args = new Dictionary { - // Set versioning enabled test - var setVersioningArgs = new SetVersioningArgs() - .WithBucket(bucketName) - .WithVersioningEnabled(); - await minio.SetVersioningAsync(setVersioningArgs).ConfigureAwait(false); - - // Twice, for 2 versions. - using (var filestream = rsg.GenerateStreamFromSeed(1 * KB)) + { "bucketName", bucketName }, + { "objectName", objectName }, + { "fileSize", size.ToString() } + }; + try + { + await Setup_Test(minio, bucketName); { - var putObjectArgs = new PutObjectArgs() + // Set versioning enabled test + var setVersioningArgs = new SetVersioningArgs() .WithBucket(bucketName) - .WithObject(objectName) - .WithStreamData(filestream) - .WithObjectSize(filestream.Length) - .WithContentType(null); - await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false); + .WithVersioningEnabled(); + await minio.SetVersioningAsync(setVersioningArgs).ConfigureAwait(false); + + // Twice, for 2 versions. + using (var filestream = rsg.GenerateStreamFromSeed(size)) + { + var putObjectArgs = new PutObjectArgs() + .WithBucket(bucketName) + .WithObject(objectName) + .WithStreamData(filestream) + .WithObjectSize(filestream.Length) + .WithContentType(null); + await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false); + } + + using (var filestream = rsg.GenerateStreamFromSeed(size)) + { + var putObjectArgs = new PutObjectArgs() + .WithBucket(bucketName) + .WithObject(objectName) + .WithStreamData(filestream) + .WithObjectSize(filestream.Length) + .WithContentType(null); + await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false); + } + + new MintLogger(nameof(ObjectVersioningAsync_Test1), setVersioningSignature, + "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", + TestStatus.PASS, + DateTime.Now - startTime, args: args).Log(); + + var objectVersionCount = 2; + var objectVersionIndex = 0; + var listArgs = new ListObjectsArgs() + .WithBucket(bucketName); + var observable = minio.ListObjectsAsync(listArgs); + var objVersions = new List>(); + var subscription = observable.Subscribe( + item => + { + objVersions.Add(new Tuple(item.Key, item.VersionId)); + objectVersionIndex++; + }, + ex => throw ex, + () => { Assert.IsTrue(objectVersionIndex == objectVersionCount); }); + Thread.Sleep(1500); } - using (var filestream = rsg.GenerateStreamFromSeed(1 * KB)) { - var putObjectArgs = new PutObjectArgs() + // Get Versioning Test + var getVersioningArgs = new GetVersioningArgs() + .WithBucket(bucketName); + var versioningConfig = await minio.GetVersioningAsync(getVersioningArgs).ConfigureAwait(false); + Assert.IsNotNull(versioningConfig); + Assert.IsNotNull(versioningConfig.Status); + Assert.IsTrue(versioningConfig.Status.ToLower().Equals("enabled")); + + new MintLogger(nameof(ObjectVersioningAsync_Test1), getVersioningSignature, + "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", + TestStatus.PASS, + DateTime.Now - startTime, args: args).Log(); + } + { + // Suspend Versioning test. + var setVersioningArgs = new SetVersioningArgs() .WithBucket(bucketName) - .WithObject(objectName) - .WithStreamData(filestream) - .WithObjectSize(filestream.Length) - .WithContentType(null); - await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false); + .WithVersioningSuspended(); + await minio.SetVersioningAsync(setVersioningArgs).ConfigureAwait(false); + + var objectCount = 1; + var objectIndex = 0; + var listArgs = new ListObjectsArgs() + .WithBucket(bucketName); + var observable = minio.ListObjectsAsync(listArgs); + var objects = new List>(); + var subscription = observable.Subscribe( + item => + { + objects.Add(new Tuple(item.Key)); + objectIndex++; + }, + ex => throw ex, + () => { Assert.IsTrue(objectIndex == objectCount); }); + Thread.Sleep(1500); + new MintLogger(nameof(ObjectVersioningAsync_Test1), removeVersioningSignature, + "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", + TestStatus.PASS, + DateTime.Now - startTime, args: args).Log(); } - + } + catch (NotImplementedException ex) + { new MintLogger(nameof(ObjectVersioningAsync_Test1), setVersioningSignature, - "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", TestStatus.PASS, - DateTime.Now - startTime, args: args).Log(); - - var objectVersionCount = 2; - var objectVersionIndex = 0; - var listArgs = new ListObjectsArgs() - .WithBucket(bucketName); - var observable = minio.ListObjectsAsync(listArgs); - var objVersions = new List>(); - var subscription = observable.Subscribe( - item => - { - objVersions.Add(new Tuple(item.Key, item.VersionId)); - objectVersionIndex++; - }, - ex => throw ex, - () => { Assert.IsTrue(objectVersionIndex == objectVersionCount); }); - Thread.Sleep(1500); + "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", TestStatus.NA, + DateTime.Now - startTime, ex.Message, ex.ToString(), args: args).Log(); } - + catch (Exception ex) { - // Get Versioning Test - var getVersioningArgs = new GetVersioningArgs() - .WithBucket(bucketName); - var versioningConfig = await minio.GetVersioningAsync(getVersioningArgs).ConfigureAwait(false); - Assert.IsNotNull(versioningConfig); - Assert.IsNotNull(versioningConfig.Status); - Assert.IsTrue(versioningConfig.Status.ToLower().Equals("enabled")); - - new MintLogger(nameof(ObjectVersioningAsync_Test1), getVersioningSignature, - "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", TestStatus.PASS, - DateTime.Now - startTime, args: args).Log(); + new MintLogger(nameof(ObjectVersioningAsync_Test1), setVersioningSignature, + "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", TestStatus.FAIL, + DateTime.Now - startTime, ex.Message, ex.ToString(), args: args).Log(); + throw; } + finally { - // Suspend Versioning test. - var setVersioningArgs = new SetVersioningArgs() - .WithBucket(bucketName) - .WithVersioningSuspended(); - await minio.SetVersioningAsync(setVersioningArgs).ConfigureAwait(false); - - var objectCount = 1; - var objectIndex = 0; - var listArgs = new ListObjectsArgs() - .WithBucket(bucketName); - var observable = minio.ListObjectsAsync(listArgs); - var objects = new List>(); - var subscription = observable.Subscribe( - item => - { - objects.Add(new Tuple(item.Key)); - objectIndex++; - }, - ex => throw ex, - () => { Assert.IsTrue(objectIndex == objectCount); }); - Thread.Sleep(1500); - new MintLogger(nameof(ObjectVersioningAsync_Test1), removeVersioningSignature, - "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", TestStatus.PASS, - DateTime.Now - startTime, args: args).Log(); + await TearDown(minio, bucketName); } } - catch (NotImplementedException ex) - { - new MintLogger(nameof(ObjectVersioningAsync_Test1), setVersioningSignature, - "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", TestStatus.NA, - DateTime.Now - startTime, ex.Message, ex.ToString(), args: args).Log(); - } - catch (Exception ex) - { - new MintLogger(nameof(ObjectVersioningAsync_Test1), setVersioningSignature, - "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", TestStatus.FAIL, - DateTime.Now - startTime, ex.Message, ex.ToString(), args: args).Log(); - throw; - } - finally - { - await TearDown(minio, bucketName); - } } #endregion diff --git a/Minio.Functional.Tests/Program.cs b/Minio.Functional.Tests/Program.cs index 8ed5228c3..4b3114227 100644 --- a/Minio.Functional.Tests/Program.cs +++ b/Minio.Functional.Tests/Program.cs @@ -194,6 +194,9 @@ public static void Main(string[] args) // Test GetBucket policy FunctionalTest.GetBucketPolicy_Test1(minioClient).Wait(); + // Test object versioning + FunctionalTest.ObjectVersioningAsync_Test1(minioClient).Wait(); + // Test Object Lock Configuration FunctionalTest.ObjectLockConfigurationAsync_Test1(minioClient).Wait(); diff --git a/Minio/DataModel/ObjectOperationsArgs.cs b/Minio/DataModel/ObjectOperationsArgs.cs index 69e452173..8908e69e1 100644 --- a/Minio/DataModel/ObjectOperationsArgs.cs +++ b/Minio/DataModel/ObjectOperationsArgs.cs @@ -1344,6 +1344,18 @@ internal override HttpRequestMessageBuilder BuildRequest(HttpRequestMessageBuild internal class NewMultipartUploadPutArgs : NewMultipartUploadArgs { + internal override HttpRequestMessageBuilder BuildRequest(HttpRequestMessageBuilder requestMessageBuilder) + { + requestMessageBuilder.AddQueryParameter("uploads", ""); + + if (ObjectTags != null && ObjectTags.TaggingSet != null + && ObjectTags.TaggingSet.Tag.Count > 0) + requestMessageBuilder.AddOrUpdateHeaderParameter("x-amz-tagging", ObjectTags.GetTagString()); + + requestMessageBuilder.AddOrUpdateHeaderParameter("content-type", ContentType); + + return requestMessageBuilder; + } } internal class MultipartCopyUploadArgs : ObjectWriteArgs From 71a04c255f6cd67bc17cf8b00e7eaa10c6ec6ea4 Mon Sep 17 00:00:00 2001 From: Ersan Date: Mon, 31 Oct 2022 17:42:49 -0700 Subject: [PATCH 2/2] Rearranges the Versioning test --- Minio.Functional.Tests/FunctionalTest.cs | 50 ++++++------------------ 1 file changed, 12 insertions(+), 38 deletions(-) diff --git a/Minio.Functional.Tests/FunctionalTest.cs b/Minio.Functional.Tests/FunctionalTest.cs index a08b800f9..f77a695a9 100644 --- a/Minio.Functional.Tests/FunctionalTest.cs +++ b/Minio.Functional.Tests/FunctionalTest.cs @@ -1800,7 +1800,7 @@ internal static async Task BucketTagsAsync_Test1(MinioClient minio) internal static async Task ObjectTagsAsync_Test1(MinioClient minio) { // Test will run twice once for file size 1KB amd once - // for 6MB to cover single and multipart upload + // for 6MB to cover single and multipart upload functions var sizesList = new List { 1 * KB, 6 * MB }; foreach (var size in sizesList) { @@ -1954,10 +1954,11 @@ internal static async Task ObjectTagsAsync_Test1(MinioClient minio) internal static async Task ObjectVersioningAsync_Test1(MinioClient minio) { // Test will run twice once for file size 1KB amd once - // for 6MB to cover single and multipart upload + // for 6MB to cover single and multipart upload functions var sizesList = new List { 1 * KB, 6 * MB }; foreach (var size in sizesList) { + var loopIndex = 1; var startTime = DateTime.Now; var bucketName = GetRandomName(15); var objectName = GetRandomName(10); @@ -1977,7 +1978,7 @@ internal static async Task ObjectVersioningAsync_Test1(MinioClient minio) .WithVersioningEnabled(); await minio.SetVersioningAsync(setVersioningArgs).ConfigureAwait(false); - // Twice, for 2 versions. + // Put the same object twice to have 2 versions of it using (var filestream = rsg.GenerateStreamFromSeed(size)) { var putObjectArgs = new PutObjectArgs() @@ -2000,29 +2001,15 @@ internal static async Task ObjectVersioningAsync_Test1(MinioClient minio) await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false); } + // In each run, there will be 2 more versions of the object + var objectVersionCount = loopIndex * 2; + ListObjects_Test(minio, bucketName, "", objectVersionCount, true, true); new MintLogger(nameof(ObjectVersioningAsync_Test1), setVersioningSignature, "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", TestStatus.PASS, DateTime.Now - startTime, args: args).Log(); - var objectVersionCount = 2; - var objectVersionIndex = 0; - var listArgs = new ListObjectsArgs() - .WithBucket(bucketName); - var observable = minio.ListObjectsAsync(listArgs); - var objVersions = new List>(); - var subscription = observable.Subscribe( - item => - { - objVersions.Add(new Tuple(item.Key, item.VersionId)); - objectVersionIndex++; - }, - ex => throw ex, - () => { Assert.IsTrue(objectVersionIndex == objectVersionCount); }); - Thread.Sleep(1500); - } - { // Get Versioning Test var getVersioningArgs = new GetVersioningArgs() .WithBucket(bucketName); @@ -2035,29 +2022,16 @@ internal static async Task ObjectVersioningAsync_Test1(MinioClient minio) "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", TestStatus.PASS, DateTime.Now - startTime, args: args).Log(); - } - { - // Suspend Versioning test. - var setVersioningArgs = new SetVersioningArgs() + + + // Suspend Versioning test + setVersioningArgs = new SetVersioningArgs() .WithBucket(bucketName) .WithVersioningSuspended(); await minio.SetVersioningAsync(setVersioningArgs).ConfigureAwait(false); var objectCount = 1; - var objectIndex = 0; - var listArgs = new ListObjectsArgs() - .WithBucket(bucketName); - var observable = minio.ListObjectsAsync(listArgs); - var objects = new List>(); - var subscription = observable.Subscribe( - item => - { - objects.Add(new Tuple(item.Key)); - objectIndex++; - }, - ex => throw ex, - () => { Assert.IsTrue(objectIndex == objectCount); }); - Thread.Sleep(1500); + ListObjects_Test(minio, bucketName, "", objectCount, false); new MintLogger(nameof(ObjectVersioningAsync_Test1), removeVersioningSignature, "Tests whether SetVersioningAsync/GetVersioningAsync/RemoveVersioningAsync passes", TestStatus.PASS,