Release test report

Before release, every feature of DicomKit 1.0.0 is tested with every license type: no key, a free Developer key, Pro, Enterprise, an expired license and a revoked license. Each cell shows what should happen and what did.

Build
DicomKit 1.0.0
DicomKit 1.0.0 release candidate (b804fb7)
Test cases
54
258 runs
Passed
258
failed 0 ยท skipped 0
Run
2026-10-26
complete

Tested on Microsoft Windows 11 Pro 10.0.26200 build 26200, .NET 3.1.32 / 8.0.3 / 8.0.29 / 9.0.18 / 10.0.12, Visual Studio Community 2026 18.10.3 (18.10.12224.181).

Run 2ce13edc-f525-4ffb-ae07-648e5221cef9, source commit b804fb7: 780 automated tests, 768 passed, 0 failed, 12 skipped. Open a test for its steps, the evidence it recorded and the exact packages tested.

Each cell names what should happen with that license; a green tick means it did, on .NET 8, 9 and 10. Hover a cell for details.

  • Works works
  • Refused refused, naming the required tier (basics keep working)
  • Asks for key stops and asks for a license key
  • – not applicable

Functional tests

Every feature, run with each license type on .NET 8, 9 and 10.

Licensing

Test No key Developer Pro Enterprise Expired Revoked
LIC-01 Online activation with a key –Not applicable Works Pass Works Pass Works Pass Refused Pass Refused Pass
LIC-02 No key: clear error Asks for key Pass –Not applicable –Not applicable –Not applicable –Not applicable –Not applicable
LIC-03 Key from DICOMKIT_LICENSE_KEY –Not applicable Works Pass Works Pass Works Pass –Not applicable –Not applicable
LIC-05 AddDicomKit in a hosted app –Not applicable –Not applicable Works Pass Works Pass –Not applicable –Not applicable
LIC-06 License file from the Activator –Not applicable Works Pass Works Pass –Not applicable –Not applicable –Not applicable
LIC-07 DICOMKIT_LICENSE_FILE –Not applicable –Not applicable Works Pass –Not applicable –Not applicable –Not applicable
LIC-08 Offline activation –Not applicable –Not applicable Works Pass Works Pass –Not applicable –Not applicable
LIC-09 Works offline after activation –Not applicable Works Pass Works Pass Works Pass –Not applicable –Not applicable
LIC-10 Expired paid license falls back –Not applicable –Not applicable –Not applicable –Not applicable Works Pass –Not applicable
LIC-11 Revoked license falls back –Not applicable –Not applicable –Not applicable –Not applicable –Not applicable Works Pass
LIC-12 Developer key –Not applicable Works Pass –Not applicable –Not applicable –Not applicable –Not applicable

Files and data sets

Test No key Developer Pro Enterprise Expired Revoked
FILE-01 Read a DICOM file Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
FILE-02 Write and read back Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
FILE-03 Malformed file tolerance Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
FILE-04 Large file, bounded memory Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
FILE-05 Anonymize Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
FILE-06 Batch processing Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
FILE-07 Mapping and audit log Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
FILE-08 Convert PDF to DICOM and back Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
FILE-09 Convert JPEG and PNG to DICOM Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass

Networking (DIMSE)

Test No key Developer Pro Enterprise Expired Revoked
NET-01 C-ECHO SCU and SCP Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
NET-02 C-STORE SCU and SCP Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
NET-03 C-FIND SCU (Patient and Study Root) Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
NET-04 C-FIND SCP query handler Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
NET-05 Modality Worklist SCU Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
NET-06 Modality Worklist SCP Asks for key Pass Works Pass Works Pass Works Pass Refused Pass Refused Pass
NET-07 C-MOVE and C-GET SCU Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
NET-08 C-MOVE and C-GET SCP Asks for key Pass Works Pass Works Pass Works Pass Refused Pass Refused Pass
NET-09 More than 2 concurrent associations Asks for key Pass Works Pass Works Pass Works Pass Refused Pass Refused Pass

Imaging and codecs

