Dreamine.FullKit.Tests 1.0.0.0
Dreamine.FullKit.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
OutboundQueueTests.cs
이 파일의 문서화 페이지로 가기
1using Dreamine.Communication.Abstractions.Models;
2using Dreamine.Communication.Abstractions.Options;
3using Dreamine.Communication.Core.Queues;
4
6
15public sealed class OutboundQueueTests
16{
33 [Fact]
35 {
36 var queue = new InMemoryOutboundMessageQueue(new OutboundQueueOptions
37 {
38 MaxQueueSize = 2,
39 DropOldestWhenFull = true
40 });
41
42 await queue.EnqueueAsync(Create("one"));
43 await queue.EnqueueAsync(Create("two"));
44 await queue.EnqueueAsync(Create("three"));
45
46 Assert.Equal("two", (await queue.TryDequeueAsync())!.Message.Name);
47 Assert.Equal("three", (await queue.TryDequeueAsync())!.Message.Name);
48 Assert.Null(await queue.TryDequeueAsync());
49 }
50
67 [Fact]
69 {
70 var queue = new InMemoryOutboundMessageQueue(new OutboundQueueOptions
71 {
72 MaxQueueSize = 2,
73 DropOldestWhenFull = true
74 });
75
76 await queue.EnqueueAsync(Create("one"));
77 await queue.EnqueueAsync(Create("two"));
78 await queue.EnqueueFrontAsync(Create("zero"));
79
80 Assert.Equal("zero", (await queue.TryDequeueAsync())!.Message.Name);
81 Assert.Equal("one", (await queue.TryDequeueAsync())!.Message.Name);
82 }
83
100 [Fact]
102 {
103 var queue = new InMemoryOutboundMessageQueue(new OutboundQueueOptions
104 {
105 MaxQueueSize = 1,
106 DropOldestWhenFull = false
107 });
108
109 await queue.EnqueueAsync(Create("one"));
110
111 await Assert.ThrowsAsync<InvalidOperationException>(
112 async () => await queue.EnqueueAsync(Create("two")));
113 }
114
123 [Fact]
125 {
126 var queued = new QueuedOutboundMessage(
127 new MessageEnvelope { Name = "Job" },
128 new DateTimeOffset(2026, 6, 7, 0, 0, 0, TimeSpan.Zero),
129 attemptCount: 2,
130 lastError: null);
131
132 var failed = queued.WithFailure(new InvalidOperationException("bad"));
133
134 Assert.False(queued.IsExpired(null, queued.EnqueuedAt.AddDays(1)));
135 Assert.True(queued.IsExpired(TimeSpan.FromSeconds(1), queued.EnqueuedAt.AddSeconds(2)));
136 Assert.Equal(3, failed.AttemptCount);
137 Assert.Equal("bad", failed.LastError);
138 Assert.Same(queued.Message, failed.Message);
139 }
140
165 private static QueuedOutboundMessage Create(string name)
166 {
167 return new QueuedOutboundMessage(new MessageEnvelope { Name = name });
168 }
169}
static QueuedOutboundMessage Create(string name)