10
10
11
11
#
12
12
13
+ include (${HDF_CONFIG_DIR} /HDF5Macros.cmake )
14
+
15
+ # System-independent path separator
16
+ if (WIN32 )
17
+ set (CMAKE_SEP "\; " )
18
+ else ()
19
+ set (CMAKE_SEP ":" )
20
+ endif ()
21
+
13
22
##############################################################################
14
23
##############################################################################
15
24
### T E S T I N G ###
@@ -365,6 +374,61 @@ if (H5_HAVE_PARALLEL)
365
374
HDFTEST_COPY_FILE ("${HDF5_TOOLS_TST_DIR} /testfiles/tvlstr.h5" "${PROJECT_BINARY_DIR} /PAR/testfiles/tvlstr2.h5" "h5diff_files" )
366
375
endif ()
367
376
377
+ # create test files for each external VOL connector
378
+ set (h5diff_vol_files_list "" )
379
+ foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS} )
380
+ HDF5_GET_VOL_TGT_INFO (${external_vol_tgt} ext_vol_dir_name vol_env )
381
+
382
+ # Setup testfiles directory
383
+ file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR} /${ext_vol_dir_name} /testfiles" )
384
+ if (H5_HAVE_PARALLEL )
385
+ file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR} /PAR/${ext_vol_dir_name} /testfiles" )
386
+ endif ()
387
+
388
+ # Generate test files
389
+ add_test (NAME ${external_vol_tgt} -h5diffgentest COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $< TARGET_FILE:h5gentest> -h5diff )
390
+ set_tests_properties (${external_vol_tgt} -h5diffgentest PROPERTIES
391
+ ENVIRONMENT "${vol_env} "
392
+ WORKING_DIRECTORY "${PROJECT_BINARY_DIR} /${ext_vol_dir_name} /testfiles"
393
+ FIXTURES_SETUP ${ext_vol_dir_name} -files
394
+ )
395
+
396
+ if (H5_HAVE_PARALLEL )
397
+ add_test (NAME ${external_vol_tgt} -h5diffgentest-PAR COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $< TARGET_FILE:h5gentest> -h5diff )
398
+ set_tests_properties (${external_vol_tgt} -h5diffgentest-PAR PROPERTIES
399
+ ENVIRONMENT "${vol_env} "
400
+ WORKING_DIRECTORY "${PROJECT_BINARY_DIR} /PAR/${ext_vol_dir_name} /testfiles"
401
+ FIXTURES_SETUP ${ext_vol_dir_name} -files
402
+ )
403
+ endif ()
404
+
405
+ # These aren't HDF5 files, just copy them to the VOL's subdirectory
406
+ foreach (listothers ${LIST_OTHER_TEST_FILES} )
407
+ HDFTEST_COPY_FILE ("${PROJECT_SOURCE_DIR} /expected/${listothers} "
408
+ "${PROJECT_BINARY_DIR} /${ext_vol_dir_name} /testfiles/${listothers} "
409
+ "h5diff_vol_files"
410
+ )
411
+ endforeach ()
412
+
413
+ if (COPY_WINDOWS_FILES )
414
+ foreach (h5_tstfiles ${LIST_WIN_TEST_FILES} )
415
+ HDFTEST_COPY_FILE ("${PROJECT_SOURCE_DIR} /expected/${h5_tstfiles} w.txt" "${PROJECT_BINARY_DIR} /${ext_vol_dir_name} /testfiles/${h5_tstfiles} .txt" "h5diff_vol_files" )
416
+
417
+ if (H5_HAVE_PARALLEL )
418
+ HDFTEST_COPY_FILE ("${PROJECT_SOURCE_DIR} /expected/${h5_tstfiles} w.txt" "${PROJECT_BINARY_DIR} /PAR/${ext_vol_dir_name} /testfiles/${h5_tstfiles} .txt" "h5diff_vol_files" )
419
+ endif ()
420
+ endforeach ()
421
+ else ()
422
+ foreach (h5_tstfiles ${LIST_WIN_TEST_FILES} )
423
+ HDFTEST_COPY_FILE ("${PROJECT_SOURCE_DIR} /expected/${h5_tstfiles} .txt" "${PROJECT_BINARY_DIR} /${ext_vol_dir_name} /testfiles/${h5_tstfiles} .txt" "h5diff_vol_files" )
424
+
425
+ if (H5_HAVE_PARALLEL )
426
+ HDFTEST_COPY_FILE ("${PROJECT_SOURCE_DIR} /expected/${h5_tstfiles} .txt" "${PROJECT_BINARY_DIR} /PAR/${ext_vol_dir_name} /testfiles/${h5_tstfiles} .txt" "h5diff_vol_files" )
427
+ endif ()
428
+ endforeach ()
429
+ endif ()
430
+ endforeach () # per-VOL loop
431
+ add_custom_target (h5diff_vol_files ALL COMMENT "Copying files needed by h5diff VOL tests" DEPENDS ${h5diff_vol_files_list} )
368
432
369
433
#
370
434
# Overwrite system dependent files (Windows) and not VS2015
@@ -440,6 +504,7 @@ macro (ADD_H5_TEST testname)
440
504
if (HDF5_TEST_SERIAL )
441
505
ADD_SH5_TEST (${testname} RESULT_CODE ${ARG_RESULT_CODE} ${ARG_ERROR_REF} ${ARG_UNPARSED_ARGUMENTS} )
442
506
endif ()
507
+
443
508
if (H5_HAVE_PARALLEL AND HDF5_TEST_PARALLEL AND NOT ARG_SERIAL_ONLY )
444
509
ADD_PH5_TEST (${testname} RESULT_CODE ${ARG_RESULT_CODE} ${ARG_ERROR_REF} ${ARG_UNPARSED_ARGUMENTS} )
445
510
endif ()
@@ -458,39 +523,84 @@ macro (ADD_SH5_TEST testname)
458
523
message (FATAL_ERROR "ADD_SH5_TEST: RESULT_CODE is required" )
459
524
endif ()
460
525
461
- # If using memchecker add tests without using scripts
462
- if (HDF5_ENABLE_USING_MEMCHECKER )
463
- add_test (NAME H5DIFF-${testname} COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $< TARGET_FILE:h5diff> ${ARG_UNPARSED_ARGUMENTS} )
464
- if (${ARG_RESULT_CODE} )
465
- set_tests_properties (H5DIFF-${testname} PROPERTIES WILL_FAIL "true" )
526
+ list (LENGTH HDF5_EXTERNAL_VOL_TARGETS num_ext_vols )
527
+
528
+ # Add a test for the native connector and each external VOL connector
529
+ foreach (vol_idx RANGE 0 ${num_ext_vols} )
530
+ set (vol_env "" )
531
+
532
+ # First, populate VOL info to be passed to tests
533
+ if (${vol_idx} EQUAL 0 )
534
+ set (vol "native" )
535
+ set (vol_prefix "" )
536
+ set (workdir "${PROJECT_BINARY_DIR} /testfiles" )
537
+ else ()
538
+ # An external VOL connector
539
+ math (EXPR vol_idx_fixed "${vol_idx} - 1" )
540
+ list (GET HDF5_EXTERNAL_VOL_TARGETS ${vol_idx_fixed} ext_vol_tgt )
541
+ HDF5_GET_VOL_TGT_INFO (${ext_vol_tgt} vol vol_env )
542
+
543
+ set (vol_prefix "HDF5_VOL_${vol} -" )
544
+
545
+ set (workdir "${PROJECT_BINARY_DIR} /${vol} /testfiles" )
546
+ # Isolate plugin path string
547
+ string (FIND "${vol_env} " "HDF5_PLUGIN_PATH=" vol_plugin_path_posn )
548
+
549
+ if (vol_plugin_path_posn GREATER -1 )
550
+ # Grab path string after HDF5_PLUGIN_PATH=
551
+ string (LENGTH "HDF5_PLUGIN_PATH=" path_prefix_len )
552
+ math (EXPR vol_plugin_path_posn "${vol_plugin_path_posn} + ${path_prefix_len} " )
553
+ string (SUBSTRING "${vol_env} " ${vol_plugin_path_posn} -1 vol_plugin_path )
554
+ else ()
555
+ set (vol_plugin_path "" )
556
+ endif ()
466
557
endif ()
467
- else ()
468
- add_test (
469
- NAME H5DIFF-${testname}
470
- COMMAND "${CMAKE_COMMAND} "
471
- -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR} "
472
- -D "TEST_PROGRAM=$<TARGET_FILE:h5diff>"
473
- -D "TEST_ARGS:STRING=${ARG_UNPARSED_ARGUMENTS} "
474
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR} /testfiles"
475
- -D "TEST_OUTPUT=${testname} .out"
476
- -D "TEST_EXPECT=${ARG_RESULT_CODE} "
477
- -D "TEST_REFERENCE=${testname} .txt"
478
- -D "TEST_ERRREF=${ARG_ERROR_REF} "
479
- -P "${HDF_RESOURCES_DIR} /runTest.cmake"
558
+
559
+ # If using memchecker add tests without using scripts
560
+ if (HDF5_ENABLE_USING_MEMCHECKER )
561
+ add_test (NAME ${vol_prefix} H5DIFF-${testname} COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $< TARGET_FILE:h5diff> ${ARG_UNPARSED_ARGUMENTS} )
562
+ if (${ARG_RESULT_CODE} )
563
+ set_tests_properties (${vol_prefix} H5DIFF-${testname} PROPERTIES WILL_FAIL "true" )
564
+ endif ()
565
+ else ()
566
+ add_test (
567
+ NAME ${vol_prefix} H5DIFF-${testname}
568
+ COMMAND "${CMAKE_COMMAND} "
569
+ -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR} "
570
+ -D "TEST_PROGRAM=$<TARGET_FILE:h5diff>"
571
+ -D "TEST_ARGS:STRING=${ARG_UNPARSED_ARGUMENTS} "
572
+ -D "TEST_FOLDER=${PROJECT_BINARY_DIR} /testfiles"
573
+ -D "TEST_OUTPUT=${testname} .out"
574
+ -D "TEST_EXPECT=${ARG_RESULT_CODE} "
575
+ -D "TEST_REFERENCE=${testname} .txt"
576
+ -D "TEST_ERRREF=${ARG_ERROR_REF} "
577
+ -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH"
578
+ -D "TEST_ENV_VALUE=${vol_plugin_path} "
579
+ -P "${HDF_RESOURCES_DIR} /runTest.cmake"
580
+ )
581
+ endif ()
582
+
583
+ set_tests_properties (${vol_prefix} H5DIFF-${testname} PROPERTIES
584
+ WORKING_DIRECTORY "${workdir} "
480
585
)
481
- endif ()
482
- set_tests_properties (H5DIFF-${testname} PROPERTIES
483
- WORKING_DIRECTORY "${PROJECT_BINARY_DIR} /testfiles"
484
- )
485
- if ("H5DIFF-${testname} " MATCHES "${HDF5_DISABLE_TESTS_REGEX} " )
486
- set_tests_properties (H5DIFF-${testname} PROPERTIES DISABLED true )
487
- endif ()
586
+
587
+ if (NOT "${vol} " STREQUAL "native" )
588
+ set_tests_properties (${vol_prefix} H5DIFF-${testname} PROPERTIES
589
+ ENVIRONMENT "${vol_env} "
590
+ FIXTURES_REQUIRED "h5diff_vol_files"
591
+ )
592
+ endif ()
593
+
594
+ if ("${vol_prefix} H5DIFF-${testname} " MATCHES "${HDF5_DISABLE_TESTS_REGEX} " )
595
+ set_tests_properties (${vol_prefix} H5DIFF-${testname} PROPERTIES DISABLED true )
596
+ endif ()
597
+ endforeach () # per-VOL loop
488
598
endmacro ()
489
599
490
600
macro (ADD_PH5_TEST testname )
491
601
cmake_parse_arguments (ARG
492
602
""
493
- "RESULT_CODE;ERROR_REF"
603
+ "RESULT_CODE;ERROR_REF;VOL_NAME;VOL_ENV "
494
604
""
495
605
${ARGN}
496
606
)
@@ -500,37 +610,81 @@ macro (ADD_PH5_TEST testname)
500
610
message (FATAL_ERROR "ADD_PH5_TEST: RESULT_CODE is required" )
501
611
endif ()
502
612
503
- # If using memchecker add tests without using scripts
504
- if (HDF5_ENABLE_USING_MEMCHECKER )
505
- add_test (NAME MPI_TEST_H5DIFF-${testname} COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_PREFLAGS} $< TARGET_FILE:ph5diff> ${MPIEXEC_POSTFLAGS} ${ARG_UNPARSED_ARGUMENTS} )
506
- set_tests_properties (MPI_TEST_H5DIFF-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR} /PAR/testfiles" )
507
- if (${ARG_RESULT_CODE} )
508
- set_tests_properties (MPI_TEST_H5DIFF-${testname} PROPERTIES WILL_FAIL "true" )
613
+ list (LENGTH HDF5_EXTERNAL_VOL_TARGETS num_ext_vols )
614
+
615
+ # Add a test for the native connector and each external VOL connector
616
+ foreach (vol_idx RANGE 0 ${num_ext_vols} )
617
+ set (vol_env "" )
618
+
619
+ # First, populate VOL info to be passed to tests
620
+ if (${vol_idx} EQUAL 0 )
621
+ set (vol "native" )
622
+ set (vol_prefix "" )
623
+ set (workdir "${PROJECT_BINARY_DIR} /PAR/testfiles" )
624
+ else ()
625
+ # An external VOL connector
626
+ math (EXPR vol_idx_fixed "${vol_idx} - 1" )
627
+ list (GET HDF5_EXTERNAL_VOL_TARGETS ${vol_idx_fixed} ext_vol_tgt )
628
+ HDF5_GET_VOL_TGT_INFO (${ext_vol_tgt} vol vol_env )
629
+
630
+ set (vol_prefix "HDF5_VOL_${vol} -" )
631
+
632
+ set (workdir "${PROJECT_BINARY_DIR} /PAR/${vol} /testfiles" )
633
+ # Isolate plugin path string
634
+ string (FIND "${vol_env} " "HDF5_PLUGIN_PATH=" vol_plugin_path_posn )
635
+
636
+ if (vol_plugin_path_posn GREATER -1 )
637
+ # Grab path string after HDF5_PLUGIN_PATH=
638
+ string (LENGTH "HDF5_PLUGIN_PATH=" path_prefix_len )
639
+ math (EXPR vol_plugin_path_posn "${vol_plugin_path_posn} + ${path_prefix_len} " )
640
+ string (SUBSTRING "${vol_env} " ${vol_plugin_path_posn} -1 vol_plugin_path )
641
+ else ()
642
+ set (vol_plugin_path "" )
643
+ endif ()
509
644
endif ()
510
- else ()
511
- add_test (
512
- NAME MPI_TEST_H5DIFF-${testname}
513
- COMMAND "${CMAKE_COMMAND} "
514
- -D "TEST_PROGRAM=${MPIEXEC_EXECUTABLE} "
515
- -D "TEST_ARGS:STRING=${MPIEXEC_NUMPROC_FLAG} ;${MPIEXEC_MAX_NUMPROCS} ;${MPIEXEC_PREFLAGS} ;$<TARGET_FILE:ph5diff>;${MPIEXEC_POSTFLAGS} ;${ARG_UNPARSED_ARGUMENTS} "
516
- -D "TEST_FOLDER=${PROJECT_BINARY_DIR} /PAR/testfiles"
517
- -D "TEST_OUTPUT=${testname} .out"
518
- #-D "TEST_EXPECT=${ARG_RESULT_CODE}"
519
- -D "TEST_EXPECT=0" # ph5diff currently always exits with a zero status code due to
520
- # output from some MPI implementations from a non-zero exit code
521
- -D "TEST_REFERENCE=${testname} .txt"
522
- -D "TEST_REF_FILTER="
523
- -D "TEST_SORT_COMPARE=TRUE"
524
- -D "TEST_ERRREF=${ARG_ERROR_REF} "
525
- -P "${HDF_RESOURCES_DIR} /runTest.cmake"
645
+
646
+ # If using memchecker add tests without using scripts
647
+ if (HDF5_ENABLE_USING_MEMCHECKER )
648
+ add_test (NAME MPI_TEST_${vol_prefix}H5DIFF-${testname} COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_PREFLAGS} $< TARGET_FILE:ph5diff> ${MPIEXEC_POSTFLAGS} ${ARG_UNPARSED_ARGUMENTS} )
649
+ set_tests_properties (MPI_TEST_${vol_prefix}H5DIFF-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR} /PAR/testfiles" )
650
+ if (${ARG_RESULT_CODE} )
651
+ set_tests_properties (MPI_TEST_${vol_prefix}H5DIFF-${testname} PROPERTIES WILL_FAIL "true" )
652
+ endif ()
653
+ else ()
654
+ add_test (
655
+ NAME MPI_TEST_${vol_prefix}H5DIFF-${testname}
656
+ COMMAND "${CMAKE_COMMAND} "
657
+ -D "TEST_PROGRAM=${MPIEXEC_EXECUTABLE} "
658
+ -D "TEST_ARGS:STRING=${MPIEXEC_NUMPROC_FLAG} ;${MPIEXEC_MAX_NUMPROCS} ;${MPIEXEC_PREFLAGS} ;$<TARGET_FILE:ph5diff>;${MPIEXEC_POSTFLAGS} ;${ARG_UNPARSED_ARGUMENTS} "
659
+ -D "TEST_FOLDER=${PROJECT_BINARY_DIR} /PAR/testfiles"
660
+ -D "TEST_OUTPUT=${testname} .out"
661
+ #-D "TEST_EXPECT=${ARG_RESULT_CODE}"
662
+ -D "TEST_EXPECT=0" # ph5diff currently always exits with a zero status code due to
663
+ # output from some MPI implementations from a non-zero exit code
664
+ -D "TEST_REFERENCE=${testname} .txt"
665
+ -D "TEST_REF_FILTER="
666
+ -D "TEST_SORT_COMPARE=TRUE"
667
+ -D "TEST_ERRREF=${ARG_ERROR_REF} "
668
+ -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH"
669
+ -D "TEST_ENV_VALUE=${vol_plugin_path} "
670
+ -P "${HDF_RESOURCES_DIR} /runTest.cmake"
671
+ )
672
+ endif ()
673
+ set_tests_properties (MPI_TEST_${vol_prefix}H5DIFF-${testname} PROPERTIES
674
+ WORKING_DIRECTORY "${workdir} "
526
675
)
527
- endif ()
528
- set_tests_properties (MPI_TEST_H5DIFF-${testname} PROPERTIES
529
- WORKING_DIRECTORY "${PROJECT_BINARY_DIR} /PAR/testfiles"
530
- )
531
- if ("MPI_TEST_H5DIFF-${testname} " MATCHES "${HDF5_DISABLE_TESTS_REGEX} " )
532
- set_tests_properties (MPI_TEST_H5DIFF-${testname} PROPERTIES DISABLED true )
533
- endif ()
676
+
677
+ if (NOT "${vol} " STREQUAL "native" )
678
+ set_tests_properties (MPI_TEST_${vol_prefix}H5DIFF-${testname} PROPERTIES
679
+ ENVIRONMENT "${vol_env} "
680
+ FIXTURES_REQUIRED "h5diff_vol_files"
681
+ )
682
+ endif ()
683
+
684
+ if ("MPI_TEST_${vol_prefix} H5DIFF-${testname} " MATCHES "${HDF5_DISABLE_TESTS_REGEX} " )
685
+ set_tests_properties (MPI_TEST_${vol_prefix}H5DIFF-${testname} PROPERTIES DISABLED true )
686
+ endif ()
687
+ endforeach () # per-VOL loop
534
688
endmacro ()
535
689
536
690
macro (ADD_H5_UD_TEST testname resultcode resultfile )
@@ -544,7 +698,7 @@ macro (ADD_H5_UD_TEST testname resultcode resultfile)
544
698
endif ()
545
699
546
700
add_test (
547
- NAME H5DIFF_UD-${testname}
701
+ NAME ${vol_prefix} H5DIFF_UD-${testname}
548
702
COMMAND "${CMAKE_COMMAND} "
549
703
-D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR} "
550
704
-D "TEST_PROGRAM=$<TARGET_FILE:h5diff>"
@@ -560,8 +714,8 @@ macro (ADD_H5_UD_TEST testname resultcode resultfile)
560
714
-P "${HDF_RESOURCES_DIR} /runTest.cmake"
561
715
)
562
716
563
- if ("H5DIFF_UD-${testname} " MATCHES "${HDF5_DISABLE_TESTS_REGEX} " )
564
- set_tests_properties (H5DIFF_UD-${testname} PROPERTIES DISABLED true )
717
+ if ("${vol_prefix} H5DIFF_UD-${testname} " MATCHES "${HDF5_DISABLE_TESTS_REGEX} " )
718
+ set_tests_properties (${vol_prefix} H5DIFF_UD-${testname} PROPERTIES DISABLED true )
565
719
endif ()
566
720
endif ()
567
721
endmacro ()
0 commit comments