tests to handle some error cases and docs

This commit is contained in:
TomPallister
2020-04-13 12:05:55 +01:00
parent b300ed9aec
commit c9483cdad6
9 changed files with 281 additions and 5 deletions

View File

@ -41,5 +41,6 @@
QuotaExceededError = 36,
RequestCanceled = 37,
ConnectionToDownstreamServiceError = 38,
CouldNotFindLoadBalancerCreator = 39,
}
}

View File

@ -0,0 +1,12 @@
namespace Ocelot.LoadBalancer.LoadBalancers
{
using Errors;
public class CouldNotFindLoadBalancerCreator : Error
{
public CouldNotFindLoadBalancerCreator(string message)
: base(message, OcelotErrorCode.CouldNotFindLoadBalancerCreator)
{
}
}
}

View File

@ -28,7 +28,13 @@
var serviceProvider = serviceProviderFactoryResponse.Data;
var requestedType = reRoute.LoadBalancerOptions?.Type ?? nameof(NoLoadBalancer);
var applicableCreator = _loadBalancerCreators.Single(c => c.Type == requestedType);
var applicableCreator = _loadBalancerCreators.SingleOrDefault(c => c.Type == requestedType);
if (applicableCreator == null)
{
return new ErrorResponse<ILoadBalancer>(new CouldNotFindLoadBalancerCreator($"Could not find load balancer creator for Type: {requestedType}, please check your config specified the correct load balancer and that you have registered a class with the same name."));
}
var createdLoadBalancer = applicableCreator.Create(reRoute, serviceProvider);
return new OkResponse<ILoadBalancer>(createdLoadBalancer);
}

View File

@ -45,7 +45,8 @@ namespace Ocelot.Responder
return 502;
}
if (errors.Any(e => e.Code == OcelotErrorCode.UnableToCompleteRequestError))
if (errors.Any(e => e.Code == OcelotErrorCode.UnableToCompleteRequestError
|| e.Code == OcelotErrorCode.CouldNotFindLoadBalancerCreator))
{
return 500;
}