Commit 2c307067 authored by Nick Craver's avatar Nick Craver

DebugAids: move SimulateConnectionFailure to internal

parent 63c80596
...@@ -5,29 +5,6 @@ ...@@ -5,29 +5,6 @@
namespace StackExchange.Redis namespace StackExchange.Redis
{ {
#if DEBUG #if DEBUG
public partial interface IServer
{
/// <summary>
/// Break the connection without mercy or thought
/// </summary>
void SimulateConnectionFailure();
}
internal partial class ServerEndPoint
{
internal void SimulateConnectionFailure()
{
interactive?.SimulateConnectionFailure();
subscription?.SimulateConnectionFailure();
}
}
internal partial class RedisServer
{
void IServer.SimulateConnectionFailure() => server.SimulateConnectionFailure();
}
public partial class ConnectionMultiplexer public partial class ConnectionMultiplexer
{ {
private volatile bool allowConnect = true, private volatile bool allowConnect = true,
...@@ -44,18 +21,6 @@ public partial class ConnectionMultiplexer ...@@ -44,18 +21,6 @@ public partial class ConnectionMultiplexer
public bool IgnoreConnect { get { return ignoreConnect; } set { ignoreConnect = value; } } public bool IgnoreConnect { get { return ignoreConnect; } set { ignoreConnect = value; } }
} }
internal partial class PhysicalBridge
{
internal void SimulateConnectionFailure()
{
if (!Multiplexer.RawConfig.AllowAdmin)
{
throw ExceptionFactory.AdminModeNotEnabled(Multiplexer.IncludeDetailInExceptions, RedisCommand.DEBUG, null, ServerEndPoint); // close enough
}
physical?.RecordConnectionFailed(ConnectionFailureType.SocketFailure);
}
}
internal partial class PhysicalConnection internal partial class PhysicalConnection
{ {
partial void ShouldIgnoreConnect(ref bool ignore) partial void ShouldIgnoreConnect(ref bool ignore)
......
...@@ -717,4 +717,13 @@ public partial interface IServer : IRedis ...@@ -717,4 +717,13 @@ public partial interface IServer : IRedis
#endregion #endregion
} }
internal static class IServerExtensions
{
/// <summary>
/// For testing only: Break the connection without mercy or thought
/// </summary>
/// <param name="server">The server to simulate failure on.</param>
public static void SimulateConnectionFailure(this IServer server) => (server as RedisServer)?.SimulateConnectionFailure();
}
} }
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
namespace StackExchange.Redis namespace StackExchange.Redis
{ {
internal sealed partial class PhysicalBridge : IDisposable internal sealed class PhysicalBridge : IDisposable
{ {
internal readonly string Name; internal readonly string Name;
...@@ -799,5 +799,17 @@ private WriteResult WriteMessageToServerInsideWriteLock(PhysicalConnection conne ...@@ -799,5 +799,17 @@ private WriteResult WriteMessageToServerInsideWriteLock(PhysicalConnection conne
return WriteResult.WriteFailure; return WriteResult.WriteFailure;
} }
} }
/// <summary>
/// For testing only
/// </summary>
internal void SimulateConnectionFailure()
{
if (!Multiplexer.RawConfig.AllowAdmin)
{
throw ExceptionFactory.AdminModeNotEnabled(Multiplexer.IncludeDetailInExceptions, RedisCommand.DEBUG, null, ServerEndPoint); // close enough
}
physical?.RecordConnectionFailed(ConnectionFailureType.SocketFailure);
}
} }
} }
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
namespace StackExchange.Redis namespace StackExchange.Redis
{ {
internal sealed partial class RedisServer : RedisBase, IServer internal sealed class RedisServer : RedisBase, IServer
{ {
private readonly ServerEndPoint server; private readonly ServerEndPoint server;
...@@ -841,5 +841,10 @@ public Task<RedisResult> ExecuteAsync(string command, ICollection<object> args, ...@@ -841,5 +841,10 @@ public Task<RedisResult> ExecuteAsync(string command, ICollection<object> args,
} }
#endregion #endregion
/// <summary>
/// For testing only
/// </summary>
internal void SimulateConnectionFailure() => server.SimulateConnectionFailure();
} }
} }
...@@ -732,5 +732,14 @@ private void SetConfig<T>(ref T field, T value, [CallerMemberName] string caller ...@@ -732,5 +732,14 @@ private void SetConfig<T>(ref T field, T value, [CallerMemberName] string caller
Multiplexer.ReconfigureIfNeeded(EndPoint, false, caller); Multiplexer.ReconfigureIfNeeded(EndPoint, false, caller);
} }
} }
/// <summary>
/// For testing only
/// </summary>
internal void SimulateConnectionFailure()
{
interactive?.SimulateConnectionFailure();
subscription?.SimulateConnectionFailure();
}
} }
} }
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