@REM Copyright by The HDF Group. @REM Copyright by the Board of Trustees of the University of Illinois. @REM All rights reserved. @REM @REM This file is part of HDF5. The full HDF5 copyright notice, including @REM terms governing use, modification, and redistribution, is contained in @REM the files COPYING and Copyright.html. COPYING can be found at the root @REM of the source code distribution tree; Copyright.html can be found at the @REM root level of an installed copy of the electronic HDF5 document set and @REM is linked from the top-level documents page. It can also be found at @REM http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have @REM access to either file, you may request a copy from help@hdfgroup.org. @echo off ::This batch file is for h5repack tests ::Usage :: repacktest release -- release static version :: repacktest debug -- debug static version :: repacktest release dll -- release dll version :: repacktest debug dll -- debug dll version :: Written By: Fang GUO :: Date : Jan. 12, 2006 ::What is actually doing? ::Example case ::h5repack -i ..\..\testfiles\test_objs.h5 -o ..\..\temptest\out.test_objs.h5 ::h5diff ..\..\testfiles\test_objs.h5 ..\..\temptest\out.test_objs.h5 > ..\..\temptest\temp.txt 2>&1 ::fc ..\..\temptest\temp.txt temptest\notcomp.txt ::if %ERRORLEVEL%==0 ( :: echo Testing h5repack test_objs.h5 PASSED >> ..\..\repacktest%2_%1.txt ::) else ( :: echo Testing h5repack test_objs.h5 FAILED >> ..\..\repacktest%2_%1.txt :: more temp.txt >> ..\..\repacktest%2_%1.txt ::) :: We will check whether the SZIP library available includes encoder or not by :: calling the szip encoder detecting executable file testh5repack_detect_szip(dll).exe :: and check the printed value. :: If the printed value is "yes", then the SZIP library has encoder, HDF5_SZIP_ENCODE will be set as 1. :: Otherwise, HDF5_SZIP_ENCODE will be set as 0, and some tests will be skipped. FOR /F "delims=" %%a in ('testfiles\testh5repack_detect_szip%2\%1\testh5repack_detect_szip%2.exe') Do Set "Output=%%a" if "%Output%"=="yes" ( Set HDF5_SZIP_ENCODE=1 ) else ( Set HDF5_SZIP_ENCODE=0 ) :: Track total number of testing errors set /A totalerr=0 set /A totalskip=0 ::******************************************************************* :: Generate a new temp directory for test h5repack and reference file ::******************************************************************* ::Make a temporary directory for testing h5repack mkdir temptest :: Reference Files :: After running h5repack with a input .h5 file, it will use :: h5diff to compare the expected .h5 file with the output :: .h5 file generated by h5repack. The comparison results will be :: one of the following two cases. :: Case 1: No difference between the expected .h5 and .h5 generated by h5repack file type nul > temptest\empty.txt ::Case 2: For test_objs.h5 and test_attr.h5, the output will be "Some objects :: are not comparable", but actually there is no difference between type nul > temptest\notcomp.txt echo -------------------------------->>temptest\notcomp.txt echo Some objects are not comparable>> temptest\notcomp.txt echo -------------------------------->>temptest\notcomp.txt echo Use -v for a list of objects.>> temptest\notcomp.txt :: Set two variables to contain the following two file names and paths set nodiff=..\..\temptest\empty.txt set notcomp=..\..\temptest\notcomp.txt ::**************************************************** :: Set the Environment Variables & Change Dir to .EXE ::**************************************************** :: The first incoming parameter should be configuration (debug or release) set p1=%1 :: The second parameter should be the types of library (dll or blank) set p2=%2 :: Set file name for the test results set tempResults=repacktest%2_%1.txt :: Set exe file name set exefile=h5repack%p2% :: Set a variable for the sub batch file tools\tooltest.bat set tooltest=..\..\tooltest :: Set Variables to contain the file name and path of input and output files for testing h5repack for %%v in (_fill _objs _attr _hlink _layout _early _szip _deflate _shuffle _fletcher _filters _nbit _soffset) do ( set test%%v=..\..\testfiles\h5repack%%v.h5 set output%%v=..\..\temptest\out.h5repack%%v.h5 ) :: Creat the file for saving the tests results type nul > %tempResults% :: Change to the direcotory where the .exe file is located cd h5repack%p2%\%p1% ::********************************************* :: Test each function by calling TOOLTEST.BAT ::********************************************* echo. echo.**************************************************** echo. h5repack%2 %1 T E S T S echo.**************************************************** :: STARTING COMMENTS ::Basic Usage: ::1. Set flag ::2. Call batch file tooltest.bat followed with the expected file name ::3. Example ::If we want to test ::h5repack -i ..\..\testfiles\test_objs.h5 -o ..\..\temptest\out.test_objs.h5 ::At first, we need to set the flag like ::set flag=-i %test_objs% -o %output1% ::Secondly, we call batch file tooltest.bat followed by one of reference files ::call %tooltest% %test_objs% %notcomp% :: Using Filters (Zlib, SZIP) ::1. Set flag ::2. Call batch file tooltest.bat followed with the expected file name, zlib\szip ::3. Example ::If we want to test ::h5repack -i ..\..\testfiles\test_layout.h5 -o ..\..\temptest\out.test_layout.h5 f dset2:SZIP=8,EC -l dset2:CHUNK=20x10 ::At first, we need to set the flag like ::set flag=-i %test_layout% -o %output_layout% f dset2:SZIP=8,EC -l dset2:CHUNK=20x10 ::Secondly, we call batch file tooltest.bat followed by one of reference files and szip ::call %tooltest% %test_layout% %nodiff% szip ::Similarly, if you are using zlib, replace "szip" with "zlib" when calling %tooltest% ::If you are using both zlib and szip, replace "szip" with "zlib szip" when calling %tooltest% ::The order of "zlib szip" does matter. ::Skip Tests ::Put "skip" after the reference file, like the following ::set flag=-i %test_scaleoffset% -o %output_scaleoffset% -f dset_none:SOFF=31,IN ::call %tooltest% %test_scaleoffset% %nodiff% skip :: END COMMENTS ::-------------- :: test0.h5 ::-------------- set flag=-i %test_fill% -o %output_fill% call %tooltest% %test_fill% %nodiff% ::This case will be used as an example case for ::illustration purpose inside tooltest.bat for repacktest ::-------------- :: test_objs.h5 ::-------------- :: Actually we are doing: :: set flag=-i ..\..\testfiles\test_objs.h5 -o ..\..\temptest\out.test_objs.h5 :: call ..\..\tooltest ..\..\testfiles\test_objs.h5 ..\..\temptest\notcomp.txt set flag=-i %test_objs% -o %output_objs% call %tooltest% %test_objs% %notcomp% ::-------------- :: test2.h5 ::-------------- set flag=-i %test_attr% -o %output_attr% call %tooltest% %test_attr% %notcomp% ::-------------- :: test3.h5 ::-------------- set flag=-i %test_hlink% -o %output_hlink% call %tooltest% %test_hlink% %nodiff% ::-------------- :: test_layout.h5 ::-------------- set flag=-i %test_layout% -o %output_layout% call %tooltest% %test_layout% %nodiff% ::-------------- :: test_early.h5 ::-------------- set flag=-i %test_early% -o %output_early% call %tooltest% %test_early% %nodiff% ::**************************************************************** :: use test_layout.h5 to write some filters (this file has no filters) ::**************************************************************** ::--------------------------- ::gzip with individual object ::--------------------------- set flag=-i %test_layout% -o %output_layout% -f dset1:GZIP=1 -l dset1:CHUNK=20x10 call %tooltest% %test_layout% %nodiff% zlib ::------------- ::gzip for all ::------------- set flag=-i %test_layout% -o %output_layout% -f GZIP=1 call %tooltest% %test_layout% %nodiff% zlib ::-------------------------- ::szip for individual object ::-------------------------- set flag=-i %test_layout% -o %output_layout% f dset2:SZIP=8,EC -l dset2:CHUNK=20x10 call %tooltest% %test_layout% %nodiff% szip ::-------------- :: szip for all ::-------------- set flag=-i %test_layout% -o %output_layout% -f SZIP=8,NN call %tooltest% %test_layout% %nodiff% szip ::------------------------------- :: shuffle with individual object ::------------------------------- set flag=-i %test_layout% -o %output_layout% -f dset2:SHUF -l dset2:CHUNK=20x10 call %tooltest% %test_layout% %nodiff% ::---------------- :: shuffle for all ::---------------- set flag=-i %test_layout% -o %output_layout% -f SHUF call %tooltest% %test_layout% %nodiff% ::----------------------------------- :: fletcher32 with individual object ::----------------------------------- set flag=-i %test_layout% -o %output_layout% -f dset2:FLET -l dset2:CHUNK=20x10 call %tooltest% %test_layout% %nodiff% ::-------------------- :: fletcher32 for all ::-------------------- set flag=-i %test_layout% -o %output_layout% -f FLET call %tooltest% %test_layout% %nodiff% ::------------ ::all filters ::------------ set flag=-i %test_layout% -o %output_layout% -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8,NN -f dset2:GZIP=1 -l dset2:CHUNK=20x10 :: Check whether szlib or zlib is available, if either library is not available, skip the test. if "%HDF5_EXT_SZIP%"=="" ( call %tooltest% %test_layout% %nodiff% skip )else ( if "%HDF5_EXT_ZLIB%"=="" ( call %tooltest% %test_layout% %nodiff% skip ) else ( call %tooltest% %test_layout% %nodiff% ) ) :: *********************************************************** :: If the filter exists,the following tests assume the input files have filters :: *********************************************************** ::----------- :: szip copy ::----------- set flag=-i %test_szip% -o %output_szip% ::----------- :: The following checks whether szip library is available, :: If not, skip the test. ::----------- if "%HDF5_EXT_SZIP%"=="" ( call %tooltest% %test_szip% %nodiff% skip ) else ( call %tooltest% %test_szip% %nodiff% ) ::------------ ::szip remove ::------------ set flag=-i %test_szip% -o %output_szip% -f dset_szip:NONE ::----------- :: The following checks whether szip library is available, :: If not, skip the test. ::----------- if "%HDF5_EXT_SZIP%"=="" ( call %tooltest% %test_szip% %nodiff% skip ) else ( call %tooltest% %test_szip% %nodiff% ) ::-------------- :: deflate copy ::-------------- set flag=-i %test_deflate% -o %output_deflate% ::----------- :: The following checks whether zlib library is available, :: If not, skip the test. ::----------- if "%HDF5_EXT_ZLIB%"=="" ( call %tooltest% %test_deflate% %nodiff% skip ) else ( call %tooltest% %test_deflate% %nodiff% ) ::--------------- :: deflate remove ::--------------- set flag=-i %test_deflate% -o %output_deflate% -f dset_deflate:NONE ::----------- :: The following checks whether zlib library is available, :: If not, skip the test. ::----------- if "%HDF5_EXT_ZLIB%"=="" ( call %tooltest% %test_deflate% %nodiff% skip ) else ( call %tooltest% %test_deflate% %nodiff% ) ::-------------- :: shuffle copy ::-------------- set flag=-i %test_shuffle% -o %output_shuffle% call %tooltest% %test_shuffle% %nodiff% ::---------------- :: shuffle remove ::---------------- set flag=-i %test_shuffle% -o %output_shuffle% -f dset_shuffle:NONE call %tooltest% %test_shuffle% %nodiff% ::----------------- :: fletcher32 copy ::----------------- set flag=-i %test_fletcher% -o %output_fletcher% call %tooltest% %test_fletcher% %nodiff% ::------------------ :: fletcher32 remove ::------------------ set flag=-i %test_fletcher% -o %output_fletcher% -f dset_fletcher32:NONE call %tooltest% %test_fletcher% %nodiff% ::---------- :: nbit copy ::---------- set flag=-i %test_nbit% -o %output_nbit% call %tooltest% %test_nbit% %nodiff% ::------------ :: nbit remove ::------------ set flag=-i %test_nbit% -o %output_nbit% -f dset_nbit:NONE call %tooltest% %test_nbit% %nodiff% ::--------- :: nbit add ::--------- set flag=-i %test_nbit% -o %output_nbit% -f dset_int31:NBIT call %tooltest% %test_nbit% %nodiff% ::---------------- :: scaleoffset add ::---------------- set flag=-i %test_soffset% -o %output_soffset% -f dset_none:SOFF=31,IN call %tooltest% %test_soffset% %nodiff% ::----------------- :: scaleoffset copy ::----------------- set flag=-i %test_soffset% -o %output_soffset% call %tooltest% %test_soffset% %nodiff% ::------------------- :: scaleoffset remove ::------------------- set flag=-i %test_soffset% -o %output_soffset% -f dset_scaleoffset:NONE call %tooltest% %test_soffset% %nodiff% ::-------------------- :: remove all filters ::-------------------- ::-------------------- ::-- Currently this test is very difficult to be tested on windows since the internal filters ::-- such as fletcher32, scaleoffset, shuffle is hard to be checked in batch files. ::-- Now only szip and deflate filters are checked. KY 2006-11-20 :: Check whether szlib or zlib is available, if either library is not available, skip the test. set flag=-i %test_filters% -o %output_filters% -f NONE if "%HDF5_EXT_SZIP%"=="" ( call %tooltest% %test_filters% %nodiff% skip )else ( if "%HDF5_EXT_ZLIB%"=="" ( call %tooltest% %test_filters% %nodiff% skip ) else ( call %tooltest% %test_filters% %nodiff% ) ) ::------------------ ::filter conversions ::------------------ set flag=-i %test_deflate% -o %output_deflate% -f dset_deflate:SZIP=8,NN call %tooltest% %test_deflate% %nodiff% zlib szip set flag=-i %test_szip% -o %output_szip% -f dset_szip:GZIP=1 call %tooltest% %test_szip% %nodiff% zlib szip ::------ ::limit ::------ set flag=-i %test_layout% -o %output_layout% -f GZIP=1 -m 1024 call %tooltest% %test_layout% %nodiff% zlib ::----- ::file ::----- set flag=-i %test_layout% -o %output_layout% -e ..\..\testfiles\info.h5repack call %tooltest% %test_layout% %nodiff% zlib echo. ********************************************* echo layout options (these files have no filters) echo. ********************************************* set flag=-i %test_layout% -o %output_layout% -l dset2:CHUNK=20x10 call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l CHUNK=20x10 call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l dset2:CONTI call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l CONTI call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l dset2:COMPA call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l COMPA call %tooltest% %test_layout% %nodiff% echo. ***************************************** echo layout conversions (file has no filters) echo. ***************************************** set flag=-i %test_layout% -o %output_layout% -l dset_compact:CONTI call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l dset_compact:CHUNK=2x5 call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l dset_compact:COMPA call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l dset_contiguous:COMPA call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l dset_contiguous:CHUNK=3x6 call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l dset_contiguous:CONTI call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l dset_chunk:COMPA call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l dset_chunk:CHUNK=18x13 call %tooltest% %test_layout% %nodiff% set flag=-i %test_layout% -o %output_layout% -l dset_chunk:CONTI call %tooltest% %test_layout% %nodiff% set flag=-i %test_objs% -o %output_objs% -n call %tooltest% %test_layout% %nodiff% cd ..\.. echo. ::Tests how many tests failed and how many tests skiped if %totalerr%==0 ( echo. All of the %exefile% %p1% Tests Passed! echo. All of the %exefile% %p1% Tests Passed! >> %tempResults% ) else ( echo. %exefile% %p1% Tests Finished with %totalerr% Errors! echo. %exefile% %p1% Tests Finished with %totalerr% Errors!>> %tempResults% ) if not %totalskip%==0 ( echo. %totalskip% Tests in total Skiped! >> %tempResults% echo. %totalskip% Tests in total Skiped! echo. find "SKIPED" %tempResults% | more +2 ) :: remove direcotory temptest and all its contents rmdir /s/q temptest :: Clean environment variables for %%v in (p1 p2 tempResults exefile tooltest nodiff notcomp totalerr totalskip) do set %%v= for %%v in (0 1 2 3 4 5 _szip _deflate _shuffle _fletcher32 _nbit _scaleoffset _all) do ( set test%%v= set output%%v= )