public static IHealthContributor GetMySqlContributor(IConfiguration configuration, ILogger <RelationalHealthContributor> logger = null)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            var info            = configuration.GetSingletonServiceInfo <MySqlServiceInfo>();
            var mySqlConnection = ReflectionHelpers.FindType(MySqlTypeLocator.Assemblies, MySqlTypeLocator.ConnectionTypeNames);
            var mySqlConfig     = new MySqlProviderConnectorOptions(configuration);
            var factory         = new MySqlProviderConnectorFactory(info, mySqlConfig, mySqlConnection);
            var connection      = factory.Create(null) as IDbConnection;

            return(new RelationalHealthContributor(connection, logger));
        }
Пример #2
0
        public void Create_ReturnsMySqlConnection()
        {
            MySqlProviderConnectorOptions config = new MySqlProviderConnectorOptions()
            {
                Server   = "localhost",
                Port     = 3306,
                Password = "******",
                Username = "******",
                Database = "database"
            };
            MySqlServiceInfo si = new MySqlServiceInfo("MyId", "mysql://*****:*****@192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355");
            var factory         = new MySqlProviderConnectorFactory(si, config, typeof(MySqlConnection));
            var connection      = factory.Create(null);

            Assert.NotNull(connection);
        }
        public void MySql_Is_Connected_Returns_Up_Status()
        {
            var implementationType = MySqlTypeLocator.MySqlConnection;
            var sqlConfig          = new MySqlProviderConnectorOptions()
            {
                ConnectionTimeout = 1
            };
            var sInfo       = new MySqlServiceInfo("MyId", "mysql://*****:*****@localhost:3306");
            var logrFactory = new LoggerFactory();
            var connFactory = new MySqlProviderConnectorFactory(sInfo, sqlConfig, implementationType);
            var h           = new RelationalDbHealthContributor((IDbConnection)connFactory.Create(null), logrFactory.CreateLogger <RelationalDbHealthContributor>());

            var status = h.Health();

            Assert.Equal(HealthStatus.UP, status.Status);
        }
        public void MySql_Not_Connected_Returns_Down_Status()
        {
            var implementationType = MySqlTypeLocator.MySqlConnection;
            var sqlConfig          = new MySqlProviderConnectorOptions()
            {
                ConnectionTimeout = 1
            };
            var sInfo       = new MySqlServiceInfo("MyId", "mysql://localhost:80;databaseName=invalidDatabaseName");
            var logrFactory = new LoggerFactory();
            var connFactory = new MySqlProviderConnectorFactory(sInfo, sqlConfig, implementationType);
            var h           = new RelationalDbHealthContributor((IDbConnection)connFactory.Create(null), logrFactory.CreateLogger <RelationalDbHealthContributor>());

            var status = h.Health();

            Assert.Equal(HealthStatus.DOWN, status.Status);
            Assert.Contains(status.Details.Keys, k => k == "error");
        }
        private static string GetConnection(IConfiguration config, string serviceName = null)
        {
            MySqlServiceInfo info = null;

            if (string.IsNullOrEmpty(serviceName))
            {
                info = config.GetSingletonServiceInfo <MySqlServiceInfo>();
            }
            else
            {
                info = config.GetRequiredServiceInfo <MySqlServiceInfo>(serviceName);
            }

            MySqlProviderConnectorOptions mySqlConfig = new MySqlProviderConnectorOptions(config);

            MySqlProviderConnectorFactory factory = new MySqlProviderConnectorFactory(info, mySqlConfig);

            return(factory.CreateConnectionString());
        }
Пример #6
0
        /// <summary>
        /// Add your MySql-based DbContext to the ContainerBuilder
        /// </summary>
        /// <typeparam name="TContext">Your DbContext</typeparam>
        /// <param name="container">Autofac <see cref="ContainerBuilder" /></param>
        /// <param name="config">Your app config</param>
        /// <param name="serviceName">Name of service instance</param>
        /// <returns><see cref="IRegistrationBuilder{TLimit, TActivatorData, TRegistrationStyle}"/></returns>
        public static IRegistrationBuilder <object, SimpleActivatorData, SingleRegistrationStyle> RegisterDbContext <TContext>(this ContainerBuilder container, IConfiguration config, string serviceName = null)
        {
            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }

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

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

            var mySqlConfig = new MySqlProviderConnectorOptions(config);
            var factory     = new MySqlProviderConnectorFactory(info, mySqlConfig, typeof(TContext));

            return(container.Register(c => factory.Create(null)).As <TContext>());
        }
Пример #7
0
        /// <summary>
        /// Adds a MySqlConnection (as IDbConnection and MySqlConnection) 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> RegisterMySqlConnection(this ContainerBuilder container, IConfiguration config, string serviceName = null)
        {
            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }

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

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

            Type mySqlConnection = MySqlTypeLocator.MySqlConnection;
            var  mySqlConfig     = new MySqlProviderConnectorOptions(config);
            var  factory         = new MySqlProviderConnectorFactory(info, mySqlConfig, mySqlConnection);

            container.RegisterType <RelationalHealthContributor>().As <IHealthContributor>();
            return(container.Register(c => factory.Create(null)).As(typeof(IDbConnection), mySqlConnection));
        }