53 lines
1.8 KiB
C#
53 lines
1.8 KiB
C#
|
|
using Elsa.AI.Host.Streaming;
|
||
|
|
|
||
|
|
namespace Elsa.AI.IntegrationTests;
|
||
|
|
|
||
|
|
public class AIChatReconnectTests
|
||
|
|
{
|
||
|
|
[Fact(DisplayName = "Disconnected chat can reconnect during grace window")]
|
||
|
|
public void DisconnectedChatCanReconnectDuringGraceWindow()
|
||
|
|
{
|
||
|
|
var manager = new AIStreamSessionManager();
|
||
|
|
|
||
|
|
manager.MarkDisconnected("conversation-1", TimeSpan.FromMinutes(5));
|
||
|
|
|
||
|
|
Assert.True(manager.CanReconnect("conversation-1"));
|
||
|
|
manager.ReleaseReconnect("conversation-1");
|
||
|
|
Assert.True(manager.CanReconnect("conversation-1"));
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact(DisplayName = "Reconnect eligibility is atomically reserved")]
|
||
|
|
public void ReconnectEligibilityIsAtomicallyReserved()
|
||
|
|
{
|
||
|
|
var manager = new AIStreamSessionManager();
|
||
|
|
|
||
|
|
manager.MarkDisconnected("conversation-1", TimeSpan.FromMinutes(5));
|
||
|
|
|
||
|
|
Assert.True(manager.CanReconnect("conversation-1"));
|
||
|
|
Assert.False(manager.CanReconnect("conversation-1"));
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact(DisplayName = "Reconnect deadline is removed after successful reconnect")]
|
||
|
|
public void ReconnectDeadlineIsRemovedAfterSuccessfulReconnect()
|
||
|
|
{
|
||
|
|
var manager = new AIStreamSessionManager();
|
||
|
|
|
||
|
|
manager.MarkDisconnected("conversation-1", TimeSpan.FromMinutes(5));
|
||
|
|
|
||
|
|
Assert.True(manager.CanReconnect("conversation-1"));
|
||
|
|
manager.MarkConnected("conversation-1");
|
||
|
|
Assert.False(manager.CanReconnect("conversation-1"));
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact(DisplayName = "Expired reconnect deadline is removed")]
|
||
|
|
public void ExpiredReconnectDeadlineIsRemoved()
|
||
|
|
{
|
||
|
|
var manager = new AIStreamSessionManager();
|
||
|
|
|
||
|
|
manager.MarkDisconnected("conversation-1", TimeSpan.FromMilliseconds(-1));
|
||
|
|
|
||
|
|
Assert.False(manager.CanReconnect("conversation-1"));
|
||
|
|
Assert.False(manager.CanReconnect("conversation-1"));
|
||
|
|
}
|
||
|
|
}
|