File: TestDevTunnelTimeProvider.cs
Web Access
Project: src\tests\Aspire.Hosting.DevTunnels.Tests\Aspire.Hosting.DevTunnels.Tests.csproj (Aspire.Hosting.DevTunnels.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Threading.Channels;
using Microsoft.Extensions.Time.Testing;
 
namespace Aspire.Hosting.DevTunnels.Tests;
 
internal sealed class TestDevTunnelTimeProvider() : FakeTimeProvider(DateTimeOffset.UtcNow)
{
    public Channel<TimeSpan> ScheduledDelays { get; } = Channel.CreateUnbounded<TimeSpan>();
 
    public override ITimer CreateTimer(TimerCallback callback, object? state, TimeSpan dueTime, TimeSpan period)
    {
        var timer = base.CreateTimer(callback, state, dueTime, period);
        ScheduledDelays.Writer.TryWrite(dueTime);
        return timer;
    }
}