Test No key Developer Pro Enterprise Expired Revoked
IMG-01 Render to PNG and JPEG Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
IMG-02 Decode RLE Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
IMG-03 Decode JPEG baseline and lossless Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
IMG-04 Decode JPEG-LS Asks for key Pass Works Pass Works Pass Works Pass Refused Pass Refused Pass
IMG-05 Decode JPEG 2000 Asks for key Pass Works Pass Works Pass Works Pass Refused Pass Refused Pass
IMG-06 Thumbnails and multi-frame Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass

DICOMweb

Test No key Developer Pro Enterprise Expired Revoked
WEB-01 DICOMweb client (QIDO, WADO, STOW) Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
WEB-02 DICOMweb server endpoints Asks for key Pass Works Pass Refused Pass Works Pass Refused Pass Refused Pass
WEB-03 Rendered images and thumbnails Asks for key Pass Works Pass Refused Pass Works Pass Refused Pass Refused Pass
WEB-04 Server decompression Asks for key Pass Works Pass Refused Pass Works Pass Refused Pass Refused Pass
WEB-05 QIDO sequence matching Asks for key Pass Works Pass Refused Pass Works Pass Refused Pass Refused Pass
WEB-06 STOW-RS with JSON metadata Asks for key Pass Works Pass Refused Pass Works Pass Refused Pass Refused Pass
WEB-07 UPS-RS worklist Asks for key Pass Works Pass Refused Pass Works Pass Refused Pass Refused Pass
WEB-08 Capabilities (OPTIONS) Asks for key Pass Works Pass Refused Pass Works Pass Refused Pass Refused Pass
WEB-09 Server without an Enterprise license –Not applicable –Not applicable Works Pass –Not applicable Works Pass Works Pass

Command-line tool

Test No key Developer Pro Enterprise Expired Revoked
CLI-01 dicomkit --version and --help Works Pass Works Pass Works Pass Works Pass Works Pass Works Pass
CLI-02 dicomkit echo, store, find Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
CLI-03 dicomkit move, worklist Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
CLI-04 dicomkit anonymize, dump Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass
CLI-05 No key: exit code 10 Works Pass –Not applicable –Not applicable –Not applicable –Not applicable –Not applicable

License Activator

Test No key Developer Pro Enterprise Expired Revoked
ACT-01 Window: machine id and activation –Not applicable Works Pass Works Pass Works Pass –Not applicable Refused Pass
ACT-02 Command line: status, print-env, remove –Not applicable –Not applicable Works Pass –Not applicable –Not applicable –Not applicable
ACT-03 Offline request and import –Not applicable –Not applicable Works Pass –Not applicable –Not applicable –Not applicable

Samples

Test No key Developer Pro Enterprise Expired Revoked
SMP-01 All seven samples build and run Asks for key Pass Works Pass Works Pass Works Pass –Not applicable –Not applicable

Security testing

Hostile and crafted input: what DicomKit does with files built to attack the systems that handle them.

Security

Test No key Developer Pro Enterprise Expired Revoked
SEC-01 Executable in the preamble is never passed on Asks for key Pass Works Pass Works Pass Works Pass Works Pass Works Pass

Load testing

DicomKit 1.0.0 under sustained load: storage, query and retrieve, DICOMweb, 1 GB images, a one-hour soak and the cost of the license check. Client and server ran on one PC over the loopback network, so the numbers show what DicomKit sustains on that hardware, not network limits.

On one 24-core PC DicomKit 1.0.0 received 40,000 images of mixed modalities without a single error (every image accounted for, sampled pixel checksums equal), answered up to about 7,223 C-FIND queries per second, retrieved studies by C-MOVE and C-GET at up to 32 at a time without errors, and served DICOMweb requests at up to 64 clients without errors. 1 GiB images were sent, stored, uploaded by STOW-RS with default options and read back intact; in the 1 GiB C-STORE steps memory stayed below 264 MB per process. A 90-minute soak with 6,844,887 operations had no errors and no memory growth; the server's OS handle count moves with thread-pool worker turnover in the .NET runtime, not with DicomKit objects. License checks cost about 3.2 ns per call.

