Browse Source

Test fix. (#840)

pull/841/head
Sebastian Stehle 4 years ago
committed by GitHub
parent
commit
1bd81b9002
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
  2. 18
      backend/src/Squidex/Squidex.csproj
  3. 2
      backend/tests/docker-compose.yml
  4. 232
      backend/tools/TestSuite/TestSuite.ApiTests/AssetTests.cs
  5. 2
      backend/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj
  6. 2
      backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj

2
backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj

@ -31,7 +31,7 @@
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="OpenTelemetry.Api" Version="1.1.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.Assets" Version="2.15.0" />
<PackageReference Include="Squidex.Assets" Version="2.17.0" />
<PackageReference Include="Squidex.Caching" Version="1.9.0" />
<PackageReference Include="Squidex.Hosting.Abstractions" Version="2.13.0" />
<PackageReference Include="Squidex.Log" Version="1.6.0" />

18
backend/src/Squidex/Squidex.csproj

@ -74,16 +74,16 @@
<PackageReference Include="OrleansDashboard.EmbeddedAssets" Version="3.6.1" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="ReportGenerator" Version="5.0.3" PrivateAssets="all" />
<PackageReference Include="Squidex.Assets.Azure" Version="2.15.0" />
<PackageReference Include="Squidex.Assets.GoogleCloud" Version="2.15.0" />
<PackageReference Include="Squidex.Assets.FTP" Version="2.15.0" />
<PackageReference Include="Squidex.Assets.ImageMagick" Version="2.15.0" />
<PackageReference Include="Squidex.Assets.ImageSharp" Version="2.15.0" />
<PackageReference Include="Squidex.Assets.Mongo" Version="2.15.0" />
<PackageReference Include="Squidex.Assets.S3" Version="2.15.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="2.15.0" />
<PackageReference Include="Squidex.Assets.Azure" Version="2.17.0" />
<PackageReference Include="Squidex.Assets.GoogleCloud" Version="2.17.0" />
<PackageReference Include="Squidex.Assets.FTP" Version="2.17.0" />
<PackageReference Include="Squidex.Assets.ImageMagick" Version="2.17.0" />
<PackageReference Include="Squidex.Assets.ImageSharp" Version="2.17.0" />
<PackageReference Include="Squidex.Assets.Mongo" Version="2.17.0" />
<PackageReference Include="Squidex.Assets.S3" Version="2.17.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="2.17.0" />
<PackageReference Include="Squidex.Caching.Orleans" Version="1.9.0" />
<PackageReference Include="Squidex.ClientLibrary" Version="8.5.0" />
<PackageReference Include="Squidex.ClientLibrary" Version="8.6.0" />
<PackageReference Include="Squidex.Hosting" Version="2.13.0" />
<PackageReference Include="Squidex.OpenIddict.MongoDb" Version="4.0.1-dev" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />

2
backend/tests/docker-compose.yml

@ -3,7 +3,7 @@ services:
mongo:
image: mongo:latest
ports:
- "27017:27017"
- "27018:27017"
networks:
- internal

232
backend/tools/TestSuite/TestSuite.ApiTests/AssetTests.cs

@ -91,82 +91,80 @@ namespace TestSuite.ApiTests
[Fact]
public async Task Should_upload_asset_using_tus_in_chunks()
{
// STEP 1: Create asset
var fileParameter = FileParameter.FromPath("Assets/SampleVideo_1280x720_1mb.mp4");
for (var i = 0; i < 5; i++)
{
// STEP 1: Create asset
var fileParameter = FileParameter.FromPath("Assets/SampleVideo_1280x720_1mb.mp4");
var pausingStream = new PauseStream(fileParameter.Data, 0.25);
var pausingFile = new FileParameter(pausingStream, fileParameter.FileName, fileParameter.ContentType);
var pausingStream = new PauseStream(fileParameter.Data, 0.5);
var pausingFile = new FileParameter(pausingStream, fileParameter.FileName, fileParameter.ContentType);
var numUploads = 0;
var reportedException = (Exception)null;
var reportedProgress = new List<int>();
var reportedAsset = (AssetDto)null;
var fileId = (string)null;
await using (pausingFile.Data)
{
using var cts = new CancellationTokenSource(5000);
var numUploads = 0;
var reportedException = (Exception)null;
var reportedProgress = new List<int>();
var reportedAsset = (AssetDto)null;
var fileId = (string)null;
while (reportedAsset == null)
await using (pausingFile.Data)
{
pausingStream.Reset();
using var cts = new CancellationTokenSource(5000);
if (pausingStream.Position == pausingStream.Length)
while (reportedAsset == null)
{
throw new InvalidOperationException("Stream end reached.");
}
pausingStream.Reset();
await _.Assets.UploadNewAssetAsync(_.AppName, pausingFile, new AssetUploadOptions
{
ProgressHandler = new AssetDelegatingProgressHandler
await _.Assets.UploadNewAssetAsync(_.AppName, pausingFile, new AssetUploadOptions
{
OnCreatedAsync = (@event, _) =>
{
fileId = @event.FileId;
return Task.CompletedTask;
},
OnProgressAsync = (@event, _) =>
{
reportedProgress.Add(@event.Progress);
return Task.CompletedTask;
},
OnCompletedAsync = (@event, _) =>
ProgressHandler = new AssetDelegatingProgressHandler
{
reportedAsset = @event.Asset;
return Task.CompletedTask;
},
OnFailedAsync = (@event, _) =>
{
if (!@event.Exception.ToString().Contains("PAUSED", StringComparison.OrdinalIgnoreCase))
OnCreatedAsync = (@event, _) =>
{
reportedException = @event.Exception;
}
fileId = @event.FileId;
return Task.CompletedTask;
},
OnProgressAsync = (@event, _) =>
{
reportedProgress.Add(@event.Progress);
return Task.CompletedTask;
},
OnCompletedAsync = (@event, _) =>
{
reportedAsset = @event.Asset;
return Task.CompletedTask;
},
OnFailedAsync = (@event, _) =>
{
if (!@event.Exception.ToString().Contains("PAUSED", StringComparison.OrdinalIgnoreCase))
{
reportedException = @event.Exception;
}
return Task.CompletedTask;
}
},
FileId = fileId
}, cts.Token);
return Task.CompletedTask;
}
},
FileId = fileId
}, cts.Token);
Assert.Null(reportedException);
Assert.Null(reportedException);
await Task.Delay(50, cts.Token);
await Task.Delay(50, cts.Token);
numUploads++;
numUploads++;
}
}
}
Assert.NotEmpty(reportedProgress);
Assert.NotNull(reportedAsset);
Assert.Null(reportedException);
Assert.True(numUploads > 1);
Assert.NotEmpty(reportedProgress);
Assert.NotNull(reportedAsset);
Assert.Null(reportedException);
Assert.True(numUploads > 1);
await using (var stream = new FileStream("Assets/SampleVideo_1280x720_1mb.mp4", FileMode.Open))
{
var downloaded = await _.DownloadAsync(reportedAsset);
await using (var stream = new FileStream("Assets/SampleVideo_1280x720_1mb.mp4", FileMode.Open))
{
var downloaded = await _.DownloadAsync(reportedAsset);
// Should dowload with correct size.
Assert.Equal(stream.Length, downloaded.Length);
// Should dowload with correct size.
Assert.Equal(stream.Length, downloaded.Length);
}
}
}
@ -283,86 +281,84 @@ namespace TestSuite.ApiTests
[Fact]
public async Task Should_replace_asset_using_tus_in_chunks()
{
// STEP 1: Create asset
var asset_1 = await _.UploadFileAsync("Assets/logo-squared.png", "image/png");
for (var i = 0; i < 5; i++)
{
// STEP 1: Create asset
var asset_1 = await _.UploadFileAsync("Assets/logo-squared.png", "image/png");
// STEP 2: Reupload asset
var fileParameter = FileParameter.FromPath("Assets/SampleVideo_1280x720_1mb.mp4");
// STEP 2: Reupload asset
var fileParameter = FileParameter.FromPath("Assets/SampleVideo_1280x720_1mb.mp4");
var pausingStream = new PauseStream(fileParameter.Data, 0.25);
var pausingFile = new FileParameter(pausingStream, fileParameter.FileName, fileParameter.ContentType);
var pausingStream = new PauseStream(fileParameter.Data, 0.5);
var pausingFile = new FileParameter(pausingStream, fileParameter.FileName, fileParameter.ContentType);
var numUploads = 0;
var reportedException = (Exception)null;
var reportedProgress = new List<int>();
var reportedAsset = (AssetDto)null;
var fileId = (string)null;
await using (pausingFile.Data)
{
using var cts = new CancellationTokenSource(5000);
var numUploads = 0;
var reportedException = (Exception)null;
var reportedProgress = new List<int>();
var reportedAsset = (AssetDto)null;
var fileId = (string)null;
while (reportedAsset == null)
await using (pausingFile.Data)
{
pausingStream.Reset();
using var cts = new CancellationTokenSource(5000);
if (pausingStream.Position == pausingStream.Length)
while (reportedAsset == null)
{
throw new InvalidOperationException("Stream end reached.");
}
pausingStream.Reset();
await _.Assets.UploadExistingAssetAsync(_.AppName, asset_1.Id, pausingFile, new AssetUploadOptions
{
ProgressHandler = new AssetDelegatingProgressHandler
await _.Assets.UploadExistingAssetAsync(_.AppName, asset_1.Id, pausingFile, new AssetUploadOptions
{
OnCreatedAsync = (@event, _) =>
ProgressHandler = new AssetDelegatingProgressHandler
{
fileId = @event.FileId;
return Task.CompletedTask;
},
OnProgressAsync = (@event, _) =>
{
reportedProgress.Add(@event.Progress);
return Task.CompletedTask;
},
OnCompletedAsync = (@event, _) =>
{
reportedAsset = @event.Asset;
return Task.CompletedTask;
},
OnFailedAsync = (@event, _) =>
{
if (!@event.Exception.ToString().Contains("PAUSED", StringComparison.OrdinalIgnoreCase))
OnCreatedAsync = (@event, _) =>
{
reportedException = @event.Exception;
}
fileId = @event.FileId;
return Task.CompletedTask;
},
OnProgressAsync = (@event, _) =>
{
reportedProgress.Add(@event.Progress);
return Task.CompletedTask;
},
OnCompletedAsync = (@event, _) =>
{
reportedAsset = @event.Asset;
return Task.CompletedTask;
},
OnFailedAsync = (@event, _) =>
{
if (!@event.Exception.ToString().Contains("PAUSED", StringComparison.OrdinalIgnoreCase))
{
reportedException = @event.Exception;
}
return Task.CompletedTask;
}
},
FileId = fileId
}, cts.Token);
return Task.CompletedTask;
}
},
FileId = fileId
}, cts.Token);
Assert.Null(reportedException);
Assert.Null(reportedException);
await Task.Delay(50, cts.Token);
await Task.Delay(50, cts.Token);
numUploads++;
numUploads++;
}
}
}
Assert.NotEmpty(reportedProgress);
Assert.NotNull(reportedAsset);
Assert.Null(reportedException);
Assert.True(numUploads > 1);
Assert.NotEmpty(reportedProgress);
Assert.NotNull(reportedAsset);
Assert.Null(reportedException);
Assert.True(numUploads > 1);
await using (var stream = new FileStream("Assets/SampleVideo_1280x720_1mb.mp4", FileMode.Open))
{
var downloaded = await _.DownloadAsync(reportedAsset);
await using (var stream = new FileStream("Assets/SampleVideo_1280x720_1mb.mp4", FileMode.Open))
{
var downloaded = await _.DownloadAsync(reportedAsset);
// Should dowload with correct size.
Assert.Equal(stream.Length, downloaded.Length);
// Should dowload with correct size.
Assert.Equal(stream.Length, downloaded.Length);
}
}
}

2
backend/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj

@ -20,7 +20,7 @@
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
<PackageReference Include="NSwag.Core" Version="13.15.7" />
<PackageReference Include="Squidex.Assets" Version="2.15.0" />
<PackageReference Include="Squidex.Assets" Version="2.17.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">

2
backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj

@ -21,7 +21,7 @@
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.ClientLibrary" Version="8.5.0" />
<PackageReference Include="Squidex.ClientLibrary" Version="8.6.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="xunit" Version="2.4.1" />
</ItemGroup>

Loading…
Cancel
Save