Commit d6653d3b authored by Marc Gravell's avatar Marc Gravell

another attempt to invesstigate #883

parent 3d057200
......@@ -817,7 +817,7 @@ private static async Task<ConnectionMultiplexer> ConnectImplAsync(object configu
public static Task<ConnectionMultiplexer> ConnectAsync(ConfigurationOptions configuration, TextWriter log = null)
=> ConnectImplAsync(configuration, log);
private static ConnectionMultiplexer CreateMultiplexer(object configuration, TextWriter log, out EventHandler<ConnectionFailedEventArgs> connectHandler)
internal static ConfigurationOptions PrepareConfig(object configuration)
{
if (configuration == null) throw new ArgumentNullException(nameof(configuration));
ConfigurationOptions config;
......@@ -835,7 +835,11 @@ private static ConnectionMultiplexer CreateMultiplexer(object configuration, Tex
}
if (config.EndPoints.Count == 0) throw new ArgumentException("No endpoints specified", nameof(configuration));
config.SetDefaultPorts();
var muxer = new ConnectionMultiplexer(config);
return config;
}
private static ConnectionMultiplexer CreateMultiplexer(object configuration, TextWriter log, out EventHandler<ConnectionFailedEventArgs> connectHandler)
{
var muxer = new ConnectionMultiplexer(PrepareConfig(configuration));
connectHandler = null;
if(log != null)
{
......
......@@ -10,7 +10,7 @@ namespace StackExchange.Redis.Tests
{
public class Config : TestBase
{
public Config(ITestOutputHelper output) : base (output) { }
public Config(ITestOutputHelper output) : base(output) { }
[Fact]
public void SslProtocols_SingleValue()
......
......@@ -2,7 +2,10 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Reflection;
using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;
using StackExchange.Redis.Tests.Helpers;
......@@ -319,6 +322,45 @@ public void SSLHostInferredFromEndpoints()
Assert.True(options.SslHost == null);
}
private void Check(string name, object x, object y)
{
Writer.WriteLine($"{name}: {(x == null ? "(null)" : x.ToString())} vs {(y == null ? "(null)" : y.ToString())}");
Assert.Equal(x, y);
}
[Fact]
public void Issue883_Exhaustive()
{
var a = ConnectionMultiplexer.PrepareConfig("myDNS:883,password=mypassword,connectRetry=3,connectTimeout=5000,syncTimeout=5000,defaultDatabase=0,ssl=true,abortConnect=false");
var b = ConnectionMultiplexer.PrepareConfig(new ConfigurationOptions
{
EndPoints = { { "myDNS", 883 } },
Password = "mypassword",
ConnectRetry = 3,
ConnectTimeout = 5000,
SyncTimeout = 5000,
DefaultDatabase = 0,
Ssl = true,
AbortOnConnectFail = false,
});
Writer.WriteLine($"computed: {b.ToString(true)}");
Writer.WriteLine("Checking endpoints...");
var c = a.EndPoints.Cast<DnsEndPoint>().Single();
var d = b.EndPoints.Cast<DnsEndPoint>().Single();
Check(nameof(c.Host), c.Host, d.Host);
Check(nameof(c.Port), c.Port, d.Port);
Check(nameof(c.AddressFamily), c.AddressFamily, d.AddressFamily);
var fields = typeof(ConfigurationOptions).GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
Writer.WriteLine($"Comparing {fields.Length} fields...");
Array.Sort(fields, (x, y) => string.Compare(x.Name, y.Name));
foreach (var field in fields)
{
Check(field.Name, field.GetValue(a), field.GetValue(b));
}
}
[Fact]
public void SSLParseViaConfig_Issue883_ConfigObject()
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment