mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-04-22 06:42:50 +08:00
Merge branch 'davidni-davidni/netstandard' into develop
This commit is contained in:
commit
dadb43ef6f
@ -55,8 +55,7 @@ A quick list of Ocelot's capabilities for more information see the [documentatio
|
|||||||
|
|
||||||
## How to install
|
## How to install
|
||||||
|
|
||||||
Ocelot is designed to work with ASP.NET core only and is currently
|
Ocelot is designed to work with ASP.NET Core only and it targets `netstandard2.0`. This means it can be used anywhere `.NET Standard 2.0` is supported, including `.NET Core 2.0` and `.NET Framework 4.6.1` and up. [This](https://docs.microsoft.com/en-us/dotnet/standard/net-standard) documentation may prove helpful when working out if Ocelot would be suitable for you.
|
||||||
built to netcoreapp2.0 [this](https://docs.microsoft.com/en-us/dotnet/articles/standard/library) documentation may prove helpful when working out if Ocelot would be suitable for you.
|
|
||||||
|
|
||||||
Install Ocelot and it's dependencies using NuGet.
|
Install Ocelot and it's dependencies using NuGet.
|
||||||
|
|
||||||
|
@ -2,14 +2,14 @@ Getting Started
|
|||||||
===============
|
===============
|
||||||
|
|
||||||
Ocelot is designed to work with .NET Core only and is currently
|
Ocelot is designed to work with .NET Core only and is currently
|
||||||
built to netcoreapp2.0 `this <https://docs.microsoft.com/en-us/dotnet/articles/standard/library>`_ documentation may prove helpful when working out if Ocelot would be suitable for you.
|
built to netstandard2.0 `this <https://docs.microsoft.com/en-us/dotnet/articles/standard/library>`_ documentation may prove helpful when working out if Ocelot would be suitable for you.
|
||||||
|
|
||||||
.NET Core 2.0
|
.NET Core 2.0
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
**Install NuGet package**
|
**Install NuGet package**
|
||||||
|
|
||||||
Install Ocelot and it's dependencies using nuget. You will need to create a netcoreapp2.0 project and bring the package into it. Then follow the Startup below and :doc:`../features/configuration` sections
|
Install Ocelot and it's dependencies using nuget. You will need to create a netstandard2.0 project and bring the package into it. Then follow the Startup below and :doc:`../features/configuration` sections
|
||||||
to get up and running.
|
to get up and running.
|
||||||
|
|
||||||
``Install-Package Ocelot``
|
``Install-Package Ocelot``
|
||||||
|
@ -2,6 +2,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Ocelot.Configuration.File;
|
using Ocelot.Configuration.File;
|
||||||
using Ocelot.Infrastructure;
|
using Ocelot.Infrastructure;
|
||||||
|
using Ocelot.Infrastructure.Extensions;
|
||||||
using Ocelot.Logging;
|
using Ocelot.Logging;
|
||||||
using Ocelot.Middleware;
|
using Ocelot.Middleware;
|
||||||
using Ocelot.Responses;
|
using Ocelot.Responses;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using Ocelot.Infrastructure.Extensions;
|
||||||
|
|
||||||
namespace Ocelot.Configuration.File
|
namespace Ocelot.Configuration.File
|
||||||
{
|
{
|
||||||
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Ocelot.Infrastructure.Extensions;
|
||||||
|
|
||||||
namespace Ocelot.Configuration.File
|
namespace Ocelot.Configuration.File
|
||||||
{
|
{
|
||||||
|
@ -49,7 +49,7 @@ namespace Ocelot.Configuration
|
|||||||
if (test != null)
|
if (test != null)
|
||||||
{
|
{
|
||||||
var node = (INode)test;
|
var node = (INode)test;
|
||||||
var result = node.Accept(new UpdateFileConfiguration(fileConfiguration));
|
var result = await node.Accept(new UpdateFileConfiguration(fileConfiguration));
|
||||||
if (result.GetType() == typeof(Rafty.Concensus.ErrorResponse<UpdateFileConfiguration>))
|
if (result.GetType() == typeof(Rafty.Concensus.ErrorResponse<UpdateFileConfiguration>))
|
||||||
{
|
{
|
||||||
return new BadRequestObjectResult("There was a problem. This error message sucks raise an issue in GitHub.");
|
return new BadRequestObjectResult("There was a problem. This error message sucks raise an issue in GitHub.");
|
||||||
|
@ -3,6 +3,7 @@ namespace Ocelot.Headers
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Ocelot.Configuration.Creator;
|
using Ocelot.Configuration.Creator;
|
||||||
using Ocelot.Infrastructure;
|
using Ocelot.Infrastructure;
|
||||||
|
using Ocelot.Infrastructure.Extensions;
|
||||||
using Ocelot.Logging;
|
using Ocelot.Logging;
|
||||||
using Ocelot.Middleware;
|
using Ocelot.Middleware;
|
||||||
|
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Ocelot.Infrastructure.Extensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Trivial implementations of methods present in .NET Core 2 but not supported on .NET Standard 2.0.
|
||||||
|
/// </summary>
|
||||||
|
internal static class NetCoreSupportExtensions
|
||||||
|
{
|
||||||
|
internal static void AppendJoin<T>(this StringBuilder builder, char separator, IEnumerable<T> values)
|
||||||
|
{
|
||||||
|
builder.Append(string.Join(separator.ToString(), values));
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string[] Split(this string input, string separator, StringSplitOptions options = StringSplitOptions.None)
|
||||||
|
{
|
||||||
|
return input.Split(new[] { separator }, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static bool StartsWith(this string input, char value)
|
||||||
|
{
|
||||||
|
return input.StartsWith(value.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static bool EndsWith(this string input, char value)
|
||||||
|
{
|
||||||
|
return input.EndsWith(value.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -35,7 +35,7 @@ namespace Ocelot.LoadBalancer.LoadBalancers
|
|||||||
{
|
{
|
||||||
if (stickySession.Expiry < DateTime.UtcNow)
|
if (stickySession.Expiry < DateTime.UtcNow)
|
||||||
{
|
{
|
||||||
_stored.Remove(stickySession.Key, out _);
|
_stored.TryRemove(stickySession.Key, out _);
|
||||||
_loadBalancer.Release(stickySession.HostAndPort);
|
_loadBalancer.Release(stickySession.HostAndPort);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
<RuntimeFrameworkVersion>2.0.0</RuntimeFrameworkVersion>
|
<RuntimeFrameworkVersion>2.0.0</RuntimeFrameworkVersion>
|
||||||
<NETStandardImplicitPackageVersion>2.0.0</NETStandardImplicitPackageVersion>
|
<NETStandardImplicitPackageVersion>2.0.0</NETStandardImplicitPackageVersion>
|
||||||
<NoPackageAnalysis>true</NoPackageAnalysis>
|
<NoPackageAnalysis>true</NoPackageAnalysis>
|
||||||
@ -25,18 +25,26 @@
|
|||||||
<DebugSymbols>True</DebugSymbols>
|
<DebugSymbols>True</DebugSymbols>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Butterfly.Client.AspNetCore" Version="0.0.8" />
|
<PackageReference Include="Butterfly.Client" Version="0.0.8" />
|
||||||
|
<PackageReference Include="Butterfly.Client.AspNetCore" Version="0.0.8">
|
||||||
|
<NoWarn>NU1701</NoWarn>
|
||||||
|
</PackageReference>
|
||||||
<PackageReference Include="FluentValidation" Version="7.5.2" />
|
<PackageReference Include="FluentValidation" Version="7.5.2" />
|
||||||
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="2.4.0" />
|
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="2.6.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
|
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.3" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.1" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.4" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.1" />
|
<PackageReference Include="Microsoft.AspNetCore.MiddlewareAnalysis" Version="2.0.3" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Data.SQLite" Version="2.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DiagnosticAdapter" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.DiagnosticAdapter" Version="2.0.1">
|
||||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.1" />
|
<NoWarn>NU1701</NoWarn>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.2" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.2" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.2" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.2" />
|
||||||
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
@ -45,9 +53,9 @@
|
|||||||
<PackageReference Include="CacheManager.Microsoft.Extensions.Configuration" Version="1.1.2" />
|
<PackageReference Include="CacheManager.Microsoft.Extensions.Configuration" Version="1.1.2" />
|
||||||
<PackageReference Include="CacheManager.Microsoft.Extensions.Logging" Version="1.1.2" />
|
<PackageReference Include="CacheManager.Microsoft.Extensions.Logging" Version="1.1.2" />
|
||||||
<PackageReference Include="Consul" Version="0.7.2.4" />
|
<PackageReference Include="Consul" Version="0.7.2.4" />
|
||||||
<PackageReference Include="Polly" Version="5.8.0" />
|
<PackageReference Include="Polly" Version="6.0.1" />
|
||||||
<PackageReference Include="Pivotal.Discovery.Client" Version="1.1.0" />
|
<PackageReference Include="Pivotal.Discovery.Client" Version="1.1.0" />
|
||||||
<PackageReference Include="IdentityServer4" Version="2.1.3" />
|
<PackageReference Include="IdentityServer4" Version="2.2.0" />
|
||||||
<PackageReference Include="Rafty" Version="0.4.2" />
|
<PackageReference Include="Rafty" Version="0.4.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Rafty.FiniteStateMachine;
|
using Rafty.FiniteStateMachine;
|
||||||
using Rafty.Infrastructure;
|
using Rafty.Infrastructure;
|
||||||
@ -17,7 +18,7 @@ namespace Ocelot.Raft
|
|||||||
_id = nodeId.Id.Replace("/","").Replace(":","");
|
_id = nodeId.Id.Replace("/","").Replace(":","");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Handle(LogEntry log)
|
public Task Handle(LogEntry log)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -28,6 +29,8 @@ namespace Ocelot.Raft
|
|||||||
{
|
{
|
||||||
Console.WriteLine(exception);
|
Console.WriteLine(exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Ocelot.Configuration;
|
using Ocelot.Configuration;
|
||||||
using Ocelot.Middleware;
|
using Ocelot.Middleware;
|
||||||
@ -33,51 +34,47 @@ namespace Ocelot.Raft
|
|||||||
_baseSchemeUrlAndPort = finder.Find();
|
_baseSchemeUrlAndPort = finder.Find();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Id {get; private set;}
|
public string Id { get; }
|
||||||
|
|
||||||
public RequestVoteResponse Request(RequestVote requestVote)
|
public async Task<RequestVoteResponse> Request(RequestVote requestVote)
|
||||||
{
|
{
|
||||||
if(_token == null)
|
if(_token == null)
|
||||||
{
|
{
|
||||||
SetToken();
|
await SetToken();
|
||||||
}
|
}
|
||||||
|
|
||||||
var json = JsonConvert.SerializeObject(requestVote, _jsonSerializerSettings);
|
var json = JsonConvert.SerializeObject(requestVote, _jsonSerializerSettings);
|
||||||
var content = new StringContent(json);
|
var content = new StringContent(json);
|
||||||
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
|
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
|
||||||
var response = _httpClient.PostAsync($"{_hostAndPort}/administration/raft/requestvote", content).GetAwaiter().GetResult();
|
var response = await _httpClient.PostAsync($"{_hostAndPort}/administration/raft/requestvote", content);
|
||||||
if(response.IsSuccessStatusCode)
|
if(response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
return JsonConvert.DeserializeObject<RequestVoteResponse>(response.Content.ReadAsStringAsync().GetAwaiter().GetResult(), _jsonSerializerSettings);
|
return JsonConvert.DeserializeObject<RequestVoteResponse>(await response.Content.ReadAsStringAsync(), _jsonSerializerSettings);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return new RequestVoteResponse(false, requestVote.Term);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public AppendEntriesResponse Request(AppendEntries appendEntries)
|
return new RequestVoteResponse(false, requestVote.Term);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<AppendEntriesResponse> Request(AppendEntries appendEntries)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if(_token == null)
|
if(_token == null)
|
||||||
{
|
{
|
||||||
SetToken();
|
await SetToken();
|
||||||
}
|
}
|
||||||
|
|
||||||
var json = JsonConvert.SerializeObject(appendEntries, _jsonSerializerSettings);
|
var json = JsonConvert.SerializeObject(appendEntries, _jsonSerializerSettings);
|
||||||
var content = new StringContent(json);
|
var content = new StringContent(json);
|
||||||
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
|
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
|
||||||
var response = _httpClient.PostAsync($"{_hostAndPort}/administration/raft/appendEntries", content).GetAwaiter().GetResult();
|
var response = await _httpClient.PostAsync($"{_hostAndPort}/administration/raft/appendEntries", content);
|
||||||
if(response.IsSuccessStatusCode)
|
if(response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
return JsonConvert.DeserializeObject<AppendEntriesResponse>(response.Content.ReadAsStringAsync().GetAwaiter().GetResult(),_jsonSerializerSettings);
|
return JsonConvert.DeserializeObject<AppendEntriesResponse>(await response.Content.ReadAsStringAsync(), _jsonSerializerSettings);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
return new AppendEntriesResponse(appendEntries.Term, false);
|
return new AppendEntriesResponse(appendEntries.Term, false);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
catch(Exception ex)
|
catch(Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine(ex);
|
Console.WriteLine(ex);
|
||||||
@ -85,33 +82,31 @@ namespace Ocelot.Raft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Response<T> Request<T>(T command)
|
public async Task<Response<T>> Request<T>(T command)
|
||||||
where T : ICommand
|
where T : ICommand
|
||||||
{
|
{
|
||||||
Console.WriteLine("SENDING REQUEST....");
|
Console.WriteLine("SENDING REQUEST....");
|
||||||
if(_token == null)
|
if(_token == null)
|
||||||
{
|
{
|
||||||
SetToken();
|
await SetToken();
|
||||||
}
|
}
|
||||||
|
|
||||||
var json = JsonConvert.SerializeObject(command, _jsonSerializerSettings);
|
var json = JsonConvert.SerializeObject(command, _jsonSerializerSettings);
|
||||||
var content = new StringContent(json);
|
var content = new StringContent(json);
|
||||||
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
|
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
|
||||||
var response = _httpClient.PostAsync($"{_hostAndPort}/administration/raft/command", content).GetAwaiter().GetResult();
|
var response = await _httpClient.PostAsync($"{_hostAndPort}/administration/raft/command", content);
|
||||||
if(response.IsSuccessStatusCode)
|
if(response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
Console.WriteLine("REQUEST OK....");
|
Console.WriteLine("REQUEST OK....");
|
||||||
var okResponse = JsonConvert.DeserializeObject<OkResponse<ICommand>>(response.Content.ReadAsStringAsync().GetAwaiter().GetResult(), _jsonSerializerSettings);
|
var okResponse = JsonConvert.DeserializeObject<OkResponse<ICommand>>(await response.Content.ReadAsStringAsync(), _jsonSerializerSettings);
|
||||||
return new OkResponse<T>((T)okResponse.Command);
|
return new OkResponse<T>((T)okResponse.Command);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("REQUEST NOT OK....");
|
Console.WriteLine("REQUEST NOT OK....");
|
||||||
return new ErrorResponse<T>(response.Content.ReadAsStringAsync().GetAwaiter().GetResult(), command);
|
return new ErrorResponse<T>(await response.Content.ReadAsStringAsync(), command);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetToken()
|
private async Task SetToken()
|
||||||
{
|
{
|
||||||
var tokenUrl = $"{_baseSchemeUrlAndPort}{_config.AdministrationPath}/connect/token";
|
var tokenUrl = $"{_baseSchemeUrlAndPort}{_config.AdministrationPath}/connect/token";
|
||||||
var formData = new List<KeyValuePair<string, string>>
|
var formData = new List<KeyValuePair<string, string>>
|
||||||
@ -122,8 +117,8 @@ namespace Ocelot.Raft
|
|||||||
new KeyValuePair<string, string>("grant_type", "client_credentials")
|
new KeyValuePair<string, string>("grant_type", "client_credentials")
|
||||||
};
|
};
|
||||||
var content = new FormUrlEncodedContent(formData);
|
var content = new FormUrlEncodedContent(formData);
|
||||||
var response = _httpClient.PostAsync(tokenUrl, content).GetAwaiter().GetResult();
|
var response = await _httpClient.PostAsync(tokenUrl, content);
|
||||||
var responseContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
|
var responseContent = await response.Content.ReadAsStringAsync();
|
||||||
response.EnsureSuccessStatusCode();
|
response.EnsureSuccessStatusCode();
|
||||||
_token = JsonConvert.DeserializeObject<BearerToken>(responseContent);
|
_token = JsonConvert.DeserializeObject<BearerToken>(responseContent);
|
||||||
_httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(_token.TokenType, _token.AccessToken);
|
_httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(_token.TokenType, _token.AccessToken);
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
using System.Threading.Tasks;
|
||||||
using Ocelot.Configuration.Setter;
|
using Ocelot.Configuration.Setter;
|
||||||
using Rafty.FiniteStateMachine;
|
using Rafty.FiniteStateMachine;
|
||||||
using Rafty.Log;
|
using Rafty.Log;
|
||||||
@ -14,12 +15,12 @@ namespace Ocelot.Raft
|
|||||||
_setter = setter;
|
_setter = setter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Handle(LogEntry log)
|
public async Task Handle(LogEntry log)
|
||||||
{
|
{
|
||||||
//todo - handle an error
|
//todo - handle an error
|
||||||
//hack it to just cast as at the moment we know this is the only command :P
|
//hack it to just cast as at the moment we know this is the only command :P
|
||||||
var hack = (UpdateFileConfiguration)log.CommandData;
|
var hack = (UpdateFileConfiguration)log.CommandData;
|
||||||
_setter.Set(hack.Configuration).GetAwaiter().GetResult();
|
await _setter.Set(hack.Configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,9 +20,9 @@ namespace Ocelot.Raft
|
|||||||
public class RaftController : Controller
|
public class RaftController : Controller
|
||||||
{
|
{
|
||||||
private readonly INode _node;
|
private readonly INode _node;
|
||||||
private IOcelotLogger _logger;
|
private readonly IOcelotLogger _logger;
|
||||||
private string _baseSchemeUrlAndPort;
|
private readonly string _baseSchemeUrlAndPort;
|
||||||
private JsonSerializerSettings _jsonSerialiserSettings;
|
private readonly JsonSerializerSettings _jsonSerialiserSettings;
|
||||||
|
|
||||||
public RaftController(INode node, IOcelotLoggerFactory loggerFactory, IBaseUrlFinder finder)
|
public RaftController(INode node, IOcelotLoggerFactory loggerFactory, IBaseUrlFinder finder)
|
||||||
{
|
{
|
||||||
@ -45,7 +45,7 @@ namespace Ocelot.Raft
|
|||||||
|
|
||||||
_logger.LogDebug($"{_baseSchemeUrlAndPort}/appendentries called, my state is {_node.State.GetType().FullName}");
|
_logger.LogDebug($"{_baseSchemeUrlAndPort}/appendentries called, my state is {_node.State.GetType().FullName}");
|
||||||
|
|
||||||
var appendEntriesResponse = _node.Handle(appendEntries);
|
var appendEntriesResponse = await _node.Handle(appendEntries);
|
||||||
|
|
||||||
return new OkObjectResult(appendEntriesResponse);
|
return new OkObjectResult(appendEntriesResponse);
|
||||||
}
|
}
|
||||||
@ -62,7 +62,7 @@ namespace Ocelot.Raft
|
|||||||
|
|
||||||
_logger.LogDebug($"{_baseSchemeUrlAndPort}/requestvote called, my state is {_node.State.GetType().FullName}");
|
_logger.LogDebug($"{_baseSchemeUrlAndPort}/requestvote called, my state is {_node.State.GetType().FullName}");
|
||||||
|
|
||||||
var requestVoteResponse = _node.Handle(requestVote);
|
var requestVoteResponse = await _node.Handle(requestVote);
|
||||||
|
|
||||||
return new OkObjectResult(requestVoteResponse);
|
return new OkObjectResult(requestVoteResponse);
|
||||||
}
|
}
|
||||||
@ -81,7 +81,7 @@ namespace Ocelot.Raft
|
|||||||
|
|
||||||
_logger.LogDebug($"{_baseSchemeUrlAndPort}/command called, my state is {_node.State.GetType().FullName}");
|
_logger.LogDebug($"{_baseSchemeUrlAndPort}/command called, my state is {_node.State.GetType().FullName}");
|
||||||
|
|
||||||
var commandResponse = _node.Accept(command);
|
var commandResponse = await _node.Accept(command);
|
||||||
|
|
||||||
json = JsonConvert.SerializeObject(commandResponse, _jsonSerialiserSettings);
|
json = JsonConvert.SerializeObject(commandResponse, _jsonSerialiserSettings);
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ namespace Ocelot.Raft
|
|||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
_logger.LogError($"THERE WAS A PROBLEM ON NODE {_node.State.CurrentState.Id}", e);
|
_logger.LogError($"THERE WAS A PROBLEM ON NODE {_node.State.CurrentState.Id}", e);
|
||||||
throw e;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,9 +5,11 @@ using Newtonsoft.Json;
|
|||||||
using System;
|
using System;
|
||||||
using Rafty.Infrastructure;
|
using Rafty.Infrastructure;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Ocelot.Raft
|
namespace Ocelot.Raft
|
||||||
{
|
{
|
||||||
|
//todo - use async await
|
||||||
[ExcludeFromCoverage]
|
[ExcludeFromCoverage]
|
||||||
public class SqlLiteLog : ILog
|
public class SqlLiteLog : ILog
|
||||||
{
|
{
|
||||||
@ -40,9 +42,7 @@ namespace Ocelot.Raft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int LastLogIndex
|
public Task<int> LastLogIndex()
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
{
|
||||||
lock(_lock)
|
lock(_lock)
|
||||||
{
|
{
|
||||||
@ -61,14 +61,11 @@ namespace Ocelot.Raft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return Task.FromResult(result);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public long LastLogTerm
|
public Task<long> LastLogTerm ()
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
{
|
||||||
lock(_lock)
|
lock(_lock)
|
||||||
{
|
{
|
||||||
@ -91,14 +88,11 @@ namespace Ocelot.Raft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return Task.FromResult(result);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Count
|
public Task<int> Count ()
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
{
|
||||||
lock(_lock)
|
lock(_lock)
|
||||||
{
|
{
|
||||||
@ -117,12 +111,11 @@ namespace Ocelot.Raft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return Task.FromResult(result);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Apply(LogEntry log)
|
public Task<int> Apply(LogEntry log)
|
||||||
{
|
{
|
||||||
lock(_lock)
|
lock(_lock)
|
||||||
{
|
{
|
||||||
@ -145,13 +138,13 @@ namespace Ocelot.Raft
|
|||||||
using(var command = new SqliteCommand(sql, connection))
|
using(var command = new SqliteCommand(sql, connection))
|
||||||
{
|
{
|
||||||
var result = command.ExecuteScalar();
|
var result = command.ExecuteScalar();
|
||||||
return Convert.ToInt32(result);
|
return Task.FromResult(Convert.ToInt32(result));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteConflictsFromThisLog(int index, LogEntry logEntry)
|
public Task DeleteConflictsFromThisLog(int index, LogEntry logEntry)
|
||||||
{
|
{
|
||||||
lock(_lock)
|
lock(_lock)
|
||||||
{
|
{
|
||||||
@ -180,9 +173,11 @@ namespace Ocelot.Raft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LogEntry Get(int index)
|
public Task<LogEntry> Get(int index)
|
||||||
{
|
{
|
||||||
lock(_lock)
|
lock(_lock)
|
||||||
{
|
{
|
||||||
@ -199,13 +194,13 @@ namespace Ocelot.Raft
|
|||||||
TypeNameHandling = TypeNameHandling.All
|
TypeNameHandling = TypeNameHandling.All
|
||||||
};
|
};
|
||||||
var log = JsonConvert.DeserializeObject<LogEntry>(data, jsonSerializerSettings);
|
var log = JsonConvert.DeserializeObject<LogEntry>(data, jsonSerializerSettings);
|
||||||
return log;
|
return Task.FromResult(log);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public System.Collections.Generic.List<(int index, LogEntry logEntry)> GetFrom(int index)
|
public Task<List<(int index, LogEntry logEntry)>> GetFrom(int index)
|
||||||
{
|
{
|
||||||
lock(_lock)
|
lock(_lock)
|
||||||
{
|
{
|
||||||
@ -235,11 +230,11 @@ namespace Ocelot.Raft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return logsToReturn;
|
return Task.FromResult(logsToReturn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public long GetTermAtIndex(int index)
|
public Task<long> GetTermAtIndex(int index)
|
||||||
{
|
{
|
||||||
lock(_lock)
|
lock(_lock)
|
||||||
{
|
{
|
||||||
@ -264,11 +259,11 @@ namespace Ocelot.Raft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return Task.FromResult(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Remove(int indexOfCommand)
|
public Task Remove(int indexOfCommand)
|
||||||
{
|
{
|
||||||
lock(_lock)
|
lock(_lock)
|
||||||
{
|
{
|
||||||
@ -284,6 +279,8 @@ namespace Ocelot.Raft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ namespace Ocelot.Requester
|
|||||||
|
|
||||||
if(context.DownstreamReRoute.DangerousAcceptAnyServerCertificateValidator)
|
if(context.DownstreamReRoute.DangerousAcceptAnyServerCertificateValidator)
|
||||||
{
|
{
|
||||||
httpclientHandler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
|
httpclientHandler.ServerCertificateCustomValidationCallback = (request, certificate, chain, errors) => true;
|
||||||
|
|
||||||
_logger
|
_logger
|
||||||
.LogWarning($"You have ignored all SSL warnings by using DangerousAcceptAnyServerCertificateValidator for this DownstreamReRoute, UpstreamPathTemplate: {context.DownstreamReRoute.UpstreamPathTemplate}, DownstreamPathTemplate: {context.DownstreamReRoute.DownstreamPathTemplate}");
|
.LogWarning($"You have ignored all SSL warnings by using DangerousAcceptAnyServerCertificateValidator for this DownstreamReRoute, UpstreamPathTemplate: {context.DownstreamReRoute.UpstreamPathTemplate}, DownstreamPathTemplate: {context.DownstreamReRoute.DownstreamPathTemplate}");
|
||||||
|
@ -316,8 +316,6 @@ namespace Ocelot.AcceptanceTests
|
|||||||
{
|
{
|
||||||
new Scope("api2"),
|
new Scope("api2"),
|
||||||
new Scope("api2.readOnly"),
|
new Scope("api2.readOnly"),
|
||||||
new Scope("openid"),
|
|
||||||
new Scope("offline_access")
|
|
||||||
},
|
},
|
||||||
ApiSecrets = new List<Secret>()
|
ApiSecrets = new List<Secret>()
|
||||||
{
|
{
|
||||||
|
@ -34,26 +34,27 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CacheManager.Serialization.Json" Version="1.1.2" />
|
<PackageReference Include="CacheManager.Serialization.Json" Version="1.1.2" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
|
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.8" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.0.2" />
|
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.0.3" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
|
||||||
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.DotNet.InternalAbstractions" Version="1.0.500-preview2-1-003177" />
|
<PackageReference Include="Microsoft.DotNet.InternalAbstractions" Version="1.0.500-preview2-1-003177" />
|
||||||
<PackageReference Include="Shouldly" Version="3.0.0" />
|
<PackageReference Include="Shouldly" Version="3.0.0" />
|
||||||
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
|
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
|
||||||
<PackageReference Include="Consul" Version="0.7.2.4" />
|
<PackageReference Include="Consul" Version="0.7.2.4" />
|
||||||
<PackageReference Include="xunit" Version="2.3.1" />
|
<PackageReference Include="xunit" Version="2.3.1" />
|
||||||
<PackageReference Include="Butterfly.Client.AspNetCore" Version="0.0.8" />
|
<PackageReference Include="Butterfly.Client.AspNetCore" Version="0.0.8" />
|
||||||
|
<PackageReference Include="Rafty" Version="0.4.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -664,7 +664,8 @@ namespace Ocelot.AcceptanceTests
|
|||||||
{
|
{
|
||||||
using (var httpClient = new HttpClient())
|
using (var httpClient = new HttpClient())
|
||||||
{
|
{
|
||||||
var response = httpClient.GetAsync($"{url}/.well-known/openid-configuration").Result;
|
var response = httpClient.GetAsync($"{url}/.well-known/openid-configuration").GetAwaiter().GetResult();
|
||||||
|
var content = response.Content.ReadAsStringAsync().GetAwaiter();
|
||||||
response.EnsureSuccessStatusCode();
|
response.EnsureSuccessStatusCode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="BenchmarkDotNet" Version="0.10.13" />
|
<PackageReference Include="BenchmarkDotNet" Version="0.10.14" />
|
||||||
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
@ -25,26 +25,26 @@
|
|||||||
<ProjectReference Include="..\..\src\Ocelot\Ocelot.csproj" />
|
<ProjectReference Include="..\..\src\Ocelot\Ocelot.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
|
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.8" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
|
||||||
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.DotNet.InternalAbstractions" Version="1.0.500-preview2-1-003177" />
|
<PackageReference Include="Microsoft.DotNet.InternalAbstractions" Version="1.0.500-preview2-1-003177" />
|
||||||
<PackageReference Include="xunit" Version="2.3.1" />
|
<PackageReference Include="xunit" Version="2.3.1" />
|
||||||
<PackageReference Include="IdentityServer4" Version="2.1.3" />
|
<PackageReference Include="IdentityServer4" Version="2.2.0" />
|
||||||
<PackageReference Include="Shouldly" Version="3.0.0" />
|
<PackageReference Include="Shouldly" Version="3.0.0" />
|
||||||
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
|
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
|
||||||
<PackageReference Include="Consul" Version="0.7.2.4" />
|
<PackageReference Include="Consul" Version="0.7.2.4" />
|
||||||
<PackageReference Include="Rafty" Version="0.4.2" />
|
<PackageReference Include="Rafty" Version="0.4.3" />
|
||||||
<PackageReference Include="Microsoft.Data.SQLite" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Data.SQLite" Version="2.0.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -263,7 +263,7 @@ namespace Ocelot.IntegrationTests
|
|||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
//_output.WriteLine($"{e.Message}, {e.StackTrace}");
|
//_output.WriteLine($"{e.Message}, {e.StackTrace}");
|
||||||
//Console.WriteLine(e);
|
Console.WriteLine(e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,16 +24,16 @@
|
|||||||
<ProjectReference Include="..\..\src\Ocelot\Ocelot.csproj" />
|
<ProjectReference Include="..\..\src\Ocelot\Ocelot.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
|
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.8" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.2" />
|
||||||
<PackageReference Include="Consul" Version="0.7.2.4" />
|
<PackageReference Include="Consul" Version="0.7.2.4" />
|
||||||
<PackageReference Include="Polly" Version="5.8.0" />
|
<PackageReference Include="Polly" Version="6.0.1" />
|
||||||
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
@ -126,14 +126,14 @@ namespace Ocelot.UnitTests.Controllers
|
|||||||
{
|
{
|
||||||
_node
|
_node
|
||||||
.Setup(x => x.Accept(It.IsAny<UpdateFileConfiguration>()))
|
.Setup(x => x.Accept(It.IsAny<UpdateFileConfiguration>()))
|
||||||
.Returns(new Rafty.Concensus.OkResponse<UpdateFileConfiguration>(new UpdateFileConfiguration(new FileConfiguration())));
|
.ReturnsAsync(new Rafty.Concensus.OkResponse<UpdateFileConfiguration>(new UpdateFileConfiguration(new FileConfiguration())));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenTheNodeReturnsError()
|
private void GivenTheNodeReturnsError()
|
||||||
{
|
{
|
||||||
_node
|
_node
|
||||||
.Setup(x => x.Accept(It.IsAny<UpdateFileConfiguration>()))
|
.Setup(x => x.Accept(It.IsAny<UpdateFileConfiguration>()))
|
||||||
.Returns(new Rafty.Concensus.ErrorResponse<UpdateFileConfiguration>("error", new UpdateFileConfiguration(new FileConfiguration())));
|
.ReturnsAsync(new Rafty.Concensus.ErrorResponse<UpdateFileConfiguration>("error", new UpdateFileConfiguration(new FileConfiguration())));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenTheConfigSetterReturns(Response response)
|
private void GivenTheConfigSetterReturns(Response response)
|
||||||
|
@ -29,30 +29,30 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
|
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.8" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.0.2" />
|
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.0.3" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
|
||||||
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
||||||
<PackageReference Include="Microsoft.DotNet.InternalAbstractions" Version="1.0.500-preview2-1-003177" />
|
<PackageReference Include="Microsoft.DotNet.InternalAbstractions" Version="1.0.500-preview2-1-003177" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.2" />
|
||||||
<PackageReference Include="Moq" Version="4.8.2" />
|
<PackageReference Include="Moq" Version="4.8.2" />
|
||||||
<PackageReference Include="Shouldly" Version="3.0.0" />
|
<PackageReference Include="Shouldly" Version="3.0.0" />
|
||||||
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
|
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
|
||||||
<PackageReference Include="xunit" Version="2.3.1" />
|
<PackageReference Include="xunit" Version="2.3.1" />
|
||||||
<PackageReference Include="Butterfly.Client.AspNetCore" Version="0.0.8" />
|
<PackageReference Include="Butterfly.Client.AspNetCore" Version="0.0.8" />
|
||||||
|
<PackageReference Include="Rafty" Version="0.4.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="WebSockets\" />
|
<Folder Include="WebSockets\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user