Skip to content

Commit fcd98f5

Browse files
committed
gh-41 Add DICOMweb export test feature
Signed-off-by: Victor Chang <[email protected]>
1 parent 34eda2b commit fcd98f5

File tree

34 files changed

+1054
-142
lines changed

34 files changed

+1054
-142
lines changed

src/Api/Monai.Deploy.InformaticsGateway.Api.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</PropertyGroup>
1919

2020
<ItemGroup>
21-
<PackageReference Include="GitVersion.MsBuild" Version="5.8.1">
21+
<PackageReference Include="GitVersion.MsBuild" Version="5.8.2">
2222
<PrivateAssets>All</PrivateAssets>
2323
</PackageReference>
2424
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />

src/Api/Test/Monai.Deploy.InformaticsGateway.Api.Test.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
</PropertyGroup>
1919

2020
<ItemGroup>
21-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
21+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
2222
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="13.2.47" />
2323
<PackageReference Include="xunit" Version="2.4.1" />
2424
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
2525
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2626
<PrivateAssets>all</PrivateAssets>
2727
</PackageReference>
28-
<PackageReference Include="coverlet.collector" Version="3.1.0">
28+
<PackageReference Include="coverlet.collector" Version="3.1.2">
2929
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3030
<PrivateAssets>all</PrivateAssets>
3131
</PackageReference>

src/CLI/Monai.Deploy.InformaticsGateway.CLI.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@
4242
<ItemGroup>
4343
<PackageReference Include="Crayon" Version="2.0.64" />
4444
<PackageReference Include="Docker.DotNet" Version="3.125.5" />
45-
<PackageReference Include="GitVersion.MsBuild" Version="5.8.1">
46-
<PrivateAssets>All</PrivateAssets>
47-
</PackageReference>
45+
<PackageReference Include="GitVersion.MsBuild" Version="5.8.2">
46+
<PrivateAssets>All</PrivateAssets>
47+
</PackageReference>
4848
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.0" />
4949
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" />
5050
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="6.0.0" />
@@ -53,4 +53,4 @@
5353
<PackageReference Include="System.CommandLine.Rendering" Version="0.3.0-alpha.21216.1" />
5454
<PackageReference Include="System.IO.Abstractions" Version="13.2.47" />
5555
</ItemGroup>
56-
</Project>
56+
</Project>

src/CLI/Test/Monai.Deploy.InformaticsGateway.CLI.Test.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</ItemGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
15+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
1616
<PackageReference Include="Moq" Version="4.16.1" />
1717
<PackageReference Include="System.CommandLine.Hosting" Version="0.3.0-alpha.21216.1" />
1818
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="13.2.47" />
@@ -21,7 +21,7 @@
2121
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2222
<PrivateAssets>all</PrivateAssets>
2323
</PackageReference>
24-
<PackageReference Include="coverlet.collector" Version="3.1.0">
24+
<PackageReference Include="coverlet.collector" Version="3.1.2">
2525
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2626
<PrivateAssets>all</PrivateAssets>
2727
</PackageReference>

src/Client.Common/Monai.Deploy.InformaticsGateway.Client.Common.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121

2222
<ItemGroup>
2323
<PackageReference Include="Ardalis.GuardClauses" Version="3.3.0" />
24-
<PackageReference Include="GitVersion.MsBuild" Version="5.8.1">
25-
<PrivateAssets>All</PrivateAssets>
26-
</PackageReference>
24+
<PackageReference Include="GitVersion.MsBuild" Version="5.8.2">
25+
<PrivateAssets>All</PrivateAssets>
26+
</PackageReference>
2727
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
2828
</ItemGroup>
2929

@@ -33,4 +33,4 @@
3333
<None Remove="Test\**" />
3434
</ItemGroup>
3535

36-
</Project>
36+
</Project>

src/Client.Common/Test/Monai.Deploy.InformaticsGateway.Client.Common.Test.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!--
1+
<!--
22
// Copyright 2021 MONAI Consortium
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -22,11 +22,11 @@
2222

