Exemple #1
0
        public void IsMatchIsTypeOfBool()
        {
            // Arrange
            var routingKeyMatcher = new RoutingKeyMatcher();

            // Act
            var result = routingKeyMatcher.IsMatch("Test.#", "Test.TestQueue.TestCreated");

            // Assert
            Assert.IsInstanceOfType(result, typeof(bool));
        }
Exemple #2
0
        public void IsMatchWithCriteriaWithOnlyAHashTagShouldBeTrue()
        {
            // Arrange
            var routingKeyMatcher = new RoutingKeyMatcher();

            // Act
            var result = routingKeyMatcher.IsMatch("#", "Test.TestQueue.TestCreated");

            // Assert
            Assert.IsTrue(result);
        }
Exemple #3
0
        public void IsMatchWithCriteriaThatDoesNotMatchEntryRoutingKeyShouldBeFalse()
        {
            // Arrange
            var routingKeyMatcher = new RoutingKeyMatcher();

            // Act
            var result = routingKeyMatcher.IsMatch("Test", "Test.TestQueue.TestCreated");

            // Assert
            Assert.IsFalse(result);
        }
Exemple #4
0
        public void IsMatchWithCriteriaContainingHashTagThatMatchesEntryRoutingKeyShouldBeTrue()
        {
            // Arrange
            var routingKeyMatcher = new RoutingKeyMatcher();

            // Act
            var result = routingKeyMatcher.IsMatch("Test.#", "Test.TestQueue.TestCreated");

            // Assert
            Assert.IsTrue(result);
        }
Exemple #5
0
        public void IsMatchWithCriteriaRoutingKeyNullShouldBeTrue()
        {
            // Arrange
            var routingKeyMatcher = new RoutingKeyMatcher();

            // Act
            var result = routingKeyMatcher.IsMatch(null, "Test.TestQueue.TestCreated");

            // Assert
            Assert.IsTrue(result);
        }
Exemple #6
0
        public static void Main(string[] args)
        {
            var logLevel = Environment.GetEnvironmentVariable("LOG_LEVEL") ??
                           throw new InvalidEnvironmentException(
                                     "Environment variable [LOG_LEVEL] was not provided.");

            Enum.TryParse(logLevel, true, out LogLevel result);

            var loggerFactory = LoggerFactory.Create(builder => builder.SetMinimumLevel(result).AddConsole());

            AuditLogLoggerFactory.LoggerFactory = loggerFactory;

            var logger = loggerFactory.CreateLogger("Program");

            try
            {
                var connectionString = Environment.GetEnvironmentVariable("CONNECTION_STRING") ??
                                       throw new InvalidEnvironmentException(
                                                 "Environment variable [CONNECTION_STRING] was not provided.");

                var options = new DbContextOptionsBuilder <AuditLogContext>()
                              .UseMySql(connectionString)
                              .Options;
                using var context = new AuditLogContext(options);

                var       createdAndSeeded = false;
                const int waitTime         = 1000;
                while (!createdAndSeeded)
                {
                    try
                    {
                        context.Database.EnsureCreated();
                        createdAndSeeded = true;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        Thread.Sleep(waitTime);
                    }
                }

                var repository        = new AuditLogRepository(context);
                var routingKeyMatcher = new RoutingKeyMatcher();
                var eventListener     = new AuditLogEventListener(repository);
                var eventBusBuilder   = new EventBusBuilder().FromEnvironment();
                using var eventBus = eventBusBuilder.CreateEventBus(new ConnectionFactory
                {
                    HostName = eventBusBuilder.HostName,
                    Port     = eventBusBuilder.Port,
                    UserName = eventBusBuilder.UserName,
                    Password = eventBusBuilder.Password
                });
                var eventReplayer   = new EventReplayer(eventBus);
                var commandListener =
                    new AuditLogCommandListener(repository, eventReplayer, routingKeyMatcher, eventBus);
                eventBus.AddEventListener(eventListener, "#");
                eventBus.AddCommandListener(commandListener, "AuditLog");

                logger.LogTrace("Host started, audit logger ready to log");

                _stopEvent.WaitOne();
            }
            catch (Exception e)
            {
                logger.LogError($"Error occured while running the client with message: {e.Message}");
            }
        }