DarabonbaUnitTests/RetryPolicy/BackoffPolicyTest.cs (70 lines of code) (raw):
using System.Collections.Generic;
using Darabonba.Exceptions;
using Darabonba.RetryPolicy;
using Xunit;
namespace DaraUnitTests.RetryPolicy
{
public class BackoffPolicyTest
{
[Fact]
public void Test_BackoffPolicy()
{
var exception = Assert.Throws<DaraException>(() =>
{
BackoffPolicy bp = BackoffPolicy.NewBackOffPolicy(new Dictionary<string, object>
{
{ "policy", "Any" }
});
});
Assert.Equal("Invalid backoff policy", exception.Message);
BackoffPolicy backoffPolicy = BackoffPolicy.NewBackOffPolicy(new Dictionary<string, object>
{
{ "policy", "Fixed" },
{ "period", 1000 }
});
Assert.Equal("FixedBackoffPolicy", backoffPolicy.GetType().Name);
backoffPolicy = BackoffPolicy.NewBackOffPolicy(new Dictionary<string, object>
{
{ "policy", "Random" },
{ "period", 2 },
{ "cap", 60000L }
});
Assert.Equal("RandomBackoffPolicy", backoffPolicy.GetType().Name);
backoffPolicy = BackoffPolicy.NewBackOffPolicy(new Dictionary<string, object>
{
{ "policy", "Exponential" },
{ "period", 2 },
{ "cap", 60000L }
});
Assert.Equal("ExponentialBackoffPolicy", backoffPolicy.GetType().Name);
backoffPolicy = BackoffPolicy.NewBackOffPolicy(new Dictionary<string, object>
{
{ "policy", "EqualJitter" },
{ "period", 2 },
{ "cap", 60000L }
});
Assert.Equal("EqualJitterBackoffPolicy", backoffPolicy.GetType().Name);
backoffPolicy = BackoffPolicy.NewBackOffPolicy(new Dictionary<string, object>
{
{ "policy", "ExponentialWithEqualJitter" },
{ "period", 2 },
{ "cap", 60000L }
});
Assert.Equal("EqualJitterBackoffPolicy", backoffPolicy.GetType().Name);
backoffPolicy = BackoffPolicy.NewBackOffPolicy(new Dictionary<string, object>
{
{ "policy", "FullJitter" },
{ "period", 2 },
{ "cap", 60000L }
});
Assert.Equal("FullJitterBackoffPolicy", backoffPolicy.GetType().Name);
backoffPolicy = BackoffPolicy.NewBackOffPolicy(new Dictionary<string, object>
{
{ "policy", "ExponentialWithFullJitter" },
{ "period", 2 },
{ "cap", 60000L }
});
Assert.Equal("FullJitterBackoffPolicy", backoffPolicy.GetType().Name);
}
}
}