2323
<ItemGroup>
2424
<PackageReference Include="Ardalis.GuardClauses" Version="3.3.0" />
25-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
25+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
2626
<PackageReference Include="xRetry" Version="1.7.0" />
2727
<PackageReference Include="xunit" Version="2.4.1" />
2828
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" />
29-
<PackageReference Include="coverlet.collector" Version="3.1.0" />
29+
<PackageReference Include="coverlet.collector" Version="3.1.2" />
3030
<PackageReference Include="Moq" Version="4.16.1" />
3131
</ItemGroup>
3232

src/Client/Monai.Deploy.InformaticsGateway.Client.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919

2020
<ItemGroup>
2121
<PackageReference Include="Ardalis.GuardClauses" Version="3.3.0" />
22-
<PackageReference Include="GitVersion.MsBuild" Version="5.8.1">
23-
<PrivateAssets>All</PrivateAssets>
24-
</PackageReference>
22+
<PackageReference Include="GitVersion.MsBuild" Version="5.8.2">
23+
<PrivateAssets>All</PrivateAssets>
24+
</PackageReference>
2525
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />
2626
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
2727
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" />
@@ -38,4 +38,4 @@
3838
<ProjectReference Include="..\Api\Monai.Deploy.InformaticsGateway.Api.csproj" />
3939
<ProjectReference Include="..\Client.Common\Monai.Deploy.InformaticsGateway.Client.Common.csproj" />
4040
</ItemGroup>
41-
</Project>
41+
</Project>

src/Client/Test/Monai.Deploy.InformaticsGateway.Client.Test.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
</ItemGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
15+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
1616
<PackageReference Include="xunit" Version="2.4.1" />
1717
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
1818
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1919
<PrivateAssets>all</PrivateAssets>
2020
</PackageReference>
21-
<PackageReference Include="coverlet.collector" Version="3.1.0">
21+
<PackageReference Include="coverlet.collector" Version="3.1.2">
2222
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2323
<PrivateAssets>all</PrivateAssets>
2424
</PackageReference>

src/Common/Monai.Deploy.InformaticsGateway.Common.csproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010

1111
<ItemGroup>
1212
<PackageReference Include="Ardalis.GuardClauses" Version="3.3.0" />
13-
<PackageReference Include="fo-dicom" Version="5.0.1" />
14-
<PackageReference Include="GitVersion.MsBuild" Version="5.8.1">
15-
<PrivateAssets>All</PrivateAssets>
16-
</PackageReference>
13+
<PackageReference Include="fo-dicom" Version="5.0.2" />
14+
<PackageReference Include="GitVersion.MsBuild" Version="5.8.2">
15+
<PrivateAssets>All</PrivateAssets>
16+
</PackageReference>
1717
<PackageReference Include="System.IO.Abstractions" Version="13.2.47" />
1818
<PackageReference Include="System.Threading.Tasks.Dataflow" Version="6.0.0" />
1919
</ItemGroup>
@@ -24,4 +24,4 @@
2424
<None Remove="Test\**" />
2525
</ItemGroup>
2626

27-
</Project>
27+
</Project>

src/Common/Test/Monai.Deploy.InformaticsGateway.Common.Test.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@
1818
</PropertyGroup>
1919

2020
<ItemGroup>
21-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
21+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
2222
<PackageReference Include="Moq" Version="4.16.1" />
2323
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="13.2.47" />
2424
<PackageReference Include="xunit" Version="2.4.1" />
2525
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
2626
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2727
<PrivateAssets>all</PrivateAssets>
2828
</PackageReference>
29-
<PackageReference Include="coverlet.collector" Version="3.1.0">
29+
<PackageReference Include="coverlet.collector" Version="3.1.2">
3030
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3131
<PrivateAssets>all</PrivateAssets>
3232
</PackageReference>

src/Configuration/Monai.Deploy.InformaticsGateway.Configuration.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
</PropertyGroup>
1919

2020
<ItemGroup>
21-
<PackageReference Include="GitVersion.MsBuild" Version="5.8.1">
22-
<PrivateAssets>All</PrivateAssets>
23-
</PackageReference>
21+
<PackageReference Include="GitVersion.MsBuild" Version="5.8.2">
22+
<PrivateAssets>All</PrivateAssets>
23+
</PackageReference>
2424
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.0" />
2525
<PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
2626
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
@@ -37,4 +37,4 @@
3737
<ProjectReference Include="..\Api\Monai.Deploy.InformaticsGateway.Api.csproj" />
3838
<ProjectReference Include="..\Common\Monai.Deploy.InformaticsGateway.Common.csproj" />
3939
</ItemGroup>
40-
</Project>
40+
</Project>

