Example #1
0
        private static void ConfigureNijn(IServiceCollection services)
        {
            ILoggerFactory loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider(
                    (text, logLevel) => logLevel >= LogLevel.Debug, true));

            var connectionBuilder = new RabbitMQContextBuilder()
                                    .ReadFromEnvironmentVariables();

            var nijnContext = connectionBuilder.CreateContext();

            services.AddTransient <ICommandPublisher, CommandPublisher>();
            services.AddTransient <IEventPublisher, EventPublisher>();

            var builder = new MicroserviceHostBuilder()
                          .SetLoggerFactory(loggerFactory)
                          .RegisterDependencies(services)
                          .WithContext(nijnContext)
                          .UseConventions();

            var host = builder.CreateHost();

            host.CreateQueues();

            host.StartListeningInOtherThread();

            var logger = NijnLogger.CreateLogger <Program>();

            logger.LogInformation("Started...");
        }
Example #2
0
        private static IHostBuilder CreateHostBuilder(string[] args)
        {
            var connectionFactory = new ConnectionFactory();
            var contextBuilder    = new RabbitMQContextBuilder(connectionFactory)
                                    .ReadFromEnvironmentVariables();
            IBusContext <IConnection> busContext = contextBuilder.CreateContext();

            return(Host.CreateDefaultBuilder(args)
                   .ConfigureMessageBusWrapperHostDefaults(builder =>
            {
                var types = Assembly.GetEntryAssembly().GetTypes();
            }, busContext)
                   .ConfigureServices((hostContext, services) =>
            {
                services.AddDbContext <PrestatieContext>(e =>
                {
                    e.UseSqlServer(Environment.GetEnvironmentVariable(EnvNames.DbConnectionString));
                    // e.UseLoggerFactory(loggerFactory);
                });
                services.AddTransient <IPrestatieRepository, PrestatieRepository>();

                using var serviceScope = services.BuildServiceProvider().GetRequiredService <IServiceScopeFactory>()
                                         .CreateScope();

                var dbContext = serviceScope.ServiceProvider.GetService <PrestatieContext>();
                dbContext.Database.Migrate();
            }));
        }
        private IBusContext <IConnection> CreateNijnConfig(IServiceCollection serviceCollection)
        {
            //Deprecated method, maar kan even niet anders
            ILoggerFactory loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider(
                    (text, logLevel) => logLevel >= LogLevel.Debug, true));

            var connectionBuilder = new RabbitMQContextBuilder()
                                    .ReadFromEnvironmentVariables();

            _context = connectionBuilder.CreateContext();

            var builder = new MicroserviceHostBuilder()
                          .SetLoggerFactory(loggerFactory)
                          .RegisterDependencies(serviceCollection)
                          .WithContext(_context)
                          .UseConventions();

            var host = builder.CreateHost();

            host.StartListeningInOtherThread();

            return(_context);
        }
Example #4
0
        public void CreateContext_DeclaresExchangeWithCorrectExchangeName()
        {
            // Arrange
            var channelMock = new Mock <IModel>();

            channelMock.Setup(c => c.ExchangeDeclare("Exchange3",
                                                     "topic",
                                                     false,
                                                     false,
                                                     null))
            .Verifiable();
            var connectionMock = new Mock <IConnection>(MockBehavior.Strict);

            connectionMock.Setup(c => c.CreateModel())
            .Returns(channelMock.Object);
            var connectionFactoryMock = new Mock <IConnectionFactory>(MockBehavior.Strict);

            connectionFactoryMock.Setup(f => f.CreateConnection())
            .Returns(connectionMock.Object);
            var contextBuilder = new RabbitMQContextBuilder().WithExchange("Exchange3")
                                 .WithAddress("localhost", 5672);

            // Act
            var context = contextBuilder.CreateContext(connectionFactoryMock.Object);

            // Assert
            channelMock.VerifyAll();
        }
        public static async Task ScrapeAuditLog(IBusContext <IConnection> mainContext, ServiceCollection collection,
                                                DateTime startTime)
        {
            var exchangeName      = "Audit_Bestelling " + Guid.NewGuid();
            var connectionBuilder = new RabbitMQContextBuilder()
                                    .ReadFromEnvironmentVariables().WithExchange(exchangeName);

            var builder = new MicroserviceHostBuilder();

            builder
            .RegisterDependencies(collection)
            .WithContext(connectionBuilder.CreateContext())
            .ExitAfterIdleTime(new TimeSpan(0, 0, 2, 0))
            .UseConventions();

            builder.CreateHost().StartListeningInOtherThread();

            var publisher = new CommandPublisher(mainContext);

            var replayEventsCommand = new ReplayEventsCommand
            {
                ToTimestamp  = startTime.Ticks,
                ExchangeName = exchangeName
            };

            var result = await publisher.Publish <bool>(replayEventsCommand, "AuditlogReplayService",
                                                        "Minor.WSA.AuditLog.Commands.ReplayEventsCommand");
        }
