diff options
Diffstat (limited to 'test/vds_env.c')
-rw-r--r-- | test/vds_env.c | 325 |
1 files changed, 170 insertions, 155 deletions
diff --git a/test/vds_env.c b/test/vds_env.c index 58d90fc..633b7a3 100644 --- a/test/vds_env.c +++ b/test/vds_env.c @@ -17,6 +17,7 @@ * Purpose: Tests datasets with virtual layout. */ #include "h5test.h" +#include "H5VLprivate.h" /* Virtual Object Layer */ const char *FILENAME[] = {"vds_env_virt_0", "vds_env_virt_3", "vds_env_src_2", "vds_env%%_src2", NULL}; @@ -66,201 +67,215 @@ test_vds_prefix_second(unsigned config, hid_t fapl) int fill = -1; /* Fill value */ int i, j; char buffer[1024]; /* buffer to read vds_prefix */ + hbool_t is_native; /* Whether native VOL connector is being used */ TESTING("basic virtual dataset I/O via H5Pset_vds_prefix(): all selection with ENV prefix") - h5_fixname(FILENAME[0], fapl, vfilename, sizeof vfilename); - h5_fixname(FILENAME[1], fapl, vfilename2, sizeof vfilename2); - h5_fixname(FILENAME[2], fapl, srcfilename, sizeof srcfilename); - h5_fixname_printf(FILENAME[2], fapl, srcfilename_map, sizeof srcfilename_map); - h5_fixname(FILENAME[3], fapl, srcfilenamepct, sizeof srcfilenamepct); - h5_fixname_printf(srcfilenamepct_map_orig, fapl, srcfilenamepct_map, sizeof srcfilenamepct_map); + /* Check for operating with native (only) VOL connector */ + is_native = FALSE; + if (H5VL_fapl_is_native(fapl, &is_native) < 0) + TEST_ERROR; - /* create tmp directory and get current working directory path */ - if (HDmkdir(TMPDIR, (mode_t)0755) < 0 && errno != EEXIST) - TEST_ERROR - - /* Create DCPL */ - if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - TEST_ERROR - - /* Set fill value */ - if (H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fill) < 0) - TEST_ERROR - - /* Set prefix to a nonexistent directory, will be overwritten by environment variable */ - if ((dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0) - TEST_ERROR - - if (H5Pset_virtual_prefix(dapl, "someprefix") < 0) - TEST_ERROR - if (H5Pget_virtual_prefix(dapl, buffer, sizeof(buffer)) < 0) - TEST_ERROR - - if (HDstrcmp(buffer, "someprefix") != 0) - FAIL_PUTS_ERROR("vds prefix not set correctly"); + /* Skip tests for virtual dataset I/O when using non-native VOL connectors */ + if (!is_native && (config & TEST_IO_DIFFERENT_FILE)) { + SKIPPED(); + HDputs(" Not using native VOL connector"); + } + else { + h5_fixname(FILENAME[0], fapl, vfilename, sizeof vfilename); + h5_fixname(FILENAME[1], fapl, vfilename2, sizeof vfilename2); + h5_fixname(FILENAME[2], fapl, srcfilename, sizeof srcfilename); + h5_fixname_printf(FILENAME[2], fapl, srcfilename_map, sizeof srcfilename_map); + h5_fixname(FILENAME[3], fapl, srcfilenamepct, sizeof srcfilenamepct); + h5_fixname_printf(srcfilenamepct_map_orig, fapl, srcfilenamepct_map, sizeof srcfilenamepct_map); + + /* create tmp directory and get current working directory path */ + if (HDmkdir(TMPDIR, (mode_t)0755) < 0 && errno != EEXIST) + TEST_ERROR - /* Create source dataspace */ - if ((srcspace[0] = H5Screate_simple(2, dims, NULL)) < 0) - TEST_ERROR + /* Create DCPL */ + if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) + TEST_ERROR - /* Create virtual dataspace */ - if ((vspace[0] = H5Screate_simple(2, dims, NULL)) < 0) - TEST_ERROR + /* Set fill value */ + if (H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fill) < 0) + TEST_ERROR - /* Select all (should not be necessary, but just to be sure) */ - if (H5Sselect_all(srcspace[0]) < 0) - TEST_ERROR - if (H5Sselect_all(vspace[0]) < 0) - TEST_ERROR + /* Set prefix to a nonexistent directory, will be overwritten by environment variable */ + if ((dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0) + TEST_ERROR - /* Add virtual layout mapping */ - if (H5Pset_virtual(dcpl, vspace[0], config & TEST_IO_DIFFERENT_FILE ? srcfilename_map : ".", "src_dset", - srcspace[0]) < 0) - TEST_ERROR + if (H5Pset_virtual_prefix(dapl, "someprefix") < 0) + TEST_ERROR + if (H5Pget_virtual_prefix(dapl, buffer, sizeof(buffer)) < 0) + TEST_ERROR - /* Create virtual file */ - if ((vfile = H5Fcreate(vfilename2, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) - TEST_ERROR + if (HDstrcmp(buffer, "someprefix") != 0) + FAIL_PUTS_ERROR("vds prefix not set correctly"); - /* Create source file if requested */ - if (config & TEST_IO_DIFFERENT_FILE) { - if (NULL == HDgetcwd(buffer, 1024)) - TEST_ERROR - if (HDchdir(TMPDIR) < 0) + /* Create source dataspace */ + if ((srcspace[0] = H5Screate_simple(2, dims, NULL)) < 0) TEST_ERROR - if ((srcfile[0] = H5Fcreate(srcfilename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) + + /* Create virtual dataspace */ + if ((vspace[0] = H5Screate_simple(2, dims, NULL)) < 0) TEST_ERROR - if (HDchdir(buffer) < 0) + + /* Select all (should not be necessary, but just to be sure) */ + if (H5Sselect_all(srcspace[0]) < 0) TEST_ERROR - } - else { - srcfile[0] = vfile; - if (H5Iinc_ref(srcfile[0]) < 0) + if (H5Sselect_all(vspace[0]) < 0) TEST_ERROR - } - /* Create source dataset */ - if ((srcdset[0] = H5Dcreate2(srcfile[0], "src_dset", H5T_NATIVE_INT, srcspace[0], H5P_DEFAULT, - H5P_DEFAULT, H5P_DEFAULT)) < 0) - TEST_ERROR - - /* Create virtual dataset */ - if ((vdset = H5Dcreate2(vfile, "v_dset", H5T_NATIVE_INT, vspace[0], H5P_DEFAULT, dcpl, dapl)) < 0) - TEST_ERROR - - /* Populate write buffer */ - for (i = 0; i < (int)(sizeof(buf) / sizeof(buf[0])); i++) - for (j = 0; j < (int)(sizeof(buf[0]) / sizeof(buf[0][0])); j++) - buf[i][j] = (i * (int)(sizeof(buf[0]) / sizeof(buf[0][0]))) + j; - - /* Write data directly to source dataset */ - if (H5Dwrite(srcdset[0], H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf[0]) < 0) - TEST_ERROR + /* Add virtual layout mapping */ + if (H5Pset_virtual(dcpl, vspace[0], config & TEST_IO_DIFFERENT_FILE ? srcfilename_map : ".", "src_dset", + srcspace[0]) < 0) + TEST_ERROR - /* Close srcdset and srcfile if config option specified */ - if (config & TEST_IO_CLOSE_SRC) { - if (H5Dclose(srcdset[0]) < 0) + /* Create virtual file */ + if ((vfile = H5Fcreate(vfilename2, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR - srcdset[0] = -1; + /* Create source file if requested */ if (config & TEST_IO_DIFFERENT_FILE) { - if (H5Fclose(srcfile[0]) < 0) + if (NULL == HDgetcwd(buffer, 1024)) + TEST_ERROR + if (HDchdir(TMPDIR) < 0) + TEST_ERROR + if ((srcfile[0] = H5Fcreate(srcfilename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) + TEST_ERROR + if (HDchdir(buffer) < 0) + TEST_ERROR + } + else { + srcfile[0] = vfile; + if (H5Iinc_ref(srcfile[0]) < 0) TEST_ERROR - srcfile[0] = -1; } - } - /* Reopen virtual dataset and file if config option specified */ - if (config & TEST_IO_REOPEN_VIRT) { - if (H5Dclose(vdset) < 0) - TEST_ERROR - vdset = -1; - if (H5Fclose(vfile) < 0) + /* Create source dataset */ + if ((srcdset[0] = H5Dcreate2(srcfile[0], "src_dset", H5T_NATIVE_INT, srcspace[0], H5P_DEFAULT, + H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR - vfile = -1; - if ((vfile = H5Fopen(vfilename2, H5F_ACC_RDWR, fapl)) < 0) - TEST_ERROR - if ((vdset = H5Dopen2(vfile, "v_dset", dapl)) < 0) + + /* Create virtual dataset */ + if ((vdset = H5Dcreate2(vfile, "v_dset", H5T_NATIVE_INT, vspace[0], H5P_DEFAULT, dcpl, dapl)) < 0) TEST_ERROR - } - /* Read data through virtual dataset */ - HDmemset(rbuf[0], 0, sizeof(rbuf)); - if (H5Dread(vdset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rbuf[0]) < 0) - TEST_ERROR + /* Populate write buffer */ + for (i = 0; i < (int)(sizeof(buf) / sizeof(buf[0])); i++) + for (j = 0; j < (int)(sizeof(buf[0]) / sizeof(buf[0][0])); j++) + buf[i][j] = (i * (int)(sizeof(buf[0]) / sizeof(buf[0][0]))) + j; - /* Verify read data */ - for (i = 0; i < (int)(sizeof(buf) / sizeof(buf[0])); i++) { - for (j = 0; j < (int)(sizeof(buf[0]) / sizeof(buf[0][0])); j++) - if (rbuf[i][j] != buf[i][j]) { - TEST_ERROR - } - } + /* Write data directly to source dataset */ + if (H5Dwrite(srcdset[0], H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf[0]) < 0) + TEST_ERROR - /* Adjust write buffer */ - for (i = 0; i < (int)(sizeof(buf) / sizeof(buf[0])); i++) - for (j = 0; j < (int)(sizeof(buf[0]) / sizeof(buf[0][0])); j++) - buf[i][j] += (int)(sizeof(buf) / sizeof(buf[0][0])); + /* Close srcdset and srcfile if config option specified */ + if (config & TEST_IO_CLOSE_SRC) { + if (H5Dclose(srcdset[0]) < 0) + TEST_ERROR + srcdset[0] = -1; - /* Write data through virtual dataset */ - if (H5Dwrite(vdset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf[0]) < 0) - TEST_ERROR + if (config & TEST_IO_DIFFERENT_FILE) { + if (H5Fclose(srcfile[0]) < 0) + TEST_ERROR + srcfile[0] = -1; + } + } - /* Reopen srcdset and srcfile if config option specified */ - if (config & TEST_IO_CLOSE_SRC) { - if (config & TEST_IO_DIFFERENT_FILE) { - if (NULL == HDgetcwd(buffer, 1024)) + /* Reopen virtual dataset and file if config option specified */ + if (config & TEST_IO_REOPEN_VIRT) { + if (H5Dclose(vdset) < 0) TEST_ERROR - if (HDchdir(TMPDIR) < 0) + vdset = -1; + if (H5Fclose(vfile) < 0) TEST_ERROR - if ((srcfile[0] = H5Fopen(srcfilename, H5F_ACC_RDONLY, fapl)) < 0) + vfile = -1; + if ((vfile = H5Fopen(vfilename2, H5F_ACC_RDWR, fapl)) < 0) TEST_ERROR - if (HDchdir(buffer) < 0) + if ((vdset = H5Dopen2(vfile, "v_dset", dapl)) < 0) TEST_ERROR } - if ((srcdset[0] = H5Dopen2(srcfile[0], "src_dset", H5P_DEFAULT)) < 0) + + /* Read data through virtual dataset */ + HDmemset(rbuf[0], 0, sizeof(rbuf)); + if (H5Dread(vdset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rbuf[0]) < 0) TEST_ERROR - } - /* Read data directly from source dataset */ - HDmemset(rbuf[0], 0, sizeof(rbuf)); - if (H5Dread(srcdset[0], H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rbuf[0]) < 0) - TEST_ERROR + /* Verify read data */ + for (i = 0; i < (int)(sizeof(buf) / sizeof(buf[0])); i++) { + for (j = 0; j < (int)(sizeof(buf[0]) / sizeof(buf[0][0])); j++) + if (rbuf[i][j] != buf[i][j]) { + TEST_ERROR + } + } - /* Verify read data */ - for (i = 0; i < (int)(sizeof(buf) / sizeof(buf[0])); i++) - for (j = 0; j < (int)(sizeof(buf[0]) / sizeof(buf[0][0])); j++) - if (rbuf[i][j] != buf[i][j]) + /* Adjust write buffer */ + for (i = 0; i < (int)(sizeof(buf) / sizeof(buf[0])); i++) + for (j = 0; j < (int)(sizeof(buf[0]) / sizeof(buf[0][0])); j++) + buf[i][j] += (int)(sizeof(buf) / sizeof(buf[0][0])); + + /* Write data through virtual dataset */ + if (H5Dwrite(vdset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf[0]) < 0) + TEST_ERROR + + /* Reopen srcdset and srcfile if config option specified */ + if (config & TEST_IO_CLOSE_SRC) { + if (config & TEST_IO_DIFFERENT_FILE) { + if (NULL == HDgetcwd(buffer, 1024)) + TEST_ERROR + if (HDchdir(TMPDIR) < 0) + TEST_ERROR + if ((srcfile[0] = H5Fopen(srcfilename, H5F_ACC_RDONLY, fapl)) < 0) + TEST_ERROR + if (HDchdir(buffer) < 0) + TEST_ERROR + } + if ((srcdset[0] = H5Dopen2(srcfile[0], "src_dset", H5P_DEFAULT)) < 0) TEST_ERROR + } - /* Close */ - if (H5Dclose(vdset) < 0) - TEST_ERROR - vdset = -1; - if (H5Dclose(srcdset[0]) < 0) - TEST_ERROR - srcdset[0] = -1; - if (H5Fclose(srcfile[0]) < 0) - TEST_ERROR - srcfile[0] = -1; - if (H5Fclose(vfile) < 0) - TEST_ERROR - vfile = -1; - if (H5Sclose(srcspace[0]) < 0) - TEST_ERROR - srcspace[0] = -1; - if (H5Sclose(vspace[0]) < 0) - TEST_ERROR - vspace[0] = -1; - if (H5Pclose(dapl) < 0) - TEST_ERROR - dapl = -1; - if (H5Pclose(dcpl) < 0) - TEST_ERROR - dcpl = -1; + /* Read data directly from source dataset */ + HDmemset(rbuf[0], 0, sizeof(rbuf)); + if (H5Dread(srcdset[0], H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rbuf[0]) < 0) + TEST_ERROR + + /* Verify read data */ + for (i = 0; i < (int)(sizeof(buf) / sizeof(buf[0])); i++) + for (j = 0; j < (int)(sizeof(buf[0]) / sizeof(buf[0][0])); j++) + if (rbuf[i][j] != buf[i][j]) + TEST_ERROR + + /* Close */ + if (H5Dclose(vdset) < 0) + TEST_ERROR + vdset = -1; + if (H5Dclose(srcdset[0]) < 0) + TEST_ERROR + srcdset[0] = -1; + if (H5Fclose(srcfile[0]) < 0) + TEST_ERROR + srcfile[0] = -1; + if (H5Fclose(vfile) < 0) + TEST_ERROR + vfile = -1; + if (H5Sclose(srcspace[0]) < 0) + TEST_ERROR + srcspace[0] = -1; + if (H5Sclose(vspace[0]) < 0) + TEST_ERROR + vspace[0] = -1; + if (H5Pclose(dapl) < 0) + TEST_ERROR + dapl = -1; + if (H5Pclose(dcpl) < 0) + TEST_ERROR + dcpl = -1; + + PASSED(); + } - PASSED(); return 0; error: |