src/Configuration/Test/Monai.Deploy.InformaticsGateway.Configuration.Test.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@
2222
</ItemGroup>
2323

2424
<ItemGroup>
25-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
25+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
2626
<PackageReference Include="Moq" Version="4.16.1" />
2727
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="13.2.47" />
2828
<PackageReference Include="xunit" Version="2.4.1" />
2929
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
3030
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3131
<PrivateAssets>all</PrivateAssets>
3232
</PackageReference>
33-
<PackageReference Include="coverlet.collector" Version="3.1.0">
33+
<PackageReference Include="coverlet.collector" Version="3.1.2">
3434
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3535
<PrivateAssets>all</PrivateAssets>
3636
</PackageReference>

src/Database/Monai.Deploy.InformaticsGateway.Database.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@
2929
</ItemGroup>
3030

3131
<ItemGroup>
32-
<PackageReference Include="GitVersion.MsBuild" Version="5.8.1">
33-
<PrivateAssets>All</PrivateAssets>
34-
</PackageReference>
32+
<PackageReference Include="GitVersion.MsBuild" Version="5.8.2">
33+
<PrivateAssets>All</PrivateAssets>
34+
</PackageReference>
3535
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.1" />
3636
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.1">
3737
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -43,4 +43,4 @@
4343
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
4444
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
4545
</ItemGroup>
46-
</Project>
46+
</Project>

src/DicomWebClient/Monai.Deploy.InformaticsGateway.DicomWeb.Client.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ limitations under the License.
3535
<ItemGroup>
3636
<PackageReference Include="Ardalis.GuardClauses" Version="3.3.0" />
3737
<PackageReference Include="fo-dicom" Version="5.0.1" />
38-
<PackageReference Include="GitVersion.MsBuild" Version="5.8.1">
38+
<PackageReference Include="GitVersion.MsBuild" Version="5.8.2">
3939
<PrivateAssets>All</PrivateAssets>
4040
</PackageReference>
4141
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />

src/DicomWebClient/Test/Monai.Deploy.InformaticsGateway.DicomWeb.Client.Test.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!--
1+
<!--
22
// Copyright 2021 MONAI Consortium
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@
2222

2323
<ItemGroup>
2424
<PackageReference Include="Ardalis.GuardClauses" Version="3.3.0" />
25-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
25+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
2626
<PackageReference Include="xRetry" Version="1.7.0" />
2727
<PackageReference Include="xunit" Version="2.4.1" />
2828
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" />

src/InformaticsGateway/Monai.Deploy.InformaticsGateway.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<PackageReference Include="DotNext.Threading" Version="4.1.3" />
2828
<PackageReference Include="fo-dicom" Version="5.0.2" />
2929
<PackageReference Include="Karambolo.Extensions.Logging.File" Version="3.2.1" />
30-
<PackageReference Include="GitVersion.MsBuild" Version="5.8.1">
30+
<PackageReference Include="GitVersion.MsBuild" Version="5.8.2">
3131
<PrivateAssets>All</PrivateAssets>
3232
</PackageReference>
3333
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.1" />

