ITK
ITK copied to clipboard
DCMTK tests failing
The following tests are failing when DCMTKImageIO is enabled: 963 - itkDCMTKImageIOTest1 (Failed) 965 - itkDCMTKImageIOTest3 (Failed) 968 - itkDCMTKDirCosinesTest (Failed) 976 - itkDCMTKImageIOSlopeInterceptTest (Failed) 977 - itkDCMTKImageIONoPreambleTest (Failed)
Running git bisect determined the errors began with the following commit:
commit f89399aa35ea620b078c9564dc3f9e3f1a2e99ae Author: Hans Johnson [email protected] Date: Mon Jan 17 17:05:27 2022 -0600
ENH: Update DCMTK to more modern codebase
Update to remove deprecated cmake usages.
@hjmjohnson
@blowekamp It might be a few days before I can tackle this issue. Thanks for tracking it down.
I'm a little surprised this did not surface til now.
I don't think DCMTK is enable on systems besides the AWS BATCH valgrind and coverage builds.
Sorry to chime in.
I'm a little surprised this did not surface til now.
I think those tests have been failing for some time now. But yes, as the module is not active for most builds, they might have been less noticeable.
Valgrind has been reporting defects for some time as well: https://open.cdash.org/viewDynamicAnalysis.php?buildid=8177016
Another potentially related issue might be #2735. Relevant to the module: #2798 #2817 #2872
I could reproduce failed tests locally, gcc version 12.2.0 (Debian 12.2.0-3),
commit f89399a
tests don't fail after reverting this commit. Tried with current master and the reverted commit f89399a :
100% tests passed, 0 tests failed out of 15
Pinging @hjmjohnson 😄
@hjmjohnson @dzenanz @jhlegarreta pinging everyone as these tests are still failing.
Unfortunately, I think I cannot be of help here as I cannot build the DCMTK
IO
module: #2817.
tests don't fail after reverting this commit. Tried with current master and the reverted commit f89399a :
100% tests passed, 0 tests failed out of 15
-- Info: DCMTK will compile without any default dictionary
-- Info: DCMTK will load dictionaries defined by DCMDICTPATH environment variable
-- Info: DCMTK's builtin private dictionary support will be enabled
The first and second lines above are suspicious. Not sure, but maybe it is related.
-- Info: DCMTK will compile without any default dictionary -- Info: DCMTK will load dictionaries defined by DCMDICTPATH environment variable
Yes, it is the reason, hard to find out because error messages from the failed tests are somewhat misleading, e.g. failed to open a file or no image data. After setting DCMDICTPATH
the tests are OK again, s. output below.
r@deb2:~/itk/build/Modules/IO/DCMTK/test$ make test
Running tests...
Test project /home/r/itk/build/Modules/IO/DCMTK/test
Start 1: itkDCMTKImageIOTest1
1/15 Test #1: itkDCMTKImageIOTest1 ...................***Failed 0.02 sec
Start 2: itkDCMTKImageIOTest2
2/15 Test #2: itkDCMTKImageIOTest2 ................... Passed 0.03 sec
Start 3: itkDCMTKImageIOTest3
3/15 Test #3: itkDCMTKImageIOTest3 ...................***Failed 0.02 sec
Start 4: itkDCMTKImageIOTest4
4/15 Test #4: itkDCMTKImageIOTest4 ................... Passed 0.02 sec
Start 5: itkDCMTKSeriesReadImageWrite
5/15 Test #5: itkDCMTKSeriesReadImageWrite ........... Passed 0.03 sec
Start 6: itkDCMTKDirCosinesTest
6/15 Test #6: itkDCMTKDirCosinesTest .................***Failed 0.02 sec
Start 7: itkDCMTKSeriesStreamReadImageWrite1
7/15 Test #7: itkDCMTKSeriesStreamReadImageWrite1 .... Passed 0.04 sec
Start 8: itkDCMTKSeriesImageOrientationWrite1
8/15 Test #8: itkDCMTKSeriesImageOrientationWrite1 ... Passed 0.03 sec
Start 9: itkDCMTKImageIOOrthoDirTest
9/15 Test #9: itkDCMTKImageIOOrthoDirTest ............ Passed 0.02 sec
Start 10: itkDCMTKMultiFrame4DTest
10/15 Test #10: itkDCMTKMultiFrame4DTest ............... Passed 0.64 sec
Start 11: itkDCMTKImageIONonSquareTest
11/15 Test #11: itkDCMTKImageIONonSquareTest ........... Passed 0.08 sec
Start 12: itkDCMTKRGBImageIOColorImageTest
12/15 Test #12: itkDCMTKRGBImageIOColorImageTest ....... Passed 0.06 sec
Start 13: ITKDCMTKLoggerTest
13/15 Test #13: ITKDCMTKLoggerTest ..................... Passed 0.01 sec
Start 14: itkDCMTKImageIOSlopeInterceptTest
14/15 Test #14: itkDCMTKImageIOSlopeInterceptTest ......***Failed 0.02 sec
Start 15: itkDCMTKImageIONoPreambleTest
15/15 Test #15: itkDCMTKImageIONoPreambleTest ..........***Failed 0.01 sec
67% tests passed, 5 tests failed out of 15
Label Time Summary:
ITKIODCMTK = 1.05 sec*proc (15 tests)
Total Test time (real) = 1.05 sec
The following tests FAILED:
1 - itkDCMTKImageIOTest1 (Failed)
3 - itkDCMTKImageIOTest3 (Failed)
6 - itkDCMTKDirCosinesTest (Failed)
14 - itkDCMTKImageIOSlopeInterceptTest (Failed)
15 - itkDCMTKImageIONoPreambleTest (Failed)
Errors while running CTest
Output from these tests are in: /home/r/itk/build/Modules/IO/DCMTK/test/Testing/Temporary/LastTest.log
Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.
make: *** [Makefile:91: test] Error 8
r@deb2:~/itk/build/Modules/IO/DCMTK/test$ export DCMDICTPATH=/home/r/dicom.dic
r@deb2:~/itk/build/Modules/IO/DCMTK/test$ make test
Running tests...
Test project /home/r/itk/build/Modules/IO/DCMTK/test
Start 1: itkDCMTKImageIOTest1
1/15 Test #1: itkDCMTKImageIOTest1 ................... Passed 0.04 sec
Start 2: itkDCMTKImageIOTest2
2/15 Test #2: itkDCMTKImageIOTest2 ................... Passed 0.04 sec
Start 3: itkDCMTKImageIOTest3
3/15 Test #3: itkDCMTKImageIOTest3 ................... Passed 0.03 sec
Start 4: itkDCMTKImageIOTest4
4/15 Test #4: itkDCMTKImageIOTest4 ................... Passed 0.03 sec
Start 5: itkDCMTKSeriesReadImageWrite
5/15 Test #5: itkDCMTKSeriesReadImageWrite ........... Passed 0.04 sec
Start 6: itkDCMTKDirCosinesTest
6/15 Test #6: itkDCMTKDirCosinesTest ................. Passed 0.07 sec
Start 7: itkDCMTKSeriesStreamReadImageWrite1
7/15 Test #7: itkDCMTKSeriesStreamReadImageWrite1 .... Passed 0.05 sec
Start 8: itkDCMTKSeriesImageOrientationWrite1
8/15 Test #8: itkDCMTKSeriesImageOrientationWrite1 ... Passed 0.04 sec
Start 9: itkDCMTKImageIOOrthoDirTest
9/15 Test #9: itkDCMTKImageIOOrthoDirTest ............ Passed 0.03 sec
Start 10: itkDCMTKMultiFrame4DTest
10/15 Test #10: itkDCMTKMultiFrame4DTest ............... Passed 1.24 sec
Start 11: itkDCMTKImageIONonSquareTest
11/15 Test #11: itkDCMTKImageIONonSquareTest ........... Passed 0.09 sec
Start 12: itkDCMTKRGBImageIOColorImageTest
12/15 Test #12: itkDCMTKRGBImageIOColorImageTest ....... Passed 0.07 sec
Start 13: ITKDCMTKLoggerTest
13/15 Test #13: ITKDCMTKLoggerTest ..................... Passed 0.01 sec
Start 14: itkDCMTKImageIOSlopeInterceptTest
14/15 Test #14: itkDCMTKImageIOSlopeInterceptTest ...... Passed 0.03 sec
Start 15: itkDCMTKImageIONoPreambleTest
15/15 Test #15: itkDCMTKImageIONoPreambleTest .......... Passed 0.03 sec
100% tests passed, 0 tests failed out of 15
Label Time Summary:
ITKIODCMTK = 1.85 sec*proc (15 tests)
Total Test time (real) = 1.86 sec
I think that I know how to fix.
Before:
-- Info: DCMTK will compile without any default dictionary
-- Info: DCMTK will load dictionaries defined by DCMDICTPATH environment variable
After:
-- Info: DCMTK will compile with built-in (compiled-in) default dictionary
-- Info: DCMTK will load dictionaries defined by DCMDICTPATH environment variable