forked from dotnet/runtime
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEventLogEntryCollectionTests.cs
More file actions
134 lines (121 loc) · 5.59 KB
/
EventLogEntryCollectionTests.cs
File metadata and controls
134 lines (121 loc) · 5.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Xunit;
using Microsoft.DotNet.XUnitExtensions;
namespace System.Diagnostics.Tests
{
public class EventLogEntryCollectionTests
{
private const string message = "EntryCollectionMessage";
[Trait(XunitConstants.Category, XunitConstants.IgnoreForCI)] // Unreliable Win32 API call
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndSupportsEventLogs))]
public void CopyingEventLogEntryCollection()
{
string log = "CopyCollection";
string source = "Source_" + nameof(CopyingEventLogEntryCollection);
try
{
EventLog.CreateEventSource(source, log);
using (EventLog eventLog = new EventLog())
{
eventLog.Source = source;
Helpers.Retry(() => eventLog.WriteEntry(message));
Helpers.Retry(() => eventLog.WriteEntry("Further Testing"));
EventLogEntryCollection entryCollection = eventLog.Entries;
EventLogEntry[] entryCollectionCopied = new EventLogEntry[entryCollection.Count];
Helpers.Retry(() => entryCollection.CopyTo(entryCollectionCopied, 0));
int i = 0;
foreach (EventLogEntry entry in entryCollection)
{
Assert.Equal(entry.Message, Helpers.Retry(() => entryCollectionCopied[i].Message));
i += 1;
}
}
}
finally
{
EventLog.DeleteEventSource(source);
Helpers.RetrySilently(() => EventLog.Delete(log));
}
}
[Trait(XunitConstants.Category, XunitConstants.IgnoreForCI)] // Unreliable Win32 API call
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndSupportsEventLogs))]
public void CheckingEntryEqualityWithNull()
{
string log = "NullTest";
string source = "Source_" + nameof(CheckingEntryEqualityWithNull);
try
{
EventLog.CreateEventSource(source, log);
using (EventLog eventLog = new EventLog())
{
eventLog.Source = source;
Helpers.Retry(() => eventLog.WriteEntry(message));
Helpers.WaitForEventLog(eventLog, 1);
EventLogEntry entry = Helpers.Retry(() => eventLog.Entries[eventLog.Entries.Count - 1]);
Assert.False(entry.Equals(null));
}
}
finally
{
EventLog.DeleteEventSource(source);
Helpers.RetrySilently(() => EventLog.Delete(log));
}
}
[Trait(XunitConstants.Category, XunitConstants.IgnoreForCI)] // Unreliable Win32 API call
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndSupportsEventLogs))]
public void CheckingEntryEqualityAndIndex()
{
string log = "IndexTest";
string source = "Source_" + nameof(CheckingEntryEqualityAndIndex);
try
{
EventLog.CreateEventSource(source, log);
using (EventLog eventLog = new EventLog())
{
eventLog.Source = source;
Helpers.Retry(() => eventLog.WriteEntry(message));
Helpers.WaitForEventLog(eventLog, 1); //There is latency between writing and getting the entry
EventLogEntry entry = Helpers.Retry(() => eventLog.Entries[eventLog.Entries.Count - 1]);
Assert.True(entry.Equals(entry));
Helpers.Retry(() => eventLog.WriteEntry(message));
Helpers.WaitForEventLog(eventLog, 2);
EventLogEntry secondEntry = Helpers.Retry(() => eventLog.Entries[eventLog.Entries.Count - 1]);
Assert.Equal(entry.Index + 1, secondEntry.Index);
}
}
finally
{
EventLog.DeleteEventSource(source);
Helpers.RetrySilently(() => EventLog.Delete(log));
}
}
[Trait(XunitConstants.Category, XunitConstants.IgnoreForCI)] // Unreliable Win32 API call
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndSupportsEventLogs))]
public void CheckingEntryInEquality()
{
string log = "InEqualityTest";
string source = "Source_" + nameof(CheckingEntryInEquality);
try
{
EventLog.CreateEventSource(source, log);
using (EventLog eventLog = new EventLog())
{
eventLog.Source = source;
Helpers.Retry(() => eventLog.WriteEntry(message));
Helpers.Retry(() => eventLog.WriteEntry(message));
Helpers.WaitForEventLog(eventLog, 2);
EventLogEntry entry = Helpers.Retry(() => eventLog.Entries[eventLog.Entries.Count - 1]);
EventLogEntry secondEntry = Helpers.Retry(() => eventLog.Entries[eventLog.Entries.Count - 2]);
Assert.False(entry.Equals(secondEntry));
}
}
finally
{
EventLog.DeleteEventSource(source);
Helpers.RetrySilently(() => EventLog.Delete(log));
}
}
}
}