From d2cf1586b7fecd96e3c7e2a21b835d35ee77fb8c Mon Sep 17 00:00:00 2001 From: Maryam Ariyan Date: Wed, 11 Aug 2021 13:58:26 -0700 Subject: [PATCH] - Remove event listener. rely on Debug.Fail - Use existing mock types --- .../DependencyInjectionEventSourceTests.cs | 44 +++++++++---------- ...viceCollectionDescriptorExtensionsTests.cs | 40 ----------------- .../ServiceLookup/CallSiteFactoryTest.cs | 35 +++++++++++++++ 3 files changed, 57 insertions(+), 62 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/DependencyInjectionEventSourceTests.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/DependencyInjectionEventSourceTests.cs index b1cf5ace7d42c..54a282d66dd9b 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/DependencyInjectionEventSourceTests.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/DependencyInjectionEventSourceTests.cs @@ -17,28 +17,6 @@ public class EventSourceTests : ICollectionFixture { } - internal class TestEventListener : EventListener - { - private volatile bool _disposed; - private ConcurrentQueue _events = new ConcurrentQueue(); - - public IEnumerable EventData => _events; - - protected override void OnEventWritten(EventWrittenEventArgs eventData) - { - if (!_disposed) - { - _events.Enqueue(eventData); - } - } - - public override void Dispose() - { - _disposed = true; - base.Dispose(); - } - } - [Collection(nameof(EventSourceTests))] public class DependencyInjectionEventSourceTests: IDisposable { @@ -248,6 +226,28 @@ public void EmitsServiceRealizationFailedEvent() private T GetProperty(EventWrittenEventArgs data, string propName) => (T)data.Payload[data.PayloadNames.IndexOf(propName)]; + private class TestEventListener : EventListener + { + private volatile bool _disposed; + private ConcurrentQueue _events = new ConcurrentQueue(); + + public IEnumerable EventData => _events; + + protected override void OnEventWritten(EventWrittenEventArgs eventData) + { + if (!_disposed) + { + _events.Enqueue(eventData); + } + } + + public override void Dispose() + { + _disposed = true; + base.Dispose(); + } + } + public void Dispose() { _listener.Dispose(); diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/ServiceCollectionDescriptorExtensionsTests.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/ServiceCollectionDescriptorExtensionsTests.cs index 657c9d5a68181..6d06cbf5a2d56 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/ServiceCollectionDescriptorExtensionsTests.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/ServiceCollectionDescriptorExtensionsTests.cs @@ -2,54 +2,14 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Diagnostics.Tracing; -using System.Linq; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Specification.Fakes; -using Microsoft.Extensions.DependencyInjection.Tests; using Xunit; namespace Microsoft.Extensions.DependencyInjection { - public class ABC { } - public class ServiceCollectionDescriptorExtensionsTest { - [Fact] - internal void GetService_FactoryCallSite_Transient_DoesNotFail() - { - TestEventListener listener = new TestEventListener(); - listener.EnableEvents(DependencyInjectionEventSource.Log, EventLevel.Verbose); - IServiceProvider serviceProvider = null; - - try - { - IServiceCollection services = new ServiceCollection(); - services.Add(ServiceDescriptor.Describe(typeof(ABC), (sp) => new ABC(), ServiceLifetime.Transient)); - - var sp = services.BuildServiceProvider(ServiceProviderMode.Dynamic); - serviceProvider = sp - .CreateScope() - .ServiceProvider; - - serviceProvider.GetService(); - - for (int i = 0; i < 50; i++) - { - serviceProvider.GetService(); - System.Threading.Thread.Sleep(10); // Give the background thread time to compile - } - - Assert.Null(listener.EventData.FirstOrDefault(e => e.EventName == nameof(DependencyInjectionEventSource.Log.ServiceRealizationFailed))); - } - finally - { - ((IDisposable)serviceProvider).Dispose(); - } - } - [Fact] public void Add_AddsDescriptorToServiceDescriptors() { diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/ServiceLookup/CallSiteFactoryTest.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/ServiceLookup/CallSiteFactoryTest.cs index da24dca4e92cf..90d6f94c7022f 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/ServiceLookup/CallSiteFactoryTest.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.Tests/ServiceLookup/CallSiteFactoryTest.cs @@ -6,16 +6,51 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; +using System.Threading; using System.Threading.Tasks; using Microsoft.DotNet.RemoteExecutor; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Specification.Fakes; +using Microsoft.Extensions.DependencyInjection.Tests; using Xunit; namespace Microsoft.Extensions.DependencyInjection.ServiceLookup { public class CallSiteFactoryTest { + [Fact] + public void GetService_FactoryCallSite_Transient_DoesNotFail() + { + IServiceProvider serviceProvider = null; + try + { + var collection = new ServiceCollection(); + collection.Add(ServiceDescriptor.Describe(typeof(FakeService), (sp) => new FakeService(), ServiceLifetime.Transient)); + collection.Add(ServiceDescriptor.Describe(typeof(IFakeService), (sp) => new FakeService(), ServiceLifetime.Transient)); + + serviceProvider = collection + .BuildServiceProvider(ServiceProviderMode.Dynamic) + .CreateScope() + .ServiceProvider; + + Type expectedType = typeof(FakeService); + + Assert.Equal(expectedType, serviceProvider.GetService(typeof(IFakeService)).GetType()); + Assert.Equal(expectedType, serviceProvider.GetService(typeof(FakeService)).GetType()); + + for (int i = 0; i < 50; i++) + { + serviceProvider.GetService(typeof(IFakeService)); + serviceProvider.GetService(typeof(FakeService)); + Thread.Sleep(10); // Give the background thread time to compile + } + } + finally + { + ((IDisposable)serviceProvider).Dispose(); + } + } + [Fact] public void CreateCallSite_Throws_IfTypeHasNoPublicConstructors() {