Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

parallel run fixes and lint changes #809

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
bld/
[Bb]in/
[Oo]bj/
.history

# Visual Studio 2015 cache/options directory
.vs/
Expand Down
152 changes: 52 additions & 100 deletions Minio.Functional.Tests/FunctionalTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ internal static Task RunCoreTests(MinioClient minioClient)
GetBucketPolicy_Test1(minioClient)
};

return Utils.RunInParallel(coreTestsTasks, async (task, _) => { await task.ConfigureAwait(false); });
return Utils.RunInParallel(coreTestsTasks, async (task, _) => await task.ConfigureAwait(false));
}

internal static async Task BucketExists_Test(MinioClient minio)
Expand Down Expand Up @@ -587,7 +587,7 @@ internal static async Task TearDown(MinioClient minio, string bucketName)
if (!bktExists)
return;
var taskList = new List<Task>();
var getVersions = false;
var versioningOnBuckets = new Dictionary<string, bool>();
// Get Versioning/Retention Info.
var lockConfigurationArgs =
new GetObjectLockConfigurationArgs()
Expand All @@ -600,8 +600,9 @@ internal static async Task TearDown(MinioClient minio, string bucketName)
.WithBucket(bucketName)).ConfigureAwait(false);
if (versioningConfig is not null && (versioningConfig.Status.Contains("Enabled") ||
versioningConfig.Status.Contains("Suspended")))
getVersions = true;

versioningOnBuckets.Add(bucketName, true);
else
versioningOnBuckets.Add(bucketName, false);
lockConfig = await minio.GetObjectLockConfigurationAsync(lockConfigurationArgs).ConfigureAwait(false);
}
catch (MissingObjectLockConfigurationException)
Expand All @@ -617,17 +618,17 @@ internal static async Task TearDown(MinioClient minio, string bucketName)
var listObjectsArgs = new ListObjectsArgs()
.WithBucket(bucketName)
.WithRecursive(true)
.WithVersions(getVersions);
.WithVersions(versioningOnBuckets[bucketName]);
var objectNamesVersions =
new List<Tuple<string, string>>();
var objectNames = new List<string>();
var exceptionList = new List<Exception>();
var observable = minio.ListObjectsAsync(listObjectsArgs);

var exceptionList = new List<Exception>();
var subscription = observable.Subscribe(
item =>
{
if (getVersions)
if (versioningOnBuckets[bucketName])
objectNamesVersions.Add(new Tuple<string, string>(item.Key, item.VersionId));
else
objectNames.Add(item.Key);
Expand Down Expand Up @@ -659,6 +660,7 @@ internal static async Task TearDown(MinioClient minio, string bucketName)
}
else
{
// No retention/lock settings here
if (objectNamesVersions.Count > 0)
{
var removeObjectArgs = new RemoveObjectsArgs()
Expand All @@ -667,18 +669,18 @@ internal static async Task TearDown(MinioClient minio, string bucketName)
Task t = minio.RemoveObjectsAsync(removeObjectArgs);
tasks.Add(t);
}
}

if (objectNames.Count > 0)
{
var removeObjectArgs = new RemoveObjectsArgs()
.WithBucket(bucketName)
.WithObjects(objectNames);

Task t = minio.RemoveObjectsAsync(removeObjectArgs);
tasks.Add(t);
}
if (objectNames.Count > 0)
{
var removeObjectArgs = new RemoveObjectsArgs()
.WithBucket(bucketName)
.WithObjects(objectNames);
Task t = minio.RemoveObjectsAsync(removeObjectArgs);
tasks.Add(t);
}

// Remove all the objects
await Task.WhenAll(tasks).ConfigureAwait(false);
var rbArgs = new RemoveBucketArgs()
.WithBucket(bucketName);
Expand Down Expand Up @@ -785,6 +787,7 @@ internal static async Task PutGetStatEncryptedObject_Test1(MinioClient minio)
}
finally
{
if (File.Exists(tempFileName)) File.Delete(tempFileName);
await TearDown(minio, bucketName).ConfigureAwait(false);
}
}
Expand Down Expand Up @@ -1329,6 +1332,10 @@ internal static async Task RemoveObjects_Test3(MinioClient minio)
DateTime.Now - startTime, "", ex.Message, ex.ToString(), args).Log();
throw;
}
finally
{
await TearDown(minio, bucketName).ConfigureAwait(false);
}
}