Scenario Best throughput p95 latency Errors Result
LOAD-01 C-STORE throughput
All 40,000 images arrived and passed the checks. Throughput rose from 156 MB/s on one association to about 673-702 MB/s at 16-64 associations; at 64 associations the PC's CPU averaged only 52 %, while the slowest images (17 MB DX, 32 MB XA) waited up to 2.1 s, so that step was not limited by CPU; the server was also writing about 8 GB of files per step (its share was not measured separately).
702 MB/s
64 associations
106 ms 0 Pass
LOAD-02 C-FIND, C-MOVE and C-GET
No errors in any step, including C-MOVE at 16 and 32 studies at a time (about 2,894 new associations to the destination). C-FIND peaked at about 7,223 queries/s, C-MOVE at 1,145 MB/s and C-GET at 9,229 MB/s; the 32-study C-MOVE and C-GET steps were limited by the PC's CPU.
9,229 MB/s
C-GET, 32 studies at a time
48.9 ms 0 Pass
LOAD-03 DICOMweb (QIDO-RS, WADO-RS, STOW-RS)
No errors at any step; most steps at 32-64 clients were limited by the PC's CPU. The FileSystemDicomWebStore that ships as a reference store keeps every instance's metadata in memory: after 96,772 instances the server held 3,003 MB of managed memory (about 32 KB per instance), so a large archive needs its own IDicomWebStore.
266 MB/s
STOW-RS, 32 clients
18.4 ms 0 Pass
LOAD-04 Large files (1 GiB images)
All large images arrived intact and memory stayed bounded with default settings: at most 174 MB working set in the sender and 264 MB in the receiver while 8 GiB were in flight. One association moved a 1 GiB image in about 4.9 s (208 MB/s); STOW-RS stored it with default options in 2.7 s and WADO-RS read it back at 444 MB/s.
500 MB/s
C-STORE 1 GiB, 4 in parallel
8,196 ms 0 Pass
LOAD-05 Mixed load: 1 GiB images during normal traffic
Nothing failed, but the small images slowed down while 1 GiB images were moving: throughput fell from 2,440 to 1,231 images/s, p99 latency rose from 13.94 ms to 38.56 ms and the slowest image took 2.9 s.
762 MB/s
small images alone
10.6 ms 0 Pass
LOAD-06 Soak test (90 minutes)
No memory growth: over the last 30 minutes the server working set changed by 8.12 MB/h and the client by 9.41 MB/h, and there were no errors. The server's OS handle count kept rising slowly (807 at the start, 1,458 after 90 minutes, 151 per hour over the last 30 minutes) and a full garbage collection did not lower it; a handle census showed the growth is in Event handles (+471 in 12 minutes with the full mix, +102 with DicomServer alone and no web server). It is not caused by opening associations (6,000 short associations left the count flat), and it is not a DicomKit leak: two heap dumps of a 40-minute DICOM-only soak, 30 minutes apart, show every DicomKit and socket object count unchanged, while the extra Event and Thread handles match thread-pool worker threads that had exited and were waiting for the .NET runtime's periodic dead-thread cleanup (+17 dead workers, +19 thread handles, +46 event handles); by the end of that run the count had come back down.
371 ops/s
C-FIND over 90 min
2.85 ms 0 Pass
LOAD-07 License-check overhead
EnsureLicensed takes about 3.2 ns per call; even for the cheapest guarded operation (opening a 9 KB file in memory, about 5.0 us) that is under 0.1 %.
0 Pass

Soak: 90 minutes at 16 concurrent clients, 6,844,887 operations, 0 errors; memory 580 MB at the start, 786 MB at the end.

Test PC: Intel(R) Core(TM) i9-14900K, 24 cores / 32 threads, 64 GB RAM, NVMe SSD, Microsoft Windows 11 Pro build 26200.9711, .NET 10.0.12 (one PC, client and server on loopback). Enterprise license. Run a20bedea-bacd-468b-af8d-945829c4b81f, source commit b804fb7.