Skip to content

Commit d2cf158

Browse files
committed
- Remove event listener. rely on Debug.Fail
- Use existing mock types
1 parent 25fb241 commit d2cf158

File tree

3 files changed

+57
-62
lines changed

3 files changed

+57
-62
lines changed

src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/DependencyInjectionEventSourceTests.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,6 @@ public class EventSourceTests : ICollectionFixture<EventSourceTests>
1717
{
1818
}
1919

20-
internal class TestEventListener : EventListener
21-
{
22-
private volatile bool _disposed;
23-
private ConcurrentQueue<EventWrittenEventArgs> _events = new ConcurrentQueue<EventWrittenEventArgs>();
24-
25-
public IEnumerable<EventWrittenEventArgs> EventData => _events;
26-
27-
protected override void OnEventWritten(EventWrittenEventArgs eventData)
28-
{
29-
if (!_disposed)
30-
{
31-
_events.Enqueue(eventData);
32-
}
33-
}
34-
35-
public override void Dispose()
36-
{
37-
_disposed = true;
38-
base.Dispose();
39-
}
40-
}
41-
4220
[Collection(nameof(EventSourceTests))]
4321
public class DependencyInjectionEventSourceTests: IDisposable
4422
{
@@ -248,6 +226,28 @@ public void EmitsServiceRealizationFailedEvent()
248226
private T GetProperty<T>(EventWrittenEventArgs data, string propName)
249227
=> (T)data.Payload[data.PayloadNames.IndexOf(propName)];
250228

229+
private class TestEventListener : EventListener
230+
{
231+
private volatile bool _disposed;
232+
private ConcurrentQueue<EventWrittenEventArgs> _events = new ConcurrentQueue<EventWrittenEventArgs>();
233+
234+
public IEnumerable<EventWrittenEventArgs> EventData => _events;
235+
236+
protected override void OnEventWritten(EventWrittenEventArgs eventData)
237+
{
238+
if (!_disposed)
239+
{
240+
_events.Enqueue(eventData);
241+
}
242+
}
243+
244+
public override void Dispose()
245+
{
246+
_disposed = true;
247+
base.Dispose();
248+
}
249+
}
250+
251251
public void Dispose()
252252
{
253253
_listener.Dispose();

src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/ServiceCollectionDescriptorExtensionsTests.cs

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,14 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System;
5-
using System.Collections.Concurrent;
6-
using System.Collections.Generic;
7-
using System.Diagnostics.Tracing;
8-
using System.Linq;
95
using Microsoft.Extensions.DependencyInjection.Extensions;
106
using Microsoft.Extensions.DependencyInjection.Specification.Fakes;
11-
using Microsoft.Extensions.DependencyInjection.Tests;
127
using Xunit;
138

149
namespace Microsoft.Extensions.DependencyInjection
1510
{
16-
public class ABC { }
17-
1811
public class ServiceCollectionDescriptorExtensionsTest
1912
{
20-
[Fact]
21-
internal void GetService_FactoryCallSite_Transient_DoesNotFail()
22-
{
23-
TestEventListener listener = new TestEventListener();
24-
listener.EnableEvents(DependencyInjectionEventSource.Log, EventLevel.Verbose);
25-
IServiceProvider serviceProvider = null;
26-
27-
try
28-
{
29-
IServiceCollection services = new ServiceCollection();
30-
services.Add(ServiceDescriptor.Describe(typeof(ABC), (sp) => new ABC(), ServiceLifetime.Transient));
31-
32-
var sp = services.BuildServiceProvider(ServiceProviderMode.Dynamic);
33-
serviceProvider = sp
34-
.CreateScope()
35-
.ServiceProvider;
36-
37-
serviceProvider.GetService<ABC>();
38-
39-
for (int i = 0; i < 50; i++)
40-
{
41-
serviceProvider.GetService<ABC>();
42-
System.Threading.Thread.Sleep(10); // Give the background thread time to compile
43-
}
44-
45-
Assert.Null(listener.EventData.FirstOrDefault(e => e.EventName == nameof(DependencyInjectionEventSource.Log.ServiceRealizationFailed)));
46-
}
47-
finally
48-
{
49-
((IDisposable)serviceProvider).Dispose();
50-
}
51-
}
52-
5313
[Fact]
5414
public void Add_AddsDescriptorToServiceDescriptors()
5515
{

src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/ServiceLookup/CallSiteFactoryTest.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,51 @@
66
using System.Diagnostics.CodeAnalysis;
77
using System.Linq;
88
using System.Reflection;
9+
using System.Threading;
910
using System.Threading.Tasks;
1011
using Microsoft.DotNet.RemoteExecutor;
1112
using Microsoft.Extensions.DependencyInjection.Extensions;
1213
using Microsoft.Extensions.DependencyInjection.Specification.Fakes;
14+
using Microsoft.Extensions.DependencyInjection.Tests;
1315
using Xunit;
1416

1517
namespace Microsoft.Extensions.DependencyInjection.ServiceLookup
1618
{
1719
public class CallSiteFactoryTest
1820
{
21+
[Fact]
22+
public void GetService_FactoryCallSite_Transient_DoesNotFail()
23+
{
24+
IServiceProvider serviceProvider = null;
25+
try
26+
{
27+
var collection = new ServiceCollection();
28+
collection.Add(ServiceDescriptor.Describe(typeof(FakeService), (sp) => new FakeService(), ServiceLifetime.Transient));
29+
collection.Add(ServiceDescriptor.Describe(typeof(IFakeService), (sp) => new FakeService(), ServiceLifetime.Transient));
30+
31+
serviceProvider = collection
32+
.BuildServiceProvider(ServiceProviderMode.Dynamic)
33+
.CreateScope()
34+
.ServiceProvider;
35+
36+
Type expectedType = typeof(FakeService);
37+
38+
Assert.Equal(expectedType, serviceProvider.GetService(typeof(IFakeService)).GetType());
39+
Assert.Equal(expectedType, serviceProvider.GetService(typeof(FakeService)).GetType());
40+
41+
for (int i = 0; i < 50; i++)
42+
{
43+
serviceProvider.GetService(typeof(IFakeService));
44+
serviceProvider.GetService(typeof(FakeService));
45+
Thread.Sleep(10); // Give the background thread time to compile
46+
}
47+
}
48+
finally
49+
{
50+
((IDisposable)serviceProvider).Dispose();
51+
}
52+
}
53+
1954
[Fact]
2055
public void CreateCallSite_Throws_IfTypeHasNoPublicConstructors()
2156
{

0 commit comments

Comments
 (0)