Example #6
0
        private static IHostBuilder CreateHostBuilder(string[] args)
        {
            var connectionFactory = new ConnectionFactory();
            var contextBuilder    = new RabbitMQContextBuilder(connectionFactory)
                                    .ReadFromEnvironmentVariables();
            IBusContext <IConnection> busContext = contextBuilder.CreateContext();

            return(Host.CreateDefaultBuilder(args)
                   .ConfigureMessageBusWrapperHostDefaults(builder => { }, busContext)
                   // .ConfigureMessageBusWrapperClientDefaults(builder => { }, busContext)
                   .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup <Startup>();
            })
                   .ConfigureServices(services =>
            {
                services.AddDbContext <BFFContext>(e =>
                {
                    e.UseSqlServer(Environment.GetEnvironmentVariable(EnvNames.DbConnectionString));
                });
                services.AddTransient <IKlantRepository, KlantRepository>();
                services.AddTransient <IOefeningRepository, OefeningRepository>();
                services.AddTransient <IPrestatieRepository, PrestatieRepository>();
                services.AddTransient <IWorkoutRepository, WorkoutRepository>();


                // You need to comment this when adding a migration
                using var serviceScope = services.BuildServiceProvider().GetRequiredService <IServiceScopeFactory>()
                                         .CreateScope();
                using var dbContext = serviceScope.ServiceProvider.GetService <BFFContext>();
                dbContext.Database.Migrate();
                // You need to comment this when adding a migration
            }));
        }
        public void TestInitialize()
        {
            var contextBuilder = new RabbitMQContextBuilder();

            _context = contextBuilder.WithCredentials("guest", "guest")
                       .WithAddress(_hostname, 5672)
                       .WithExchange("TestExchange1")
                       .CreateContext();
        }
        private static void Main(string[] args)
        {
            var connectionString = Environment.GetEnvironmentVariable("SPRINTERDB");
            var options          = new DbContextOptionsBuilder <BeheerContext>()
                                   .UseNpgsql(connectionString)
                                   .Options;

            ILoggerFactory loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider(
                    (text, logLevel) => logLevel >= LogLevel.Debug, true));

            var connectionBuilder = new RabbitMQContextBuilder()
                                    .ReadFromEnvironmentVariables();

            var nijnContext = connectionBuilder.CreateContext();

            var services = new ServiceCollection();

            services.AddTransient <ICommandPublisher, CommandPublisher>();
            services.AddTransient <IEventPublisher, EventPublisher>();
            services.AddSingleton <DbContextOptions>(options);
            services.AddTransient <BeheerContext, BeheerContext>();
            services.AddTransient <IArtikelDatamapper, ArtikelDatamapper>();
            services.AddTransient <IBestellingDatamapper, BestellingDatamapper>();
            services.AddSingleton <IBusContext <IConnection> >(nijnContext);
            services.AddTransient <IKlantDatamapper, KlantDatamapper>();

            var builder = new MicroserviceHostBuilder()
                          .SetLoggerFactory(loggerFactory)
                          .RegisterDependencies(services)
                          .WithContext(nijnContext)
                          .UseConventions();

            var host = builder.CreateHost();

            host.CreateQueues();

            using (var context = new BeheerContext(options))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
                if (!context.Artikelen.Any())
                {
                    ScrapeAuditLog(nijnContext, services, DateTime.Now).Wait();
                }
            }

            host.StartListeningInOtherThread();

            var logger = NijnLogger.CreateLogger <Program>();

            logger.LogInformation("Started...");
        }
Example #9
0
        public void WithExchange_WithCorrectExchangeName()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder();

            // Act
            contextBuilder.WithExchange("AMX");

            // Assert
            Assert.AreEqual("AMX", contextBuilder.ExchangeName);
        }
