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)); }
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()); }
/// <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>()); }
/// <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)); }