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

DebugAids: move SimulateConnectionFailure to internal

parent 63c80596
......@@ -5,29 +5,6 @@
namespace StackExchange.Redis
{
#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
{
private volatile bool allowConnect = true,
......@@ -44,18 +21,6 @@ public partial class ConnectionMultiplexer
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
{
partial void ShouldIgnoreConnect(ref bool ignore)
......
......@@ -717,4 +717,13 @@ public partial interface IServer : IRedis
#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 @@
namespace StackExchange.Redis
{
internal sealed partial class PhysicalBridge : IDisposable
internal sealed class PhysicalBridge : IDisposable
{
internal readonly string Name;
......@@ -799,5 +799,17 @@ private WriteResult WriteMessageToServerInsideWriteLock(PhysicalConnection conne
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 @@
namespace StackExchange.Redis
{
internal sealed partial class RedisServer : RedisBase, IServer
internal sealed class RedisServer : RedisBase, IServer
{
private readonly ServerEndPoint server;
......@@ -841,5 +841,10 @@ public Task<RedisResult> ExecuteAsync(string command, ICollection<object> args,
}
#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
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