Example #10
0
        static void Main(string[] args)
        {
            ILoggerFactory loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider(
                    (text, logLevel) => logLevel >= LogLevel.Debug, true));

            //192.168.99.100
            var connectionBuilder = new RabbitMQContextBuilder()
                                    .WithExchange("MVM.EventExchange")
                                    .WithAddress("192.168.99.100", 5672)
                                    .WithCredentials(userName: "******", password: "******");


            using (var context = connectionBuilder.CreateContext())
            {
                var builder = new MicroserviceHostBuilder()
                              .SetLoggerFactory(loggerFactory)
                              .RegisterDependencies((services) =>
                {
                    services.AddTransient <IDataMapper, SinaasAppelDataMapper>();
                })
                              .WithContext(context)
                              .UseConventions();

                using (var host = builder.CreateHost())
                {
                    host.StartListening();

                    Console.WriteLine("ServiceHost is listening to incoming events...");
                    Console.WriteLine("Press any key to quit.");

                    var publisher = new EventPublisher(context);
                    publisher.Publish(new PolisToegevoegdEvent("MVM.Polisbeheer.PolisToegevoegd")
                    {
                        Message = "Hey"
                    });
                    publisher.Publish(new HenkToegevoegdEvent("Test")
                    {
                        Test = "Oi"
                    });

                    int i = 0;
                    while (true)
                    {
                        Console.ReadKey();
                        Test(context, i);
                        Test(context, i * 100);
                        i++;
                    }
                }
            }
        }
Example #11
0
        public void CreateContext_WithExchangeNameNull_ThrowsArgumentNullException()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder().WithAddress(null, 5672);

            // Act & Assert
            Assert.ThrowsException <ArgumentNullException>(() =>
            {
                contextBuilder.CreateContext();
            });
        }
Example #12
0
        public void WithAddress_WithCorrectHostnameAndPort()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder();

            // Act
            contextBuilder.WithAddress("localhost", 9000);

            // Assert
            Assert.AreEqual("localhost", contextBuilder.HostName);
            Assert.AreEqual(9000, contextBuilder.Port);
        }
Example #13
0
        static void Main(string[] args)
        {
            ILoggerFactory loggerFactory = new LoggerFactory();

            //Deprecated method, maar kan even niet anders
            ConsoleLoggerOptions options = new ConsoleLoggerOptions();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider(
                    (text, logLevel) => logLevel >= LogLevel.Debug, true));

            //192.168.99.100
            var connectionBuilder = new RabbitMQContextBuilder()
                                    .WithExchange("MVM.EventExchange")
                                    .WithAddress("localhost", 5672)
                                    .WithCredentials(userName: "******", password: "******");



            var context = new TestBusContext();

            var builder = new MicroserviceHostBuilder()
                          .SetLoggerFactory(loggerFactory)
                          .RegisterDependencies((services) =>
            {
                services.AddTransient <IDataMapper, SinaasAppelDataMapper>();
                services.AddTransient <ICommandPublisher, CommandPublisher>();
                services.AddTransient <IEventPublisher, EventPublisher>();
                services.AddSingleton <IBusContext <IConnection> >(context);
            })
                          .WithContext(context)
                          .UseConventions();


            var host = builder.CreateHost();

            host.StartListeningInOtherThread();

            Console.WriteLine("ServiceHost is listening to incoming events...");
            Console.WriteLine("Press any key to quit.");

            var publisher        = new EventPublisher(context);
            var commandpublisher = new CommandPublisher(context);

            publisher.Publish(new PolisToegevoegdEvent("MVM.Polisbeheer.PolisToegevoegd")
            {
                Message = "Hey"
            });
            publisher.Publish(new HenkToegevoegdEvent("Test")
            {
                Test = "Oi"
            });
        }
Example #14
0
        public void CreateContext_WithPortHigherThan65535_ThrowsArgumentOutOfRangeException()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder().WithAddress("localhost", 65536);

            // Act & Assert
            var exception = Assert.ThrowsException <ArgumentOutOfRangeException>(() =>
            {
                contextBuilder.CreateContext();
            });

            Assert.AreEqual(nameof(contextBuilder.Port), exception.ParamName);
        }
Example #15
0
        public void CreateContext_WithExchangeNameEmptyString_ThrowsArgumentException()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder().WithAddress("", 5672);

            // Act & Assert
            var exception = Assert.ThrowsException <ArgumentException>(() =>
            {
                contextBuilder.CreateContext();
            });

            Assert.AreEqual(nameof(contextBuilder.HostName) + " was empty", exception.Message);
        }
Example #16
0
        public void WithCredentials_WithCorrectUsernameAndPassword()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder();

            // Act
            contextBuilder.WithCredentials("username", "password");

            // Assert
            Assert.AreEqual("username", contextBuilder.UserName);
            string password = TestHelper.GetPrivateField <string>(contextBuilder, "_password");

            Assert.AreEqual("password", password);
        }
        private void ConfigureReplayEvents(IServiceCollection services)
        {
            var contextBuilder = new RabbitMQContextBuilder()
                                 .SetLoggerFactory(_loggerFactory)
                                 .WithConnectionTimeout(5000)
                                 .ReadFromEnvironmentVariables()
                                 .WithExchange(NameConstants.BffWebshopEventReplayExchange);

            using (var context = contextBuilder.CreateContext())
                using (var replayService = new EventReplayService(context, services, 5000))
                {
                    replayService.StartEventReplay();
                }
        }
