示例#1
0
        /// <summary>
        /// Adds MongoDb classes (MongoClient, IMongoClient and MongoUrl) to your Autofac Container
        /// </summary>
        /// <param name="container">Your Autofac Container Builder</param>
        /// <param name="config">Application configuration</param>
        /// <param name="serviceName">Cloud Foundry service name binding</param>
        /// <returns>the RegistrationBuilder for (optional) additional configuration</returns>
        public static IRegistrationBuilder <object, SimpleActivatorData, SingleRegistrationStyle> RegisterMongoDbConnection(this ContainerBuilder container, IConfiguration config, string serviceName = null)
        {
            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }

            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            MongoDbServiceInfo info = serviceName == null
                ? config.GetSingletonServiceInfo <MongoDbServiceInfo>()
                : config.GetRequiredServiceInfo <MongoDbServiceInfo>(serviceName);

            var mongoOptions  = new MongoDbConnectorOptions(config);
            var clientFactory = new MongoDbConnectorFactory(info, mongoOptions, MongoDbTypeLocator.MongoClient);
            var urlFactory    = new MongoDbConnectorFactory(info, mongoOptions, MongoDbTypeLocator.MongoUrl);

            container.Register(c => urlFactory.Create(null)).As(MongoDbTypeLocator.MongoUrl);
            container.Register(c => new MongoDbHealthContributor(clientFactory, c.ResolveOptional <ILogger <MongoDbHealthContributor> >())).As <IHealthContributor>();

            return(container.Register(c => clientFactory.Create(null)).As(MongoDbTypeLocator.IMongoClient, MongoDbTypeLocator.MongoClient));
        }
        public void Is_Connected_Returns_Up_Status()
        {
            var mongoDbConfig = new MongoDbConnectorOptions();
            var sInfo         = new MongoDbServiceInfo("MyId", "mongodb://localhost:27017");
            var logrFactory   = new LoggerFactory();
            var connFactory   = new MongoDbConnectorFactory(sInfo, mongoDbConfig, mongoDbImplementationType);
            var h             = new MongoDbHealthContributor(connFactory, logrFactory.CreateLogger <MongoDbHealthContributor>());

            var status = h.Health();

            Assert.Equal(HealthStatus.UP, status.Status);
        }
        public void Not_Connected_Returns_Down_Status()
        {
            var mongoDbConfig = new MongoDbConnectorOptions();
            var sInfo         = new MongoDbServiceInfo("MyId", "mongodb://localhost:27018");
            var logrFactory   = new LoggerFactory();
            var connFactory   = new MongoDbConnectorFactory(sInfo, mongoDbConfig, mongoDbImplementationType);
            var h             = new MongoDbHealthContributor(connFactory, logrFactory.CreateLogger <MongoDbHealthContributor>(), 1);

            var status = h.Health();

            Assert.Equal(HealthStatus.DOWN, status.Status);
            Assert.Equal("Failed to open MongoDb connection!", status.Description);
        }
示例#4
0
        public void Create_ReturnsMongoDbConnection()
        {
            var config = new MongoDbConnectorOptions()
            {
                Server   = "localhost",
                Port     = 27016,
                Password = "******",
                Username = "******",
            };
            var si         = new MongoDbServiceInfo("MyId", "mongodb://localhost:27017");
            var factory    = new MongoDbConnectorFactory(si, config, MongoDbTypeLocator.MongoClient);
            var connection = factory.Create(null);

            Assert.NotNull(connection);
        }