src/InformaticsGateway/Test/Common/DicomToolkitTest.cs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -169,33 +169,30 @@ public async Task Save_ValidFileWithoutOtherValueTypes()
169169
[Fact(DisplayName = "Save - a valid DICOM file with complete JSON")]
170170
public async Task Save_ValidFileWithJson()
171171
{
172+
ushort rows = 10, columns = 10;
172173
var filename = Path.GetTempFileName();
173174
var jsonFilename = $"{filename}.json";
174175
var dicomFile = new DicomFile();
175176
var expectedSop = DicomUIDGenerator.GenerateDerivedFromUUID();
176-
dicomFile.Dataset.Add(DicomTag.SOPInstanceUID, expectedSop);
177-
dicomFile.Dataset.AddOrUpdate(DicomTag.PhotometricInterpretation, PhotometricInterpretation.Rgb.Value);
178-
dicomFile.Dataset.AddOrUpdate(DicomTag.Rows, (ushort)1);
179-
dicomFile.Dataset.AddOrUpdate(DicomTag.Columns, (ushort)1);
180-
dicomFile.Dataset.AddOrUpdate(DicomTag.BitsAllocated, (ushort)8);
177+
dicomFile.Dataset.Add(DicomTag.SOPInstanceUID, expectedSop)
178+
.AddOrUpdate(DicomTag.PhotometricInterpretation, PhotometricInterpretation.Monochrome2.Value)
179+
.AddOrUpdate<ushort>(DicomTag.Rows, rows)
180+
.AddOrUpdate<ushort>(DicomTag.Columns, columns)
181+
.AddOrUpdate<ushort>(DicomTag.BitsAllocated, 8)
182+
.AddOrUpdate<ushort>(DicomTag.BitsStored, 8)
183+
.AddOrUpdate<ushort>(DicomTag.HighBit, 7)
184+
.AddOrUpdate(DicomTag.PixelRepresentation, (ushort)PixelRepresentation.Unsigned)
185+
.AddOrUpdate(DicomTag.PlanarConfiguration, (ushort)PlanarConfiguration.Interleaved)
186+
.AddOrUpdate<ushort>(DicomTag.SamplesPerPixel, 1);
181187
dicomFile.FileMetaInfo.TransferSyntax = DicomTransferSyntax.ExplicitVRLittleEndian;
182188
dicomFile.FileMetaInfo.MediaStorageSOPInstanceUID = DicomUIDGenerator.GenerateDerivedFromUUID();
183189
dicomFile.FileMetaInfo.MediaStorageSOPClassUID = DicomUIDGenerator.GenerateDerivedFromUUID();
184190

191+
var pixelData = DicomPixelData.Create(dicomFile.Dataset, true);
185192
var random = new Random();
186-
var pixels = new byte[3];
193+
var pixels = new byte[rows * columns];
187194
random.NextBytes(pixels);
188195
var buffer = new MemoryByteBuffer(pixels);
189-
190-
var pixelData = DicomPixelData.Create(dicomFile.Dataset, true);
191-
pixelData.BitsStored = 8;
192-
pixelData.SamplesPerPixel = 3;
193-
pixelData.HighBit = 7;
194-
pixelData.PhotometricInterpretation = PhotometricInterpretation.Rgb;
195-
pixelData.PixelRepresentation = 0;
196-
pixelData.PlanarConfiguration = 0;
197-
pixelData.Height = (ushort)1;
198-
pixelData.Width = (ushort)1;
199196
pixelData.AddFrame(buffer);
200197

201198
var dicomToolkit = new DicomToolkit(_fileSystem);

src/InformaticsGateway/Test/Monai.Deploy.InformaticsGateway.Test.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
<ItemGroup>
2626
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="6.0.1" />
27-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
27+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
2828
<PackageReference Include="Moq" Version="4.16.1" />
2929
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="13.2.47" />
3030
<PackageReference Include="xRetry" Version="1.7.0" />
@@ -33,7 +33,7 @@
3333
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3434
<PrivateAssets>all</PrivateAssets>
3535
</PackageReference>
36-
<PackageReference Include="coverlet.collector" Version="3.1.0">
36+
<PackageReference Include="coverlet.collector" Version="3.1.2">
3737
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3838
<PrivateAssets>all</PrivateAssets>
3939
</PackageReference>

tests/Integration.Test/Common/Extensions.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,27 @@ public static async Task<bool> WaitUntil(Func<bool> condition, TimeSpan timeout,
3434

3535
return waitTask == await Task.WhenAny(waitTask, Task.Delay(timeout));
3636
}
37+
38+
public static async Task<T> WaitUntilDataIsReady<T>(Func<Task<T>> action, Func<T, bool> condition, TimeSpan timeout, int frequency = 250)
39+
{
40+
var waitTask = Task.Run(async () =>
41+
{
42+
T result;
43+
do
44+
{
45+
result = await action();
46+
} while (!condition(result));
47+
return result;
48+
});
49+
50+
if (waitTask == await Task.WhenAny(waitTask, Task.Delay(timeout)))
51+
{
52+
return waitTask.Result;
53+
}
54+
else
55+
{
56+
return default(T);
57+
}
58+
}
3759
}
3860
}

0 commit comments

Comments
 (0)