internal static async Task DownloadObjectAsync(MinioClient minio, string url, string filePath)
Expand Down Expand Up @@ -2231,18 +2238,15 @@ internal static async Task ObjectLockConfigurationAsync_Test1(MinioClient minio)
{
{ "bucketName", bucketName }
};
var setLockNotImplemented = false;
var getLockNotImplemented = false;

try
{
await Setup_WithLock_Test(minio, bucketName).ConfigureAwait(false);
//TODO: Use it for testing and remove
{
var objectRetention = new ObjectRetentionConfiguration(DateTime.Today.AddDays(3));
using (var filestream = rsg.GenerateStreamFromSeed(1 * KB))
{
// Twice, for 2 versions.
// "PUT" the object twice, to have 2 versions.
var putObjectArgs1 = new PutObjectArgs()
.WithBucket(bucketName)
.WithObject(objectName)
Expand All @@ -2253,6 +2257,7 @@ internal static async Task ObjectLockConfigurationAsync_Test1(MinioClient minio)
await minio.PutObjectAsync(putObjectArgs1).ConfigureAwait(false);
}

// Generates the 2nd version
using (var filestream = rsg.GenerateStreamFromSeed(1 * KB))
{
var putObjectArgs2 = new PutObjectArgs()
Expand All @@ -2265,26 +2270,6 @@ internal static async Task ObjectLockConfigurationAsync_Test1(MinioClient minio)
await minio.PutObjectAsync(putObjectArgs2).ConfigureAwait(false);
}
}
}
catch (NotImplementedException ex)
{
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), setObjectLockConfigurationSignature,
"Tests whether SetObjectLockConfigurationAsync passes", TestStatus.NA, DateTime.Now - startTime,
ex.Message, ex.ToString(), args: args).Log();
await TearDown(minio, bucketName).ConfigureAwait(false);
return;
}
catch (Exception ex)
{
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), setObjectLockConfigurationSignature,
"Tests whether SetObjectLockConfigurationAsync passes", TestStatus.FAIL, DateTime.Now - startTime,
ex.Message, ex.ToString(), args: args).Log();
await TearDown(minio, bucketName).ConfigureAwait(false);
throw;
}

try
{
var objectLockArgs = new SetObjectLockConfigurationArgs()
.WithBucket(bucketName)
.WithLockConfiguration(
Expand All @@ -2295,13 +2280,6 @@ internal static async Task ObjectLockConfigurationAsync_Test1(MinioClient minio)
"Tests whether SetObjectLockConfigurationAsync passes", TestStatus.PASS, DateTime.Now - startTime,
args: args).Log();
}
catch (NotImplementedException ex)
{
setLockNotImplemented = true;
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), setObjectLockConfigurationSignature,
"Tests whether SetObjectLockConfigurationAsync passes", TestStatus.NA, DateTime.Now - startTime,
ex.Message, ex.ToString(), args: args).Log();
}
catch (Exception ex)
{
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), setObjectLockConfigurationSignature,
Expand All @@ -2322,55 +2300,33 @@ internal static async Task ObjectLockConfigurationAsync_Test1(MinioClient minio)
Assert.IsNotNull(config.Rule.DefaultRetention);
Assert.AreEqual(config.Rule.DefaultRetention.Days, 33);
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), getObjectLockConfigurationSignature,
"Tests whether GetObjectLockConfigurationAsync passes", TestStatus.PASS, DateTime.Now - startTime,
"Tests whether Set and Get ...ObjectLockConfigurationAsync apis pass", TestStatus.PASS,
DateTime.Now - startTime,
args: args).Log();
}
catch (NotImplementedException ex)
{
getLockNotImplemented = true;
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), getObjectLockConfigurationSignature,
"Tests whether GetObjectLockConfigurationAsync passes", TestStatus.NA, DateTime.Now - startTime,
ex.Message, ex.ToString(), args: args).Log();
}
catch (Exception ex)
{
await TearDown(minio, bucketName).ConfigureAwait(false);
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), getObjectLockConfigurationSignature,
"Tests whether GetObjectLockConfigurationAsync passes", TestStatus.FAIL, DateTime.Now - startTime,
"Tests whether Set and Get ...ObjectLockConfigurationAsync passes", TestStatus.FAIL,
DateTime.Now - startTime,
ex.Message, ex.ToString(), args: args).Log();
throw;
}

