Adds AssertHelper for better less log-spamming retry-assert.

This commit is contained in:
benbierens 2023-06-01 16:28:34 +02:00
parent 9328f04f4a
commit 09e550df79
No known key found for this signature in database
GPG Key ID: FE44815D96D0A1AA
4 changed files with 34 additions and 9 deletions

View File

@ -0,0 +1,22 @@
using NUnit.Framework.Constraints;
using NUnit.Framework;
using Utils;
namespace DistTestCore.Helpers
{
public static class AssertHelpers
{
public static void RetryAssert<T>(IResolveConstraint constraint, Func<T> actual, string message)
{
try
{
var c = constraint.Resolve();
Time.WaitUntil(() => c.ApplyTo(actual()).IsSuccess);
}
catch (TimeoutException)
{
Assert.That(actual(), constraint, message);
}
}
}
}

View File

@ -1,4 +1,5 @@
using DistTestCore.Codex;
using DistTestCore.Helpers;
using NUnit.Framework;
using NUnit.Framework.Constraints;
using System.Numerics;
@ -97,10 +98,7 @@ namespace DistTestCore.Marketplace
public void AssertThatBalance(IResolveConstraint constraint, string message = "")
{
Time.Retry(() =>
{
Assert.That(GetBalance(), constraint, message);
}, nameof(AssertThatBalance));
AssertHelpers.RetryAssert(constraint, GetBalance, message);
}
public TestToken GetBalance()

View File

@ -1,4 +1,5 @@
using KubernetesWorkflow;
using DistTestCore.Helpers;
using KubernetesWorkflow;
using Logging;
using NUnit.Framework;
using NUnit.Framework.Constraints;
@ -28,15 +29,14 @@ namespace DistTestCore.Metrics
public void AssertThat(string metricName, IResolveConstraint constraint, string message = "")
{
Time.Retry(() =>
AssertHelpers.RetryAssert(constraint, () =>
{
var metricSet = GetMetricWithTimeout(metricName);
var metricValue = metricSet.Values[0].Value;
log.Log($"{node.Name} metric '{metricName}' = {metricValue}");
Assert.That(metricValue, constraint, message);
}, nameof(AssertThat));
return metricValue;
}, message);
}
public Metrics? GetAllMetrics()

View File

@ -22,6 +22,11 @@
result += $"{d.Seconds} secs";
return result;
}
public static void WaitUntil(Func<bool> predicate)
{
WaitUntil(predicate, TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(1));
}
public static void WaitUntil(Func<bool> predicate, TimeSpan timeout, TimeSpan retryTime)
{