Dreamine.FullKit.Tests
1.0.0.0
Dreamine.FullKit.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
LoggingServiceTests.cs
이 파일의 문서화 페이지로 가기
1
using
Dreamine.Logging.Formatters;
2
using
Dreamine.Logging.Interfaces;
3
using
Dreamine.Logging.Models;
4
using
Dreamine.Logging.Options;
5
using
Dreamine.Logging.Registration;
6
using
Dreamine.Logging.Services;
7
using
Dreamine.Logging.Sinks;
8
using
Dreamine.MVVM.Core;
9
using
Dreamine.FullKit.Tests.Core
;
10
11
namespace
Dreamine.FullKit.Tests.Logging
;
12
21
[Collection(DMContainerCollection.Name)]
22
public
sealed
class
LoggingServiceTests
23
{
32
[Fact]
33
public
void
InMemoryLogStore_EnforcesCapacityAndRaisesEvent
()
34
{
35
var store =
new
InMemoryLogStore(capacity: 2);
36
var added =
new
List<string>();
37
store.LogAdded += (_, entry) => added.Add(entry.Message);
38
39
store.Add(
Entry
(
"one"
));
40
store.Add(
Entry
(
"two"
));
41
store.Add(
Entry
(
"three"
));
42
43
Assert.Equal(
new
[] {
"one"
,
"two"
,
"three"
}, added);
44
Assert.Equal(
new
[] {
"two"
,
"three"
}, store.GetEntries().Select(entry => entry.Message));
45
}
46
55
[Fact]
56
public
void
DreamineLogger_FiltersBelowMinimumAndSuppressesSinkFailures
()
57
{
58
var sink =
new
RecordingSink
();
59
var throwing =
new
ThrowingSink
();
60
var logger =
new
DreamineLogger(
new
IDreamineLogSink[] { sink, throwing }, DreamineLogLevel.Warning,
"Test"
);
61
62
logger.Info(
"ignored"
);
63
logger.Warning(
"kept"
);
64
65
var entry = Assert.Single(sink.Entries);
66
Assert.Equal(DreamineLogLevel.Warning, entry.Level);
67
Assert.Equal(
"Test"
, entry.Category);
68
Assert.Equal(
"kept"
, entry.Message);
69
}
70
79
[Fact]
80
public
void
CompositeLogSink_WritesToAllSinksAndSuppressesFailures
()
81
{
82
var first =
new
RecordingSink
();
83
var second =
new
RecordingSink
();
84
using
var composite =
new
CompositeLogSink(
new
IDreamineLogSink[]
85
{
86
first,
87
new
ThrowingSink
(),
88
second
89
});
90
91
composite.Write(
Entry
(
"message"
));
92
93
Assert.Single(first.Entries);
94
Assert.Single(second.Entries);
95
}
96
105
[Fact]
106
public
void
TextFileLogSink_WritesFormattedEntryToDailyFile
()
107
{
108
var directory = Path.Combine(Path.GetTempPath(),
"DreamineFullKitTests"
, Guid.NewGuid().ToString(
"N"
));
109
Directory.CreateDirectory(directory);
110
111
try
112
{
113
using
(var sink =
new
TextFileLogSink(directory,
new
DreamineTextLogFormatter(), flushEveryWriteCount: 1))
114
{
115
sink.Write(
Entry
(
"file message"
));
116
}
117
118
var file = Assert.Single(Directory.GetFiles(directory,
"*.log"
));
119
Assert.Contains(
"file message"
, File.ReadAllText(file));
120
}
121
finally
122
{
123
if
(Directory.Exists(directory))
124
{
125
Directory.Delete(directory, recursive:
true
);
126
}
127
}
128
}
129
146
[Fact]
147
public
async Task
DreamineLoggingRegistration_ReturnsShutdownHandleWithoutConcreteSinkCoupling
()
148
{
149
var directory = Path.Combine(Path.GetTempPath(),
"DreamineFullKitTests"
, Guid.NewGuid().ToString(
"N"
));
150
Directory.CreateDirectory(directory);
151
DMContainer.Reset();
152
153
try
154
{
155
await
using
IAsyncDisposable shutdownHandle =
156
DreamineLoggingRegistration.Register(
new
DreamineLoggingOptions
157
{
158
Category =
"RegistrationTest"
,
159
LogDirectory = directory,
160
ShutdownTimeout = TimeSpan.FromMilliseconds(500)
161
});
162
163
Assert.NotNull(shutdownHandle);
164
Assert.IsNotType<AsyncQueueSink>(shutdownHandle);
165
Assert.NotNull(DMContainer.Resolve<IDreamineLogger>());
166
Assert.NotNull(DMContainer.Resolve<IDreamineLogSink>());
167
Assert.NotNull(DMContainer.Resolve<AsyncQueueSink>());
168
}
169
finally
170
{
171
DMContainer.Reset();
172
if
(Directory.Exists(directory))
173
{
174
Directory.Delete(directory, recursive:
true
);
175
}
176
}
177
}
178
203
private
static
DreamineLogEntry
Entry
(
string
message)
204
{
205
return
new
DreamineLogEntry(
206
DateTimeOffset.UnixEpoch,
207
DreamineLogLevel.Info,
208
"Test"
,
209
message,
210
exception:
null
,
211
threadId: 1);
212
}
213
222
private
sealed
class
RecordingSink
: IDreamineLogSink
223
{
232
public
List<DreamineLogEntry>
Entries
{
get
; } =
new
();
233
250
public
void
Write
(DreamineLogEntry entry)
251
{
252
Entries
.Add(entry);
253
}
254
}
255
264
private
sealed
class
ThrowingSink
: IDreamineLogSink
265
{
290
public
void
Write
(DreamineLogEntry entry)
291
{
292
throw
new
InvalidOperationException(
"sink failed"
);
293
}
294
}
295
}
Dreamine.FullKit.Tests.Core
Definition
AutoRegistrationTests.cs:6
Dreamine.FullKit.Tests.Logging
Definition
DreamineTextLogFormatterTests.cs:4
Dreamine.FullKit.Tests.Logging.LoggingServiceTests
Definition
LoggingServiceTests.cs:23
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.DreamineLogger_FiltersBelowMinimumAndSuppressesSinkFailures
void DreamineLogger_FiltersBelowMinimumAndSuppressesSinkFailures()
Definition
LoggingServiceTests.cs:56
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.InMemoryLogStore_EnforcesCapacityAndRaisesEvent
void InMemoryLogStore_EnforcesCapacityAndRaisesEvent()
Definition
LoggingServiceTests.cs:33
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.DreamineLoggingRegistration_ReturnsShutdownHandleWithoutConcreteSinkCoupling
async Task DreamineLoggingRegistration_ReturnsShutdownHandleWithoutConcreteSinkCoupling()
Definition
LoggingServiceTests.cs:147
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.Entry
static DreamineLogEntry Entry(string message)
Definition
LoggingServiceTests.cs:203
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.CompositeLogSink_WritesToAllSinksAndSuppressesFailures
void CompositeLogSink_WritesToAllSinksAndSuppressesFailures()
Definition
LoggingServiceTests.cs:80
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.TextFileLogSink_WritesFormattedEntryToDailyFile
void TextFileLogSink_WritesFormattedEntryToDailyFile()
Definition
LoggingServiceTests.cs:106
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.RecordingSink
Definition
LoggingServiceTests.cs:223
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.RecordingSink.Entries
List< DreamineLogEntry > Entries
Definition
LoggingServiceTests.cs:232
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.RecordingSink.Write
void Write(DreamineLogEntry entry)
Definition
LoggingServiceTests.cs:250
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.ThrowingSink
Definition
LoggingServiceTests.cs:265
Dreamine.FullKit.Tests.Logging.LoggingServiceTests.ThrowingSink.Write
void Write(DreamineLogEntry entry)
Definition
LoggingServiceTests.cs:290
Logging
LoggingServiceTests.cs
다음에 의해 생성됨 :
1.17.0