try
{
if (setLockNotImplemented || getLockNotImplemented)
{
// Cannot test Remove Object Lock with Set & Get Object Lock implemented.
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), deleteObjectLockConfigurationSignature,
"Tests whether RemoveObjectLockConfigurationAsync passes", TestStatus.NA, DateTime.Now - startTime,
"Functionality that is not implemented", "", args: args).Log();
await TearDown(minio, bucketName).ConfigureAwait(false);
return;
}

var objectLockArgs = new RemoveObjectLockConfigurationArgs()
.WithBucket(bucketName);
await minio.RemoveObjectLockConfigurationAsync(objectLockArgs).ConfigureAwait(false);
var getObjectLockArgs = new GetObjectLockConfigurationArgs()
.WithBucket(bucketName);
var config = await minio.GetObjectLockConfigurationAsync(getObjectLockArgs).ConfigureAwait(false);
Assert.IsNotNull(config);
Assert.IsNull(config.Rule);
Assert.AreEqual(ObjectLockConfiguration.LockEnabled, config.ObjectLockEnabled);
Assert.IsNull(config?.Rule);
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), deleteObjectLockConfigurationSignature,
"Tests whether RemoveObjectLockConfigurationAsync passes", TestStatus.PASS, DateTime.Now - startTime,
args: args).Log();
}
catch (NotImplementedException ex)
{
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), deleteObjectLockConfigurationSignature,
"Tests whether RemoveObjectLockConfigurationAsync passes", TestStatus.NA, DateTime.Now - startTime,
ex.Message, ex.ToString(), args: args).Log();
}
catch (Exception ex)
{
new MintLogger(nameof(ObjectLockConfigurationAsync_Test1), deleteObjectLockConfigurationSignature,
Expand All @@ -2380,7 +2336,6 @@ internal static async Task ObjectLockConfigurationAsync_Test1(MinioClient minio)
}
finally
{
await Task.Delay(1500).ConfigureAwait(false);
await TearDown(minio, bucketName).ConfigureAwait(false);
}
}
Expand Down Expand Up @@ -2652,35 +2607,35 @@ internal static async Task GetObjectS3Zip_Test1(MinioClient minio)

// ListObject api test with different prefix values
// prefix value="", expected number of files listed=1
var prefix = "";
await ListObjects_Test(minio, bucketName, prefix, 1, headers: extractHeader).ConfigureAwait(false);
var prefix1 = "";
await ListObjects_Test(minio, bucketName, prefix1, 1, headers: extractHeader).ConfigureAwait(false);

// prefix value="/", expected number of files listed=nFiles
prefix = objectName + "/";
await ListObjects_Test(minio, bucketName, prefix, nFiles, headers: extractHeader)
var prefix2 = objectName + "/";
await ListObjects_Test(minio, bucketName, prefix2, nFiles, headers: extractHeader)
.ConfigureAwait(false);

// prefix value="/test", expected number of files listed=nFiles
prefix = objectName + "/test";
await ListObjects_Test(minio, bucketName, prefix, nFiles, headers: extractHeader)
var prefix3 = objectName + "/test";
await ListObjects_Test(minio, bucketName, prefix3, nFiles, headers: extractHeader)
.ConfigureAwait(false);

// prefix value="/test/", expected number of files listed=nFiles
prefix = objectName + "/test/";
await ListObjects_Test(minio, bucketName, prefix, nFiles, headers: extractHeader)
var prefix4 = objectName + "/test/";
await ListObjects_Test(minio, bucketName, prefix4, nFiles, headers: extractHeader)
.ConfigureAwait(false);

// prefix value="/test", expected number of files listed=nFiles
prefix = objectName + "/test/small";
await ListObjects_Test(minio, bucketName, prefix, nFiles, headers: extractHeader)
// prefix value="/test/small", expected number of files listed=nFiles
var prefix5 = objectName + "/test/small";
await ListObjects_Test(minio, bucketName, prefix5, nFiles, headers: extractHeader)
.ConfigureAwait(false);

