Exemple #1
0
        public static void InterceptEvent()
        {
            var transformer = new Mock <IEventTransformer>();

            transformer.Setup(x => x.Transform(It.IsAny <IEvent>()))
            .Returns <IEvent>(e => new LogEntry(null, e.EventData["message"].ToString())
            {
                Data = new Dictionary <string, object> {
                    { "os", e.EventSource.Metadata["env.os"] }
                }
            });

            var entries = new List <LogEntry>();

            var logger = new Mock <ILogger>();

            logger.Setup(x => x.IsInterestedIn(It.IsAny <LogLevel>()))
            .Returns(true);
            logger.Setup(x => x.LogAsync(It.IsAny <LogEntry>()))
            .Returns <LogEntry>(entry => {
                entries.Add(entry);

                return(Task.CompletedTask);
            });

            var registry = new InMemoryEventRegistry();
            var system   = new Mock <IDatabaseSystem>();

            system.As <IEventHandler>()
            .SetupGet(x => x.Registry)
            .Returns(registry);

            SystemEventLogger.Attach(system.Object, logger.Object, transformer.Object);

            var @event = new Event(EventSource.Environment)
            {
                Data = new Dictionary <string, object> {
                    { "message", "test message" }
                }
            };

            system.Object.RaiseEvent(@event);
            registry.Dispose();

            Assert.Single(entries);
            Assert.Equal(LogLevel.Information, entries[0].Level);
            Assert.Equal(@event.Data["message"], entries[0].Message);
            Assert.True(entries[0].Data.ContainsKey("os"));
        }
        public void Dispose()
        {
            foreach (var database in databases.Values)
            {
                database?.Dispose();
            }

            databases.Clear();

            scope.Dispose();

            if (ownsContainer)
            {
                container?.Dispose();
            }

            eventRegistry?.Dispose();
            started = false;
        }