Skip to content

Commit b517250

Browse files
authored
.Net4.x support and parallel test run fixes (#792)
1 parent a29f4b1 commit b517250

File tree

3 files changed

+57
-35
lines changed

3 files changed

+57
-35
lines changed

Minio.Functional.Tests/FunctionalTest.cs

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -332,13 +332,8 @@ internal static async Task RunCoreTests(MinioClient minioClient)
332332
GetBucketPolicy_Test1(minioClient)
333333
};
334334

335-
ParallelOptions parallelOptions = new()
336-
{
337-
MaxDegreeOfParallelism = 4
338-
};
339-
await Parallel
340-
.ForEachAsync(coreTestsTasks, parallelOptions,
341-
async (task, _) => { await task.ConfigureAwait(false); }).ConfigureAwait(false);
335+
await Utils.RunInParallel(coreTestsTasks, async (task, _) => { await task.ConfigureAwait(false); })
336+
.ConfigureAwait(false);
342337
}
343338

344339
internal static async Task BucketExists_Test(MinioClient minio)
@@ -482,14 +477,20 @@ internal static async Task RemoveBucket_Test2(MinioClient minio)
482477
internal static async Task ListBuckets_Test(MinioClient minio)
483478
{
484479
var startTime = DateTime.Now;
485-
var args = new Dictionary<string, string>();
486480
IList<Bucket> bucketList = new List<Bucket>();
487-
var bucketName = "buucketnaame";
481+
var bucketNameSuffix = "listbucketstest";
488482
var noOfBuckets = 5;
483+
484+
var args = new Dictionary<string, string>
485+
{
486+
{ "bucketNameSuffix", bucketNameSuffix },
487+
{ "noOfBuckets", noOfBuckets.ToString() }
488+
};
489+
489490
try
490491
{
491492
foreach (var indx in Enumerable.Range(1, noOfBuckets))
492-
await Setup_Test(minio, bucketName + indx).ConfigureAwait(false);
493+
await Setup_Test(minio, "bucket" + indx + bucketNameSuffix).ConfigureAwait(false);
493494
}
494495
catch (Exception ex)
495496
{
@@ -507,7 +508,7 @@ internal static async Task ListBuckets_Test(MinioClient minio)
507508
{
508509
var list = await minio.ListBucketsAsync().ConfigureAwait(false);
509510
bucketList = list.Buckets;
510-
bucketList = bucketList.Where(x => x.Name.StartsWith(bucketName)).ToList();
511+
bucketList = bucketList.Where(x => x.Name.EndsWith(bucketNameSuffix)).ToList();
511512
Assert.AreEqual(noOfBuckets, bucketList.Count);
512513
bucketList.ToList().Sort((x, y) =>
513514
{
@@ -520,7 +521,7 @@ internal static async Task ListBuckets_Test(MinioClient minio)
520521
foreach (var bucket in bucketList)
521522
{
522523
indx++;
523-
Assert.AreEqual(bucketName + indx, bucket.Name);
524+
Assert.AreEqual("bucket" + indx + bucketNameSuffix, bucket.Name);
524525
}
525526

526527
new MintLogger(nameof(ListBuckets_Test), listBucketsSignature, "Tests whether ListBucket passes",
@@ -1476,7 +1477,7 @@ internal static async Task SelectObjectContent_Test(MinioClient minio)
14761477
var startTime = DateTime.Now;
14771478
var bucketName = GetRandomName(15);
14781479
var objectName = GetRandomObjectName(10);
1479-
var outFileName = "outFileName";
1480+
var outFileName = "outFileName-SelectObjectContent_Test";
14801481
var args = new Dictionary<string, string>
14811482
{
14821483
{ "bucketName", bucketName },
@@ -2861,10 +2862,10 @@ void Notify(MinioNotificationRaw data)
28612862
var sleepTime = 1000; // Milliseconds
28622863
await Task.Delay(sleepTime).ConfigureAwait(false);
28632864

2864-
var modelJson = "{\"test\": \"test\"}";
2865+
var modelJson = "{\"test2\": \"test2\"}";
28652866
using var stream = Encoding.UTF8.GetBytes(modelJson).AsMemory().AsStream();
28662867
var putObjectArgs = new PutObjectArgs()
2867-
.WithObject("test.json")
2868+
.WithObject("test2.json")
28682869
.WithBucket(bucketName)
28692870
.WithContentType(contentType)
28702871
.WithStreamData(stream)
@@ -2942,11 +2943,11 @@ internal static async Task ListenBucketNotificationsAsync_Test3(MinioClient mini
29422943
.WithSuffix(suffix)
29432944
.WithEvents(events);
29442945

2945-
var modelJson = "{\"test\": \"test\"}";
2946+
var modelJson = "{\"test3\": \"test3\"}";
29462947

29472948
using var stream = Encoding.UTF8.GetBytes(modelJson).AsMemory().AsStream();
29482949
var putObjectArgs = new PutObjectArgs()
2949-
.WithObject("test.json")
2950+
.WithObject("test3.json")
29502951
.WithBucket(bucketName)
29512952
.WithContentType(contentType)
29522953
.WithStreamData(stream)
@@ -3545,7 +3546,7 @@ internal static async Task CopyObject_Test1(MinioClient minio)
35453546
var objectName = GetRandomObjectName(10);
35463547
var destBucketName = GetRandomName(15);
35473548
var destObjectName = GetRandomName(10);
3548-
var outFileName = "outFileName";
3549+
var outFileName = "outFileName-CopyObject_Test1";
35493550
var args = new Dictionary<string, string>
35503551
{
35513552
{ "bucketName", bucketName },
@@ -3703,7 +3704,7 @@ internal static async Task CopyObject_Test3(MinioClient minio)
37033704
var objectName = GetRandomObjectName(10);
37043705
var destBucketName = GetRandomName(15);
37053706
var destObjectName = GetRandomName(10);
3706-
var outFileName = "outFileName";
3707+
var outFileName = "outFileName-CopyObject_Test3";
37073708
var args = new Dictionary<string, string>
37083709
{
37093710
{ "bucketName", bucketName },
@@ -3780,7 +3781,7 @@ internal static async Task CopyObject_Test4(MinioClient minio)
37803781
var objectName = GetRandomObjectName(10);
37813782
var destBucketName = GetRandomName(15);
37823783
var destObjectName = GetRandomName(10);
3783-
var outFileName = "outFileName";
3784+
var outFileName = "outFileName-CopyObject_Test4";
37843785
var args = new Dictionary<string, string>
37853786
{
37863787
{ "bucketName", bucketName },
@@ -3854,7 +3855,6 @@ internal static async Task CopyObject_Test5(MinioClient minio)
38543855
var objectName = GetRandomObjectName(10);
38553856
var destBucketName = GetRandomName(15);
38563857
var destObjectName = GetRandomName(10);
3857-
// string outFileName = "outFileName";
38583858
var args = new Dictionary<string, string>
38593859
{
38603860
{ "bucketName", bucketName },
@@ -3931,7 +3931,7 @@ internal static async Task CopyObject_Test6(MinioClient minio)
39313931
var objectName = GetRandomObjectName(10);
39323932
var destBucketName = GetRandomName(15);
39333933
var destObjectName = GetRandomName(10);
3934-
var outFileName = "outFileName";
3934+
var outFileName = "outFileName-CopyObject_Test6";
39353935
var args = new Dictionary<string, string>
39363936
{
39373937
{ "bucketName", bucketName },
@@ -4176,7 +4176,7 @@ internal static async Task CopyObject_Test9(MinioClient minio)
41764176
var objectName = GetRandomObjectName(10);
41774177
var destBucketName = GetRandomName(15);
41784178
var destObjectName = GetRandomName(10);
4179-
var outFileName = "outFileName";
4179+
var outFileName = "outFileName-CopyObject_Test9";
41804180
var args = new Dictionary<string, string>
41814181
{
41824182
{ "bucketName", bucketName },
@@ -4264,7 +4264,7 @@ internal static async Task EncryptedCopyObject_Test1(MinioClient minio)
42644264
var objectName = GetRandomObjectName(10);
42654265
var destBucketName = GetRandomName(15);
42664266
var destObjectName = GetRandomName(10);
4267-
var outFileName = "outFileName";
4267+
var outFileName = "outFileName-EncryptedCopyObject_Test1";
42684268
var args = new Dictionary<string, string>
42694269
{
42704270
{ "bucketName", bucketName },
@@ -4347,7 +4347,7 @@ internal static async Task EncryptedCopyObject_Test2(MinioClient minio)
43474347
var objectName = GetRandomObjectName(10);
43484348
var destBucketName = GetRandomName(15);
43494349
var destObjectName = GetRandomName(10);
4350-
var outFileName = "outFileName";
4350+
var outFileName = "outFileName-EncryptedCopyObject_Test2";
43514351
var args = new Dictionary<string, string>
43524352
{
43534353
{ "bucketName", bucketName },
@@ -4428,7 +4428,7 @@ internal static async Task EncryptedCopyObject_Test3(MinioClient minio)
44284428
var objectName = GetRandomObjectName(10);
44294429
var destBucketName = GetRandomName(15);
44304430
var destObjectName = GetRandomName(10);
4431-
var outFileName = "outFileName";
4431+
var outFileName = "outFileName-EncryptedCopyObject_Test3";
44324432
var args = new Dictionary<string, string>
44334433
{
44344434
{ "bucketName", bucketName },
@@ -4502,7 +4502,7 @@ internal static async Task EncryptedCopyObject_Test4(MinioClient minio)
45024502
var objectName = GetRandomObjectName(10);
45034503
var destBucketName = GetRandomName(15);
45044504
var destObjectName = GetRandomName(10);
4505-
var outFileName = "outFileName";
4505+
var outFileName = "outFileName-EncryptedCopyObject_Test4";
45064506
var args = new Dictionary<string, string>
45074507
{
45084508
{ "bucketName", bucketName },
@@ -4918,7 +4918,7 @@ internal static async Task FGetObject_Test1(MinioClient minio)
49184918
var startTime = DateTime.Now;
49194919
var bucketName = GetRandomName(15);
49204920
var objectName = GetRandomObjectName(10);
4921-
var outFileName = "outFileName";
4921+
var outFileName = "outFileName-FGetObject_Test1";
49224922
var args = new Dictionary<string, string>
49234923
{
49244924
{ "bucketName", bucketName },

Minio.Functional.Tests/Program.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -244,12 +244,7 @@ public static async Task Main(string[] args)
244244
functionalTestTasks.Add(FunctionalTest.EncryptedCopyObject_Test4(minioClient));
245245
}
246246

247-
ParallelOptions parallelOptions = new()
248-
{
249-
MaxDegreeOfParallelism = 4
250-
};
251-
await Parallel
252-
.ForEachAsync(functionalTestTasks, parallelOptions,
253-
async (task, _) => { await task.ConfigureAwait(false); }).ConfigureAwait(false);
247+
await Utils.RunInParallel(functionalTestTasks, async (task, _) => { await task.ConfigureAwait(false); })
248+
.ConfigureAwait(false);
254249
}
255250
}

Minio/Helper/Utils.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
using System.Xml.Serialization;
2828
using Minio.Exceptions;
2929
using Minio.Helper;
30+
#if !NET6_0_OR_GREATER
31+
using System.Collections.Concurrent;
32+
#endif
3033

3134
namespace Minio;
3235

@@ -196,6 +199,30 @@ internal static bool IsSupersetOf(IList<string> l1, IList<string> l2)
196199
return !l2.Except(l1).Any();
197200
}
198201

202+
public static async Task RunInParallel<TSource>(IEnumerable<TSource> source,
203+
Func<TSource, CancellationToken, ValueTask> body)
204+
{
205+
var maxNoOfParallelProcesses = 4;
206+
#if NET6_0_OR_GREATER
207+
ParallelOptions parallelOptions = new()
208+
{
209+
MaxDegreeOfParallelism = maxNoOfParallelProcesses
210+
};
211+
await Parallel.ForEachAsync(source, parallelOptions, body);
212+
#else
213+
await Task.WhenAll(Partitioner.Create(source).GetPartitions(maxNoOfParallelProcesses)
214+
.Select(partition => Task.Run(async delegate
215+
{
216+
using (partition)
217+
{
218+
while (partition.MoveNext())
219+
await body(partition.Current, new CancellationToken());
220+
}
221+
}
222+
)));
223+
#endif
224+
}
225+
199226
public static bool CaseInsensitiveContains(string text, string value,
200227
StringComparison stringComparison = StringComparison.CurrentCultureIgnoreCase)
201228
{

0 commit comments

Comments
 (0)