// prefix value="/test", expected number of files listed=nFiles
prefix = objectName + "/test/small/";
await ListObjects_Test(minio, bucketName, prefix, nFiles, headers: extractHeader)
// prefix value="/test/small/", expected number of files listed=nFiles
var prefix6 = objectName + "/test/small/";
await ListObjects_Test(minio, bucketName, prefix6, nFiles, headers: extractHeader)
.ConfigureAwait(false);

// prefix value="/test", expected number of files listed=1
// singleObjectName, expected number of files listed=1
await ListObjects_Test(minio, bucketName, singleObjectName, 1, headers: extractHeader)
.ConfigureAwait(false);

Expand Down Expand Up @@ -2763,7 +2718,7 @@ await PutObject_Tester(minio, bucketName, objectName, null, contentType,
// data. This is required to match and convert json data
// "receivedJson" into class "ErrorResponse"
var len = "{'Error':".Length;
var trimmedFront = receivedJson.Substring(len);
var trimmedFront = receivedJson[len..];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not available in netstandard2.0

var trimmedFull = trimmedFront.Substring(0, trimmedFront.Length - 1);

var err = JsonSerializer.Deserialize<ErrorResponse>(trimmedFull);
Expand Down Expand Up @@ -3649,11 +3604,11 @@ internal static async Task PutObject_Test10(MinioClient minio)
{
percentage = progressReport.Percentage;
totalBytesTransferred = progressReport.TotalBytesTransferred;
//Console.WriteLine(
// Console.WriteLine(
// $"Percentage: {progressReport.Percentage}% TotalBytesTransferred: {progressReport.TotalBytesTransferred} bytes");
//if (progressReport.Percentage != 100)
// if (progressReport.Percentage != 100)
// Console.SetCursorPosition(0, Console.CursorTop - 1);
//else Console.WriteLine();
// else Console.WriteLine();
});
var args = new Dictionary<string, string>
(StringComparer.Ordinal)
Expand Down Expand Up @@ -4838,7 +4793,6 @@ internal static async Task GetObject_Test2(MinioClient minio)
{
new MintLogger("GetObject_Test2", getObjectSignature, "Test setup for GetObject with a filename",
TestStatus.FAIL, DateTime.Now - startTime, ex.Message, ex.ToString(), args: args).Log();
await TearDown(minio, bucketName).ConfigureAwait(false);
throw;
}

Expand Down Expand Up @@ -5328,7 +5282,6 @@ internal static async Task ListObjects_Test5(MinioClient minio)
await Task.WhenAll(tasks).ConfigureAwait(false);

await ListObjects_Test(minio, bucketName, objectNamePrefix, numObjects, false).ConfigureAwait(false);
await Task.Delay(5000).ConfigureAwait(false);
new MintLogger("ListObjects_Test5", listObjectsSignature,
"Tests whether ListObjects lists all objects when number of objects == 100", TestStatus.PASS,
DateTime.Now - startTime, args: args).Log();
Expand Down Expand Up @@ -5520,7 +5473,7 @@ internal static async Task ListObjects_Test(MinioClient minio, string bucketName
() => { });
}

await Task.Delay(5000).ConfigureAwait(false);
await Task.Delay(15000 + (numObjects * 110)).ConfigureAwait(false);
Assert.AreEqual(numObjects, count);
}

Expand Down Expand Up @@ -5951,7 +5904,7 @@ internal static async Task ListIncompleteUpload_Test2(MinioClient minio)
{
await Setup_Test(minio, bucketName).ConfigureAwait(false);
using var cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromMilliseconds(15));
cts.CancelAfter(TimeSpan.FromMilliseconds(65));
try
{
using var filestream = rsg.GenerateStreamFromSeed(50 * MB);
Expand Down Expand Up @@ -6362,7 +6315,6 @@ internal static async Task BucketLifecycleAsync_Test2(MinioClient minio)
}
catch (Exception ex)
{
await TearDown(minio, bucketName).ConfigureAwait(false);
new MintLogger(nameof(BucketLifecycleAsync_Test2) + ".1", setBucketLifecycleSignature,
"Tests whether SetBucketLifecycleAsync passes", TestStatus.FAIL, DateTime.Now - startTime, ex.Message,
ex.ToString(), args: args).Log();
Expand Down
Loading
Loading