internal void ShouldInvalidateServer_should_return_expected_result_for_exceptionType(string exceptionTypeName, bool expectedResult) { _subject.Initialize(); Exception exception; var clusterId = new ClusterId(1); var serverId = new ServerId(clusterId, new DnsEndPoint("localhost", 27017)); var connectionId = new ConnectionId(serverId); var command = new BsonDocument("command", 1); var commandResult = new BsonDocument("ok", 1); switch (exceptionTypeName) { case nameof(EndOfStreamException): exception = new EndOfStreamException(); break; case nameof(Exception): exception = new Exception(); break; case nameof(IOException): exception = new IOException(); break; case nameof(MongoConnectionException): exception = new MongoConnectionException(connectionId, "message"); break; case nameof(MongoNodeIsRecoveringException): exception = new MongoNodeIsRecoveringException(connectionId, command, commandResult); break; case nameof(MongoNotPrimaryException): exception = new MongoNotPrimaryException(connectionId, command, commandResult); break; case nameof(SocketException): exception = new SocketException(); break; default: throw new Exception($"Invalid exceptionTypeName: {exceptionTypeName}."); } var result = _subject.ShouldInvalidateServer(exception); result.Should().Be(expectedResult); }
internal void ShouldInvalidateServer_should_return_expected_result_for_exceptionType(string exceptionTypeName, bool expectedResult) { _subject.Initialize(); Exception exception; var clusterId = new ClusterId(1); var serverId = new ServerId(clusterId, new DnsEndPoint("localhost", 27017)); var connectionId = new ConnectionId(serverId); var command = new BsonDocument("command", 1); var notWritablePrimaryResult = new BsonDocument { { "code", ServerErrorCode.NotWritablePrimary } }; var nodeIsRecoveringResult = new BsonDocument("code", ServerErrorCode.InterruptedAtShutdown); switch (exceptionTypeName) { case nameof(EndOfStreamException): exception = new EndOfStreamException(); break; case nameof(Exception): exception = new Exception(); break; case nameof(IOException): exception = new IOException(); break; case nameof(MongoConnectionException): exception = new MongoConnectionException(connectionId, "message"); break; case nameof(MongoNodeIsRecoveringException): exception = new MongoNodeIsRecoveringException(connectionId, command, notWritablePrimaryResult); break; case nameof(MongoNotPrimaryException): exception = new MongoNotPrimaryException(connectionId, command, nodeIsRecoveringResult); break; case nameof(SocketException): exception = new SocketException(); break; case "MongoConnectionExceptionWithSocketTimeout": var innermostException = new SocketException((int)SocketError.TimedOut); var innerException = new IOException("Execute Order 66", innermostException); exception = new MongoConnectionException(connectionId, "Yes, Lord Sidious", innerException); break; case nameof(TimeoutException): exception = new TimeoutException(); break; case nameof(MongoExecutionTimeoutException): exception = new MongoExecutionTimeoutException(connectionId, "message"); break; default: throw new Exception($"Invalid exceptionTypeName: {exceptionTypeName}."); } var result = _subject.ShouldInvalidateServer(Mock.Of <IConnection>(), exception, new ServerDescription(_subject.ServerId, _subject.EndPoint), out _); result.Should().Be(expectedResult); }