Example #18
0
        private static IHostBuilder CreateHostBuilder(string[] args)
        {
            var connectionFactory = new ConnectionFactory();
            var contextBuilder = new RabbitMQContextBuilder(connectionFactory)
                .ReadFromEnvironmentVariables();
            IBusContext<IConnection> busContext = contextBuilder.CreateContext();

            return Host.CreateDefaultBuilder(args)
                .ConfigureMessageBusWrapperClientDefaults(builder => { }, busContext)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseSerilog();
                });
        }
Example #19
0
        public void ReadFromEnvironmentVariables_WithCorrectPort()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder();

            Environment.SetEnvironmentVariable("Port", "9000");

            // Act
            contextBuilder.ReadFromEnvironmentVariables();

            // Assert
            Assert.AreEqual(9000, contextBuilder.Port);

            // Cleanup
            Environment.SetEnvironmentVariable("Port", null);
        }
Example #20
0
        public void ContextBuilderReadFromEnvironmentWithWrongPortThrowsException()
        {
            // Arrange
            Environment.SetEnvironmentVariable("EXCHANGENAME", "bus");
            Environment.SetEnvironmentVariable("USERNAME", "guest");
            Environment.SetEnvironmentVariable("HOSTNAME", "localhost");
            Environment.SetEnvironmentVariable("PASSWORD", "secret");
            Environment.SetEnvironmentVariable("PORT", "fout");
            var contextBuilder = new RabbitMQContextBuilder();

            // Act & Assert
            Assert.ThrowsException <InvalidCastException>(() =>
            {
                contextBuilder.ReadFromEnvironmentVariables();
            });
        }
Example #21
0
        public void ReadFromEnvironmentVariables_WithCorrectExchangeName()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder();

            Environment.SetEnvironmentVariable("ExchangeName", "AMX");

            // Act
            contextBuilder.ReadFromEnvironmentVariables();

            // Assert
            Assert.AreEqual("AMX", contextBuilder.ExchangeName);

            // Cleanup
            Environment.SetEnvironmentVariable("ExchangeName", null);
        }
Example #22
0
        public void ReadFromEnvironmentVariables_WithCorrectHostName()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder();

            Environment.SetEnvironmentVariable("HostName", "localhost");

            // Act
            contextBuilder.ReadFromEnvironmentVariables();

            // Assert
            Assert.AreEqual("localhost", contextBuilder.HostName);

            // Cleanup
            Environment.SetEnvironmentVariable("HostName", null);
        }
Example #23
0
        private void StartEventReplay()
        {
            var timeout = 5000;

            var connectionBuilder = new RabbitMQContextBuilder()
                                    .SetLoggerFactory(_loggerFactory)
                                    .WithConnectionTimeout(timeout)
                                    .ReadFromEnvironmentVariables()
                                    .WithExchange(NameConstants.BestelServiceEventReplayExchange);

            using (var context = connectionBuilder.CreateContext())
                using (var replayService = new EventReplayService(context, _services, timeout))
                {
                    replayService.StartEventReplay();
                }
        }
Example #24
0
        public void ReadFromEnvironmentVariables_WithCorrectPassword()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder();

            Environment.SetEnvironmentVariable("Password", "secret");

            // Act
            contextBuilder.ReadFromEnvironmentVariables();

            // Assert
            string password = TestHelper.GetPrivateField <string>(contextBuilder, "_password");

            Assert.AreEqual("secret", password);

            // Cleanup
            Environment.SetEnvironmentVariable("Password", null);
        }
Example #25
0
        public void CreateContext_ReturnsContextWithCorrectConnection()
        {
            // Arrange
            var channelMock    = new Mock <IModel>();
            var connectionMock = new Mock <IConnection>(MockBehavior.Strict);

            connectionMock.Setup(c => c.CreateModel())
            .Returns(channelMock.Object);
            var connectionFactoryMock = new Mock <IConnectionFactory>(MockBehavior.Strict);

            connectionFactoryMock.Setup(f => f.CreateConnection())
            .Returns(connectionMock.Object);
            var contextBuilder = new RabbitMQContextBuilder().WithExchange("Exchange3")
                                 .WithAddress("localhost", 5672);

            // Act
            var context = contextBuilder.CreateContext(connectionFactoryMock.Object);

            // Assert
            Assert.AreEqual(connectionMock.Object, context.Connection);
        }
 public MyRabbitMQContext(RabbitMQContextBuilder builder)
     : base(builder)
 {
 }