diff --git a/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj b/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj index 91803ab9d..82878f303 100644 --- a/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj +++ b/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj @@ -14,8 +14,8 @@ - - + + diff --git a/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj b/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj index 81c348fd3..60be0d9a3 100644 --- a/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj +++ b/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/src/Squidex/Config/Orleans/ClientWrapper.cs b/src/Squidex/Config/Orleans/ClientWrapper.cs index 03b60afb8..c5c36c04c 100644 --- a/src/Squidex/Config/Orleans/ClientWrapper.cs +++ b/src/Squidex/Config/Orleans/ClientWrapper.cs @@ -6,10 +6,8 @@ // ========================================================================== using System; -using System.Net; using Orleans; using Orleans.Configuration; -using Orleans.Runtime; using Squidex.Config.Domain; using Squidex.Domain.Apps.Entities; using Squidex.Infrastructure; diff --git a/src/Squidex/Pipeline/ApiCostsFilter.cs b/src/Squidex/Pipeline/ApiCostsFilter.cs index 1f9797b2c..7dc84d3a5 100644 --- a/src/Squidex/Pipeline/ApiCostsFilter.cs +++ b/src/Squidex/Pipeline/ApiCostsFilter.cs @@ -6,7 +6,6 @@ // ========================================================================== using System; -using System.Diagnostics; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; diff --git a/src/Squidex/Pipeline/RequestLogPerformanceMiddleware.cs b/src/Squidex/Pipeline/RequestLogPerformanceMiddleware.cs index 19e706467..428e82614 100644 --- a/src/Squidex/Pipeline/RequestLogPerformanceMiddleware.cs +++ b/src/Squidex/Pipeline/RequestLogPerformanceMiddleware.cs @@ -5,6 +5,8 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System.Diagnostics; +using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Squidex.Infrastructure; @@ -14,6 +16,7 @@ namespace Squidex.Pipeline { public sealed class RequestLogPerformanceMiddleware : IMiddleware { + private const int LongOperationsMs = 1000; private readonly ISemanticLog log; public RequestLogPerformanceMiddleware(ISemanticLog log) diff --git a/src/Squidex/Squidex.csproj b/src/Squidex/Squidex.csproj index edfa2e5f2..692b20555 100644 --- a/src/Squidex/Squidex.csproj +++ b/src/Squidex/Squidex.csproj @@ -3,7 +3,7 @@ true true - $(NoWarn);CS1591;1591;1573;1572 + $(NoWarn);CS1591;1591;1573;1572;NU1605 Squidex true netcoreapp2.0 @@ -76,7 +76,9 @@ - + + + @@ -112,5 +114,4 @@ - \ No newline at end of file diff --git a/tests/Squidex.Infrastructure.Tests/Orleans/JsonExternalSerializerTests.cs b/tests/Squidex.Infrastructure.Tests/Orleans/JsonExternalSerializerTests.cs index 526d3ffc9..9fa017328 100644 --- a/tests/Squidex.Infrastructure.Tests/Orleans/JsonExternalSerializerTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Orleans/JsonExternalSerializerTests.cs @@ -47,24 +47,33 @@ namespace Squidex.Infrastructure.Orleans [Fact] public void Should_serialize_and_deserialize_value() { - var value = new J>(new List { 1, 2, 3 }); + SerializeAndDeserialize(ArrayOfLength(100), Assert.Equal); + } + + [Fact] + public void Should_serialize_and_deserialize_large_value() + { + SerializeAndDeserialize(ArrayOfLength(8000), Assert.Equal); + } + private void SerializeAndDeserialize(T value, Action equals) where T : class + { var buffer = new MemoryStream(); - var writer = A.Fake(); - var writerContext = new SerializationContext(null) { StreamWriter = writer }; + J.Serialize(J.Of(value), CreateWriter(buffer), typeof(T)); - A.CallTo(() => writer.Write(A.Ignored, A.Ignored, A.Ignored)) - .Invokes(new Action(buffer.Write)); - A.CallTo(() => writer.CurrentOffset) - .ReturnsLazily(x => (int)buffer.Position); + buffer.Position = 0; - J.Serialize(value, writerContext, value.GetType()); + var copy = (J)J.Deserialize(typeof(J), CreateReader(buffer)); - buffer.Position = 0; + equals(copy.Value, value); + + Assert.NotSame(value, copy.Value); + } + private static DeserializationContext CreateReader(MemoryStream buffer) + { var reader = A.Fake(); - var readerContext = new DeserializationContext(null) { StreamReader = reader }; A.CallTo(() => reader.ReadByteArray(A.Ignored, A.Ignored, A.Ignored)) .Invokes(new Action((b, o, l) => buffer.Read(b, o, l))); @@ -73,10 +82,31 @@ namespace Squidex.Infrastructure.Orleans A.CallTo(() => reader.Length) .ReturnsLazily(x => (int)buffer.Length); - var copy = (J>)J.Deserialize(value.GetType(), readerContext); + return new DeserializationContext(null) { StreamReader = reader }; + } + + private static SerializationContext CreateWriter(MemoryStream buffer) + { + var writer = A.Fake(); + + A.CallTo(() => writer.Write(A.Ignored, A.Ignored, A.Ignored)) + .Invokes(new Action(buffer.Write)); + A.CallTo(() => writer.CurrentOffset) + .ReturnsLazily(x => (int)buffer.Position); + + return new SerializationContext(null) { StreamWriter = writer }; + } + + private List ArrayOfLength(int length) + { + var result = new List(); + + for (var i = 0; i < length; i++) + { + result.Add(i); + } - Assert.Equal(value.Value, copy.Value); - Assert.NotSame(value.Value, copy.Value); + return result; } } } diff --git a/tests/Squidex.Tests/Squidex.Tests.csproj b/tests/Squidex.Tests/Squidex.Tests.csproj index 919c8f89a..2c6b14f49 100644 --- a/tests/Squidex.Tests/Squidex.Tests.csproj +++ b/tests/Squidex.Tests/Squidex.Tests.csproj @@ -3,6 +3,7 @@ Exe netcoreapp2.0 Squidex + $(NoWarn);NU1605