From 32c4900e89d845f0490bdbabddd2aab9c42165de Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Thu, 16 May 2019 15:05:12 -0500 Subject: removed VOLL NULL connector and replaced it with native VOL --- MANIFEST | 2 +- fortran/src/H5VLff.F90 | 61 +++++++------------------------------- fortran/src/hdf5_fortrandll.def.in | 1 - fortran/test/Makefile.am | 23 +------------- fortran/test/null_vol_connector.c | 2 ++ fortran/test/vol_connector.F90 | 49 +++++++++++++----------------- test/vol_plugin.c | 5 ++++ 7 files changed, 39 insertions(+), 104 deletions(-) diff --git a/MANIFEST b/MANIFEST index 9750c49..a50859a 100644 --- a/MANIFEST +++ b/MANIFEST @@ -265,8 +265,8 @@ ./fortran/src/h5fc.in ./fortran/src/hdf5_fortrandll.def.in - ./fortran/test/Makefile.am +./fortran/test/vol_connector.F90 ./fortran/test/fflush1.F90 ./fortran/test/fflush2.F90 ./fortran/test/fortranlib_test.F90 diff --git a/fortran/src/H5VLff.F90 b/fortran/src/H5VLff.F90 index e3469fb..0c5e8fd 100644 --- a/fortran/src/H5VLff.F90 +++ b/fortran/src/H5VLff.F90 @@ -4,7 +4,7 @@ ! MODULE H5VL ! ! PURPOSE -! This file contains Fortran interfaces for H5VL functions. +! This file contains Fortran interfaces for H5VL (VOL) functions. ! ! COPYRIGHT ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * @@ -57,9 +57,9 @@ CONTAINS ! layer class by name. ! ! INPUTS -! cls - +! name - Connector name ! OUTPUTS -! vol_id - +! vol_id - VOL id ! hdferr - Returns 0 if successful and -1 if fails ! SOURCE @@ -72,10 +72,10 @@ CONTAINS !***** CHARACTER(LEN=LEN_TRIM(name)+1,KIND=C_CHAR) :: c_name INTEGER(HID_T) :: vipl_id_default - INTERFACE - INTEGER(HID_T) FUNCTION H5VLregister_connector_by_name(name, vipl_id) BIND(C,NAME='H5VLregister_connector_by_name') + INTEGER(HID_T) FUNCTION H5VLregister_connector_by_name(name, vipl_id) & + BIND(C,NAME='H5VLregister_connector_by_name') IMPORT :: C_CHAR IMPORT :: HID_T CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name @@ -113,7 +113,6 @@ CONTAINS END FUNCTION H5VLregister_connector_by_value END INTERFACE - vipl_id_default = H5P_DEFAULT_F IF(PRESENT(vipl_id)) vipl_id_default = vipl_id @@ -134,9 +133,9 @@ CONTAINS ! Tests whether a VOL class has been registered or not. ! ! INPUTS -! cls - +! name - Connector name ! OUTPUTS -! vol_id - +! registered - state of VOL class registration ! hdferr - Returns 0 if successful and -1 if fails ! SOURCE @@ -177,9 +176,9 @@ CONTAINS ! Retrieves the ID for a registered VOL connector. ! ! INPUTS -! cls - +! name - Connector name ! OUTPUTS -! vol_id - +! vol_id - Connector id ! hdferr - Returns 0 if successful and -1 if fails ! SOURCE @@ -236,15 +235,11 @@ CONTAINS name_len = INT(H5VLget_connector_name(obj_id, c_name, 0_SIZE_T), SIZE_T) IF(name_len.LT.0) hdferr = H5I_INVALID_HID_F ELSE - ! f_ptr = C_LOC(c_name(1)(1:1)) - PRINT*,LEN(name)+1 l = INT(LEN(name)+1,SIZE_T) IF(INT(H5VLget_connector_name(obj_id, c_name, l), SIZE_T).LT.0)THEN hdferr = H5I_INVALID_HID_F ELSE - PRINT*,"C_NAME", c_name CALL HD5c2fstring(name,c_name,LEN(name)) - PRINT*,"name", name ENDIF ENDIF @@ -261,7 +256,7 @@ CONTAINS ! Closes a VOL connector ID. ! ! INPUTS -! plugin_id - A valid identifier of the connectory to unregister. +! vol_id - A valid identifier of the connectory to unregister. ! ! OUTPUTS ! hdferr - Returns 0 if successful and -1 if fails @@ -317,40 +312,4 @@ CONTAINS END SUBROUTINE H5VLunregister_connector_f - !--------------------------------------------------------------------------- - ! Function: H5VLcmp_connector_cls_f - ! - ! Purpose: Compares two connector classes (based on their value field) - ! - ! Return: Success: Non-negative, *cmp set to a value like strcmp - ! - ! Failure: Negative, *cmp unset - ! - !--------------------------------------------------------------------------- - - SUBROUTINE H5VLcmp_connector_cls_f(cmp, connector_id1, connector_id2, hdferr) - IMPLICIT NONE - INTEGER, INTENT(OUT), TARGET :: cmp - INTEGER(HID_T), INTENT(IN) :: connector_id1 - INTEGER(HID_T), INTENT(IN) :: connector_id2 - INTEGER, INTENT(OUT) :: hdferr -!***** - - INTEGER(C_INT) :: cmp_c - - INTERFACE - INTEGER FUNCTION H5VLcmp_connector_cls(cmp, connector_id1, connector_id2) BIND(C, NAME='H5VLcmp_connector_cls') - IMPORT :: HID_T - IMPORT :: C_INT - INTEGER(C_INT) :: cmp - INTEGER(HID_T), INTENT(IN), VALUE :: connector_id1 - INTEGER(HID_T), INTENT(IN), VALUE :: connector_id2 - END FUNCTION H5VLcmp_connector_cls - END INTERFACE - - hdferr = INT(H5VLcmp_connector_cls(cmp_c, connector_id1, connector_id2)) - cmp = INT(cmp_c) - - END SUBROUTINE H5VLcmp_connector_cls_f - END MODULE H5VL diff --git a/fortran/src/hdf5_fortrandll.def.in b/fortran/src/hdf5_fortrandll.def.in index 390c2b7..e143b45 100644 --- a/fortran/src/hdf5_fortrandll.def.in +++ b/fortran/src/hdf5_fortrandll.def.in @@ -460,7 +460,6 @@ H5VL_mp_H5VLGET_CONNECTOR_ID_F H5VL_mp_H5VLGET_CONNECTOR_NAME_F H5VL_mp_H5VLCLOSE_F H5VL_mp_H5VLUNREGISTER_CONNECTOR_F -H5VL_mp_H5VLCMP_CONNECTOR_CLS_F ; H5Z H5Z_mp_H5ZUNREGISTER_F H5Z_mp_H5ZFILTER_AVAIL_F diff --git a/fortran/test/Makefile.am b/fortran/test/Makefile.am index ef6cd7e..9e03996 100644 --- a/fortran/test/Makefile.am +++ b/fortran/test/Makefile.am @@ -30,8 +30,6 @@ noinst_LTLIBRARIES=libh5test_fortran.la # want to build a shared C library and a static Fortran library. If so, # pass the -static flag to the library linker. if FORTRAN_SHARED_CONDITIONAL - TEST_SCRIPT = test_vol_connector.sh - SCRIPT_DEPEND = vol_connector$(EXEEXT) else AM_LDFLAGS+=-static endif @@ -39,26 +37,9 @@ endif check_SCRIPTS = $(TEST_SCRIPT) # Our main targets, the tests themselves -TEST_PROG=fortranlib_test fflush1 fflush2 fortranlib_test_1_8 fortranlib_test_F03 +TEST_PROG=fortranlib_test fflush1 fflush2 fortranlib_test_1_8 fortranlib_test_F03 vol_connector check_PROGRAMS=$(TEST_PROG) -if FORTRAN_SHARED_CONDITIONAL - check_PROGRAMS+= vol_connector -endif - -if FORTRAN_SHARED_CONDITIONAL - # The libh5test library provides common support code for the tests. - # The filter_plugin* libraries are for use in filter_plugin.c. - # Build them as shared libraries if that option was enabled in configure. - noinst_LTLIBRARIES += libnull_vol_connector.la - - # VOL plugin test libraries - # - # null_vol_connector is used for testing basic VOL plugin functionality. - libnull_vol_connector_la_SOURCES=null_vol_connector.c - libnull_vol_connector_la_LDFLAGS=$(AM_LDFLAGS) -avoid-version -module -shared -export-dynamic -rpath /nowhere -endif - libh5test_fortran_la_SOURCES = tf_gen.F90 tf.F90 t.c @@ -117,8 +98,6 @@ H5_test_buildiface_SOURCES = H5_test_buildiface.F90 H5_test_buildiface_LDADD = -DISTCLEANFILES=test_vol_connector.sh # TODO:CHECK IF WORKS MSB - # fflush2 depends on files created by fflush1 fflush2.chkexe_: fflush1.chkexe_ diff --git a/fortran/test/null_vol_connector.c b/fortran/test/null_vol_connector.c index 00a22b8..e30a659 100644 --- a/fortran/test/null_vol_connector.c +++ b/fortran/test/null_vol_connector.c @@ -127,6 +127,8 @@ H5VL_file_create(const char *name) { hid_t under_fapl; H5VL_t *file; + + printf(" H5VL_file_create \n"); file = (H5VL_t *)calloc(1, sizeof(H5VL_t)); diff --git a/fortran/test/vol_connector.F90 b/fortran/test/vol_connector.F90 index 7810c97..7f19d79 100644 --- a/fortran/test/vol_connector.F90 +++ b/fortran/test/vol_connector.F90 @@ -31,9 +31,8 @@ MODULE VOL_TMOD USE THDF5_F03 IMPLICIT NONE - - INTEGER, PARAMETER :: NULL_VOL_CONNECTOR_VALUE = 160 - CHARACTER(LEN=18), PARAMETER :: NULL_VOL_CONNECTOR_NAME = "null_vol_connector" + INTEGER, PARAMETER :: NATIVE_VOL_CONNECTOR_VALUE = 0 + CHARACTER(LEN=6), PARAMETER :: NATIVE_VOL_CONNECTOR_NAME = "native" CONTAINS @@ -57,50 +56,47 @@ CONTAINS INTEGER(hid_t) :: vol_id = 0, vol_id_out = 1 CHARACTER(LEN=64) :: name INTEGER(SIZE_T) :: name_len + INTEGER(hid_t) :: file_id INTEGER :: cmp = -1 -! CHARACTER(LEN=12) :: filename = "h5null.posix" -! INTEGER(HID_T) :: file_id ! The null VOL connector should not be registered at the start of the test - CALL H5VLis_connector_registered_f( NULL_VOL_CONNECTOR_NAME, is_registered, error) + CALL H5VLis_connector_registered_f( "FAKE_VOL_CONNECTOR_NAME", is_registered, error) CALL check("H5VLis_connector_registered_f",error,total_error) CALL VERIFY("H5VLis_connector_registered_f", is_registered, .FALSE., total_error) ! Register the connector by name - CALL H5VLregister_connector_by_name_f(NULL_VOL_CONNECTOR_NAME, vol_id, error) + CALL H5VLregister_connector_by_name_f(NATIVE_VOL_CONNECTOR_NAME, vol_id, error) CALL check("H5VLregister_connector_by_name_f",error,total_error) ! The connector should be registered now - CALL H5VLis_connector_registered_f(NULL_VOL_CONNECTOR_NAME, is_registered, error) + CALL H5VLis_connector_registered_f(NATIVE_VOL_CONNECTOR_NAME, is_registered, error) CALL check("H5VLis_connector_registered_f",error,total_error) CALL VERIFY("H5VLis_connector_registered_f", is_registered, .TRUE., total_error) - CALL H5VLget_connector_id_f(NULL_VOL_CONNECTOR_NAME, vol_id_out, error) + CALL H5VLget_connector_id_f(NATIVE_VOL_CONNECTOR_NAME, vol_id_out, error) CALL check("H5VLget_connector_id_f",error,total_error) - PRINT*,vol_id_out + CALL H5Fcreate_f("voltest.h5",H5F_ACC_TRUNC_F, file_id, error) + CALL check("H5F_create_f",error,total_error) - CALL H5VLget_connector_name_f(vol_id_out, name, error, name_len) + CALL H5VLget_connector_name_f(file_id, name, error, name_len) CALL check("H5VLget_connector_name_f",error,total_error) + CALL VERIFY("H5VLget_connector_name_f", INT(name_len), LEN_TRIM(NATIVE_VOL_CONNECTOR_NAME), total_error) - ! CALL H5VLget_connector_name_f(vol_id_out, name, error) - ! CALL check("H5VLget_connector_name_f",error,total_error) + CALL H5VLget_connector_name_f(file_id, name, error) + CALL check("H5VLget_connector_name_f",error,total_error) + CALL VERIFY("H5VLget_connector_name_f", name, NATIVE_VOL_CONNECTOR_NAME, total_error) - CALL H5VLcmp_connector_cls_f( cmp, vol_id_out, vol_id, error) - CALL check("H5VLcmp_connector_cls_f",error, total_error) - CALL VERIFY("H5VLcmp_connector_cls_f", cmp, 0, total_error) + CALL H5Fclose_f(file_id, error) + CALL check("H5Fclose_f",error,total_error) CALL H5VLclose_f(vol_id_out, error) + CALL check("H5VLclose_f",error, total_error) ! Unregister the connector CALL H5VLunregister_connector_f(vol_id, error) CALL check("H5VLunregister_connector_f", error, total_error) - ! The connector should not be registered now - CALL H5VLis_connector_registered_f( NULL_VOL_CONNECTOR_NAME, is_registered, error) - CALL check("H5VLis_connector_registered_f",error,total_error) - CALL VERIFY("H5VLis_connector_registered_f", is_registered, .FALSE., total_error) - END SUBROUTINE test_registration_by_name !------------------------------------------------------------------------- @@ -123,16 +119,16 @@ CONTAINS ! The null VOL connector should not be registered at the start of the test - CALL H5VLis_connector_registered_f( NULL_VOL_CONNECTOR_NAME, is_registered, error) + CALL H5VLis_connector_registered_f( "FAKE_VOL_CONNECTOR_NAME", is_registered, error) CALL check("H5VLis_connector_registered_f",error,total_error) CALL VERIFY("H5VLis_connector_registered_f", is_registered, .FALSE., total_error) ! Register the connector by value - CALL H5VLregister_connector_by_value_f(NULL_VOL_CONNECTOR_VALUE, vol_id, error) + CALL H5VLregister_connector_by_value_f(NATIVE_VOL_CONNECTOR_VALUE, vol_id, error) CALL check("H5VLregister_connector_by_value_f", error, total_error) ! The connector should be registered now - CALL H5VLis_connector_registered_f(NULL_VOL_CONNECTOR_NAME, is_registered, error) + CALL H5VLis_connector_registered_f(NATIVE_VOL_CONNECTOR_NAME, is_registered, error) CALL check("H5VLis_connector_registered_f",error,total_error) CALL VERIFY("H5VLis_connector_registered_f", is_registered, .TRUE., total_error) @@ -140,11 +136,6 @@ CONTAINS CALL H5VLunregister_connector_f(vol_id, error) CALL check("H5VLunregister_connector_f", error, total_error) - ! The connector should not be registered now - CALL H5VLis_connector_registered_f( NULL_VOL_CONNECTOR_NAME, is_registered, error) - CALL check("H5VLis_connector_registered_f",error,total_error) - CALL VERIFY("H5VLis_connector_registered_f", is_registered, .FALSE., total_error) - END SUBROUTINE test_registration_by_value END MODULE VOL_TMOD diff --git a/test/vol_plugin.c b/test/vol_plugin.c index 73918ff..51b8e1e 100644 --- a/test/vol_plugin.c +++ b/test/vol_plugin.c @@ -114,6 +114,11 @@ test_registration_by_name(void) if(FALSE == is_registered) FAIL_PUTS_ERROR("NULL VOL connector was not registered"); + hid_t acc_tpl = H5Pcreate(H5P_FILE_ACCESS); + H5Pset_vol(acc_tpl, vol_id, NULL); + + H5Pclose(acc_tpl); + /* Unregister the connector */ if(H5VLunregister_connector(vol_id) < 0) TEST_ERROR; -- cgit v0.12