summaryrefslogtreecommitdiffstats
path: root/test/h5test.c
diff options
context:
space:
mode:
authorjhendersonHDF <jhenderson@hdfgroup.org>2023-11-13 19:49:38 (GMT)
committerGitHub <noreply@github.com>2023-11-13 19:49:38 (GMT)
commit28d2b6771f41396f1e243e00cb9dd57c4c891613 (patch)
tree238e77e247ac6b688d0eea0a6f81df95e47448dc /test/h5test.c
parent8b3ffdef3099d2699ec71a5f855966132b3d3c25 (diff)
downloadhdf5-28d2b6771f41396f1e243e00cb9dd57c4c891613.zip
hdf5-28d2b6771f41396f1e243e00cb9dd57c4c891613.tar.gz
hdf5-28d2b6771f41396f1e243e00cb9dd57c4c891613.tar.bz2
HDF5 API test updates (#3835)
* HDF5 API test updates Removed test duplication from bringing API tests back into the library from external VOL tests repo Synced changes between API tests and library's tests Updated API tests CMake code to directly use and install testhdf5, testphdf5, etc. instead of creating duplicate binaries Added new h5_using_native_vol() test function to determine whether the VOL connector being used is (or the VOL connector stack being used resolves to) the native VOL connector * Remove duplicate variable
Diffstat (limited to 'test/h5test.c')
-rw-r--r--test/h5test.c82
1 files changed, 81 insertions, 1 deletions
diff --git a/test/h5test.c b/test/h5test.c
index ef580cf..8efebd7 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -2068,6 +2068,86 @@ error:
} /* end h5_check_if_file_locking_enabled() */
/*-------------------------------------------------------------------------
+ * Function: h5_using_native_vol
+ *
+ * Purpose: Checks if the VOL connector being used is (or the VOL
+ * connector stack being used resolves to) the native VOL
+ * connector. Either or both of fapl_id and obj_id may be
+ * provided, but checking of obj_id takes precedence.
+ * H5I_INVALID_HID should be specified for the parameter that
+ * is not provided.
+ *
+ * obj_id must be the ID of an HDF5 object that is accessed
+ * with the VOL connector to check. If obj_id is provided, the
+ * entire VOL connector stack is checked to see if it resolves
+ * to the native VOL connector. If only fapl_id is provided,
+ * only the top-most VOL connector set on fapl_id is checked
+ * against the native VOL connector.
+ *
+ * The HDF5_VOL_CONNECTOR environment variable is not checked
+ * here, as that only overrides the setting for the default
+ * File Access Property List, which may not be the File Access
+ * Property List used for accessing obj_id. There is also
+ * complexity in determining whether the connector stack
+ * resolves to the native VOL connector when the only
+ * information available is a string.
+ *
+ * Return: Non-negative on success/Negative on failure
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+h5_using_native_vol(hid_t fapl_id, hid_t obj_id, bool *is_native_vol)
+{
+ hbool_t is_native = false;
+ hid_t native_id = H5I_INVALID_HID;
+ hid_t vol_id = H5I_INVALID_HID;
+ herr_t ret_value = SUCCEED;
+
+ assert((fapl_id >= 0) || (obj_id >= 0));
+ assert(is_native_vol);
+
+ if (fapl_id == H5P_DEFAULT)
+ fapl_id = H5P_FILE_ACCESS_DEFAULT;
+
+ if (obj_id >= 0) {
+ if (H5VLobject_is_native(obj_id, &is_native) < 0) {
+ ret_value = FAIL;
+ goto done;
+ }
+ }
+ else {
+ if (true != H5VLis_connector_registered_by_value(H5VL_NATIVE_VALUE)) {
+ ret_value = FAIL;
+ goto done;
+ }
+
+ if ((native_id = H5VLget_connector_id_by_value(H5VL_NATIVE_VALUE)) < 0) {
+ ret_value = FAIL;
+ goto done;
+ }
+
+ if (H5Pget_vol_id(fapl_id, &vol_id) < 0) {
+ ret_value = FAIL;
+ goto done;
+ }
+
+ if (vol_id == native_id)
+ is_native = true;
+ }
+
+ *is_native_vol = is_native;
+
+done:
+ if (vol_id != H5I_INVALID_HID)
+ H5VLclose(vol_id);
+ if (native_id != H5I_INVALID_HID)
+ H5VLclose(native_id);
+
+ return ret_value;
+}
+
+/*-------------------------------------------------------------------------
* Function: h5_using_default_driver
*
* Purpose: Checks if the specified VFD name matches the library's
@@ -2104,7 +2184,7 @@ h5_using_default_driver(const char *drv_name)
* which are not currently supported for parallel HDF5, such
* as writing of VL or region reference datatypes.
*
- * Return: true/false
+ * Return: Non-negative on success/Negative on failure
*
*-------------------------------------------------------------------------
*/