summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLarry Knox <lrknox@hdfgroup.org>2019-01-05 13:41:12 (GMT)
committerLarry Knox <lrknox@hdfgroup.org>2019-01-05 13:41:12 (GMT)
commitcceb9f06b8f213ef1cb360a4ef900536669a8dad (patch)
tree1b0a48f66337d7d0c8f7e9a31a9663e8ce0754e5 /test
parentf9736d817e4b2e1c5ced39b232323c3b3f87d46a (diff)
parent0e34f0feaaeb6d2286f87f695f25fae45c070a42 (diff)
downloadhdf5-cceb9f06b8f213ef1cb360a4ef900536669a8dad.zip
hdf5-cceb9f06b8f213ef1cb360a4ef900536669a8dad.tar.gz
hdf5-cceb9f06b8f213ef1cb360a4ef900536669a8dad.tar.bz2
Merging in latest from upstream (HDFFV/hdf5:refs/heads/develop)
* commit '0e34f0feaaeb6d2286f87f695f25fae45c070a42': (26 commits) HDFFV-10664 update reference file HDFFV-10664 update reference files HDFFV-10664 add missing function and check for restriction Remove "bad" statements at end of TEST_ERROR. Formerly arguments to FAIL_PUTS_ERROR Add RELEASE.txt entry for HDFFV-10596. Add semicolon at end of TEST_ERROR() invocation for consistency. Uninstall should remove the libhdf5_hl_fortran links. Add symlinks named libhdf5_hl_fortran* to libhdf5hl_fortran in Makefile.am to match cmake install and the name pattern for other hl lib files. Change FAIL_PUTS_ERROR to TEST_ERROR. Cleaned up the parallel flush test and set t_pflush1 to always fail. Also set CMake to handle this. Update calls: H5Dcreate to H5Dcreate2, H5Acreate to H5Acreate2. Removed a comment. Fix comment Align H5Lcreate_ud behavior with documentation for NULL udata pointer Update toolchain comment Use c99 standard cmake variable Add PGI toolchain Correction based on code review. HDFFV-10664 add check for state before set call HDFFV-10546 refactor variable name ...
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt1
-rw-r--r--test/CMakeTests.cmake21
-rw-r--r--test/Makefile.am16
-rw-r--r--test/ShellTests.cmake3
-rw-r--r--test/del_many_dense_attrs.c203
-rw-r--r--test/dsets.c41
-rw-r--r--test/links.c6
-rw-r--r--test/ohdr.c42
-rw-r--r--test/testabort_fail.sh.in (renamed from test/test_filenotclosed.sh.in)39
9 files changed, 311 insertions, 61 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 69afb85..0d67485 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -374,6 +374,7 @@ set (H5_CHECK_TESTS
atomic_reader
links_env
filenotclosed
+ del_many_dense_attrs
flushrefresh
)
diff --git a/test/CMakeTests.cmake b/test/CMakeTests.cmake
index 9816543..c0d4813 100644
--- a/test/CMakeTests.cmake
+++ b/test/CMakeTests.cmake
@@ -520,6 +520,7 @@ set (test_CLEANFILES
flushrefresh_VERIFICATION_CHECKPOINT2
flushrefresh_VERIFICATION_DONE
filenotclosed.h5
+ del_many_dense_attrs.h5
atomic_data
accum_swmr_big.h5
ohdr_swmr.h5
@@ -796,6 +797,7 @@ set_tests_properties (H5TEST-tcheck_version-release PROPERTIES
# atomic_reader
# links_env
# filenotclosed
+# del_many_dense_attrs
# flushrefresh
##############################################################################
# autotools script tests
@@ -803,7 +805,7 @@ set_tests_properties (H5TEST-tcheck_version-release PROPERTIES
# NOT CONVERTED accum_swmr_reader is used by accum.c.
# NOT CONVERTED atomic_writer and atomic_reader are standalone programs.
# links_env is used by testlinks_env.sh
-# filenotclosed is used by test_filenotclosed.sh
+# filenotclosed and del_many_dense_attrs are used by testabort_fail.sh
# NOT CONVERTED flushrefresh is used by testflushrefresh.sh.
# NOT CONVERTED use_append_chunk, use_append_mchunks and use_disable_mdc_flushes are used by test_usecases.sh
# NOT CONVERTED swmr_* files (besides swmr.c) are used by testswmr.sh.
@@ -830,6 +832,23 @@ set_tests_properties (H5TEST-filenotclosed PROPERTIES
WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
)
+#-- Adding test for del_many_dense_attrs
+add_test (
+ NAME H5TEST-clear-del_many_dense_attrs-objects
+ COMMAND ${CMAKE_COMMAND}
+ -E remove
+ del_many_dense_attrs.h5
+ WORKING_DIRECTORY
+ ${HDF5_TEST_BINARY_DIR}/H5TEST
+)
+set_tests_properties (H5TEST-clear-del_many_dense_attrs-objects PROPERTIES FIXTURES_SETUP del_many_dense_attrs_clear_objects)
+add_test (NAME H5TEST-del_many_dense_attrs COMMAND $<TARGET_FILE:del_many_dense_attrs>)
+set_tests_properties (H5TEST-del_many_dense_attrs PROPERTIES
+ FIXTURES_REQUIRED del_many_dense_attrs_clear_objects
+ ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST"
+ WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
+)
+
#-- Adding test for err_compat
if (HDF5_ENABLE_DEPRECATED_SYMBOLS)
add_test (NAME H5TEST-clear-err_compat-objects
diff --git a/test/Makefile.am b/test/Makefile.am
index 1a232ab..88dc542 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -29,12 +29,13 @@ AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_builddir)/src
# testflushrefresh.sh: flushrefresh
# testswmr.sh: swmr*
# testvdsswmr.sh: vds_swmr*
-# test_filenotclosed.sh: filenotclosed.c
+# testabort_fail.sh: filenotclosed.c and del_many_dense_attrs.c
# test_filter_plugin.sh: filter_plugin.c
# test_usecases.sh: use_append_chunk, use_append_mchunks, use_disable_mdc_flushes
-TEST_SCRIPT = testerror.sh testlibinfo.sh testcheck_version.sh testlinks_env.sh test_filenotclosed.sh\
- testswmr.sh testvdsswmr.sh testflushrefresh.sh test_usecases.sh
-SCRIPT_DEPEND = error_test$(EXEEXT) err_compat$(EXEEXT) links_env$(EXEEXT) filenotclosed$(EXEEXT) \
+TEST_SCRIPT = testerror.sh testlibinfo.sh testcheck_version.sh testlinks_env.sh \
+ testswmr.sh testvdsswmr.sh testflushrefresh.sh test_usecases.sh testabort_fail.sh
+SCRIPT_DEPEND = error_test$(EXEEXT) err_compat$(EXEEXT) links_env$(EXEEXT) \
+ filenotclosed$(EXEEXT) del_many_dense_attrs$(EXEEXT) \
flushrefresh$(EXEEXT) use_append_chunk$(EXEEXT) use_append_mchunks$(EXEEXT) use_disable_mdc_flushes$(EXEEXT) \
swmr_generator$(EXEEXT) swmr_reader$(EXEEXT) swmr_writer$(EXEEXT) \
swmr_remove_reader$(EXEEXT) swmr_remove_writer$(EXEEXT) swmr_addrem_writer$(EXEEXT) \
@@ -68,7 +69,7 @@ TEST_PROG= testhdf5 \
# accum_swmr_reader is used by accum.c.
# atomic_writer and atomic_reader are standalone programs.
# links_env is used by testlinks_env.sh
-# filenotclosed is used by test_filenotclosed.sh
+# filenotclosed and del_many_dense_attrs are used by testabort_fail.sh
# flushrefresh is used by testflushrefresh.sh.
# use_append_chunk, use_append_mchunks and use_disable_mdc_flushes are used by test_usecases.sh
# swmr_* files (besides swmr.c) are used by testswmr.sh.
@@ -78,7 +79,8 @@ TEST_PROG= testhdf5 \
# and this lets automake keep all its test programs in one place.
check_PROGRAMS=$(TEST_PROG) error_test err_compat tcheck_version \
testmeta accum_swmr_reader atomic_writer atomic_reader \
- links_env filenotclosed flushrefresh use_append_chunk use_append_mchunks use_disable_mdc_flushes \
+ links_env filenotclosed del_many_dense_attrs flushrefresh \
+ use_append_chunk use_append_mchunks use_disable_mdc_flushes \
swmr_generator swmr_start_write swmr_reader swmr_writer swmr_remove_reader \
swmr_remove_writer swmr_addrem_writer swmr_sparse_reader swmr_sparse_writer \
swmr_check_compat_vfd vds_swmr_gen vds_swmr_reader vds_swmr_writer
@@ -221,7 +223,7 @@ use_disable_mdc_flushes_SOURCES=use_disable_mdc_flushes.c
# Temporary files.
DISTCLEANFILES=testerror.sh testlibinfo.sh testcheck_version.sh testlinks_env.sh test_filter_plugin.sh \
- testswmr.sh testvdsswmr.sh test_usecases.sh testflushrefresh.sh test_filenotclosed.sh \
+ testswmr.sh testvdsswmr.sh test_usecases.sh testflushrefresh.sh testabort_fail.sh \
test_vol_plugin.sh
include $(top_srcdir)/config/conclude.am
diff --git a/test/ShellTests.cmake b/test/ShellTests.cmake
index 58dc85d..98f3daf 100644
--- a/test/ShellTests.cmake
+++ b/test/ShellTests.cmake
@@ -171,6 +171,7 @@ if (UNIX)
# atomic_writer
# atomic_reader
# filenotclosed
+ # del_many_dense_attrs
# flushrefresh
##############################################################################
# autotools script tests
@@ -178,7 +179,7 @@ if (UNIX)
# NOT CONVERTED accum_swmr_reader is used by accum.c.
# NOT CONVERTED atomic_writer and atomic_reader are standalone programs.
# links_env is used by testlinks_env.sh
- # filenotclosed is used by test_filenotclosed.sh
+ # filenotclosed and del_many_dense_attrs are used by testabort_fail.sh
# NOT CONVERTED flushrefresh is used by testflushrefresh.sh.
# NOT CONVERTED use_append_chunk, use_append_mchunks and use_disable_mdc_flushes are used by test_usecases.sh
# NOT CONVERTED swmr_* files (besides swmr.c) are used by testswmr.sh.
diff --git a/test/del_many_dense_attrs.c b/test/del_many_dense_attrs.c
new file mode 100644
index 0000000..bbae48d
--- /dev/null
+++ b/test/del_many_dense_attrs.c
@@ -0,0 +1,203 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * Purpose: Test to verify that the infinite loop closing library/abort failure
+ * is fixed when the application creates and removes dense attributes
+ * (See HDFFV-10659).
+ */
+
+
+#include "h5test.h"
+
+/* The test file name */
+const char *FILENAME[] = {
+ "del_many_dense_attrs",
+ NULL
+};
+
+#define ATTR_COUNT 64 /* The number of attributes */
+
+/*-------------------------------------------------------------------------
+ * Function: catch_signal
+ *
+ * Purpose: The signal handler to catch the SIGABRT signal.
+ *
+ * Return: No return
+ *
+ * Programmer: Vailin Choi
+ *
+ *-------------------------------------------------------------------------
+ */
+static void catch_signal(int H5_ATTR_UNUSED signo)
+{
+ HDexit(1);
+} /* catch_signal() */
+
+
+/*-------------------------------------------------------------------------
+ * Function: main
+ *
+ * Purpose: Test to verify that the infinite loop closing library/abort failure
+ * is fixed when the application creates and removes dense attributes
+ * (See HDFFV-10659).
+ *
+ * Return: Success: exit(EXIT_SUCCESS)
+ * Failure: exit(EXIT_FAILURE)
+ *
+ * Programmer: Vailin Choi; Dec 2018
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+main(void)
+{
+ hid_t fid = -1; /* HDF5 File ID */
+ hid_t gid = -1; /* Group ID */
+ hid_t sid = -1; /* Dataspace ID */
+ hid_t aid = -1; /* Attribute ID */
+ hid_t tid = -1; /* Datatype ID */
+ hid_t fapl = -1; /* File access property lists */
+ hid_t gcpl = -1; /* Group creation property list */
+ char aname[50]; /* Name of attribute */
+ char *basename="attr"; /* Name prefix for attribute */
+ char filename[100]; /* File name */
+ int i; /* Local index variable */
+
+ /* Testing setup */
+ h5_reset();
+
+ /* To exit from the file for SIGABRT signal */
+ if(HDsignal(SIGABRT, catch_signal) == SIG_ERR)
+ TEST_ERROR
+
+ fapl = h5_fileaccess();
+ h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
+
+ /* Set to latest format */
+ if(H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
+ TEST_ERROR
+
+ /* Create the file */
+ if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
+ TEST_ERROR
+
+ /* Close the file */
+ if(H5Fclose(fid) < 0)
+ TEST_ERROR
+
+ /* Re-open the file */
+ if((fid = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0)
+ TEST_ERROR
+
+ /* Create the group creation property list */
+ if((gcpl = H5Pcreate(H5P_GROUP_CREATE)) < 0)
+ TEST_ERROR
+
+ /* Set to use dense storage for all attributes on the group */
+ if(H5Pset_attr_phase_change(gcpl, 0, 0) < 0)
+ TEST_ERROR
+
+ /* Create the group in the file */
+ if((gid = H5Gcreate2(fid, "group", H5P_DEFAULT, gcpl, H5P_DEFAULT)) < 0)
+ TEST_ERROR
+
+ /* Create dataspace */
+ if((sid = H5Screate(H5S_SCALAR)) < 0)
+ TEST_ERROR
+
+ /* Get a copy of the datatype */
+ if((tid = H5Tcopy(H5T_NATIVE_FLOAT)) < 0)
+ TEST_ERROR
+
+ /* Create attributes in the group */
+ for(i = ATTR_COUNT; i >= 0; i--) {
+ /* Set up the attribute name */
+ HDsprintf(aname, "%s%d", basename, i);
+
+ /* Create the attribute */
+ if((aid = H5Acreate2(gid, aname, tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+ TEST_ERROR
+
+ /* Write to the attribute */
+ if(H5Awrite(aid, tid, &i) < 0)
+ TEST_ERROR
+
+ /* Close the attribute */
+ if(H5Aclose(aid) < 0)
+ TEST_ERROR
+ }
+
+ /* Close the datatype */
+ if(H5Tclose(tid) < 0)
+ TEST_ERROR
+
+ /* Close the dataspace */
+ if(H5Sclose(sid) < 0)
+ TEST_ERROR
+
+ /* Close the group */
+ if(H5Gclose(gid) < 0)
+ TEST_ERROR
+
+ /* Close the group creation property list */
+ if(H5Pclose(gcpl) < 0)
+ TEST_ERROR
+
+ /* Close the file */
+ if(H5Fclose(fid) < 0)
+ TEST_ERROR
+
+ /* Re-open the file */
+ if((fid = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0)
+ TEST_ERROR
+
+ /* Open the group */
+ if((gid = H5Gopen(fid, "group", H5P_DEFAULT)) < 0)
+ TEST_ERROR
+
+ /* Delete the attributes */
+ for (i = 0; i <= ATTR_COUNT; i++) {
+ /* Set up the attribute name */
+ HDsprintf(aname, "%s%d", basename, i);
+
+ /* Delete the attribute */
+ if(H5Adelete(gid, aname) < 0)
+ TEST_ERROR
+ } /* end for */
+
+ /* Close the group */
+ if(H5Gclose(gid) < 0)
+ TEST_ERROR
+
+ /* Close the file */
+ if(H5Fclose(fid) < 0)
+ TEST_ERROR
+
+ h5_cleanup(FILENAME, fapl);
+
+ return(EXIT_SUCCESS);
+
+error:
+ H5E_BEGIN_TRY {
+ H5Gclose(gid);
+ H5Sclose(sid);
+ H5Tclose(tid);
+ H5Aclose(aid);
+ H5Fclose(fid);
+ H5Pclose(gcpl);
+ H5Pclose(fapl);
+ } H5E_END_TRY
+
+ return EXIT_FAILURE;
+}
diff --git a/test/dsets.c b/test/dsets.c
index e63878c..5de9cfa 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -13072,15 +13072,13 @@ test_object_header_minimization_dcpl(void)
/*********/
if(NULL == h5_fixname(OHMIN_FILENAME_A, H5P_DEFAULT, filename, sizeof(filename)))
- FAIL_PUTS_ERROR("unable to prepare filename")
+ TEST_ERROR
file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- if (0 > file_id)
- FAIL_PUTS_ERROR("unable to create test file\n");
+ if (0 > file_id) TEST_ERROR
dcpl_id = H5Pcreate(H5P_DATASET_CREATE);
- if (0 > dcpl_id)
- FAIL_PUTS_ERROR("unable to create DCPL\n");
+ if (0 > dcpl_id) TEST_ERROR
/*********/
/* TESTS */
@@ -13088,28 +13086,23 @@ test_object_header_minimization_dcpl(void)
/* default value (not set explicitly)
*/
- if (H5Pget_dset_no_attrs_hint(dcpl_id, &minimize) == FAIL)
- FAIL_PUTS_ERROR("unable to get minimize value\n");
+ if (H5Pget_dset_no_attrs_hint(dcpl_id, &minimize) == FAIL) TEST_ERROR
if (FALSE != minimize)
- FAIL_PUTS_ERROR("Expected FALSE default but was not!\n");
+ TEST_ERROR
/* FALSE-set value
*/
- if (H5Pset_dset_no_attrs_hint(dcpl_id, FALSE) == FAIL)
- FAIL_PUTS_ERROR("unable to set minimize value to FALSE\n");
- if (H5Pget_dset_no_attrs_hint(dcpl_id, &minimize) == FAIL)
- FAIL_PUTS_ERROR("unable to get minimize value\n");
+ if (H5Pset_dset_no_attrs_hint(dcpl_id, FALSE) == FAIL) TEST_ERROR
+ if (H5Pget_dset_no_attrs_hint(dcpl_id, &minimize) == FAIL) TEST_ERROR
if (FALSE != minimize)
- FAIL_PUTS_ERROR("Expected FALSE default but was not!\n");
+ TEST_ERROR
/* TRUE-set value
*/
- if (H5Pset_dset_no_attrs_hint(dcpl_id, TRUE) == FAIL)
- FAIL_PUTS_ERROR("unable to set minimize value to TRUE\n");
- if (H5Pget_dset_no_attrs_hint(dcpl_id, &minimize) == FAIL)
- FAIL_PUTS_ERROR("unable to get minimize value\n");
+ if (H5Pset_dset_no_attrs_hint(dcpl_id, TRUE) == FAIL) TEST_ERROR
+ if (H5Pget_dset_no_attrs_hint(dcpl_id, &minimize) == FAIL) TEST_ERROR
if (TRUE != minimize)
- FAIL_PUTS_ERROR("Expected TRUE default but was not!\n");
+ TEST_ERROR
/* error cases
*/
@@ -13117,35 +13110,35 @@ test_object_header_minimization_dcpl(void)
ret = H5Pget_dset_no_attrs_hint(-1, &minimize);
} H5E_END_TRY;
if (ret == SUCCEED)
- FAIL_PUTS_ERROR("Invalid DCPL ID should fail\n");
+ TEST_ERROR /* Invalid DCPL ID should fail */
H5E_BEGIN_TRY {
ret = H5Pset_dset_no_attrs_hint(-1, FALSE);
} H5E_END_TRY;
if (ret == SUCCEED)
- FAIL_PUTS_ERROR("Invalid DCPL ID should fail\n");
+ TEST_ERROR /* Invalid DCPL ID should fail */
H5E_BEGIN_TRY {
ret = H5Pset_dset_no_attrs_hint(-1, TRUE);
} H5E_END_TRY;
if (ret == SUCCEED)
- FAIL_PUTS_ERROR("Invalid DCPL ID should fail\n");
+ TEST_ERROR /* Invalid DCPL ID should fail */
H5E_BEGIN_TRY {
ret = H5Pget_dset_no_attrs_hint(dcpl_id, NULL);
} H5E_END_TRY;
if (ret == SUCCEED)
- FAIL_PUTS_ERROR("NULL out pointer should fail\n");
+ TEST_ERROR /* NULL out pointer should fail */
/************/
/* TEARDOWN */
/************/
if (H5Fclose(file_id) == FAIL)
- FAIL_PUTS_ERROR("can't close FILE");
+ TEST_ERROR
if (H5Pclose(dcpl_id) == FAIL)
- FAIL_PUTS_ERROR("unable to close DCPL\n");
+ TEST_ERROR
PASSED();
return SUCCEED;
diff --git a/test/links.c b/test/links.c
index b09ddb1..520f784 100644
--- a/test/links.c
+++ b/test/links.c
@@ -8823,6 +8823,12 @@ ud_link_errors(hid_t fapl, hbool_t new_format)
TEST_ERROR
} H5E_END_TRY
+ /* Try to create a link with H5Lcreate_ud that has a NULL udata pointer, but a non-zero udata_size value */
+ H5E_BEGIN_TRY {
+ if(H5Lcreate_ud(fid, "/ud_link", (H5L_type_t)UD_CBFAIL_TYPE, NULL, 1, H5P_DEFAULT, H5P_DEFAULT) >= 0)
+ TEST_ERROR
+ } H5E_END_TRY;
+
/* Create a user-defined link to the group. */
strcpy(group_name, "/group");
if(H5Lcreate_ud(fid, "/ud_link", (H5L_type_t)UD_CBFAIL_TYPE, &group_name, HDstrlen(group_name) + 1, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
diff --git a/test/ohdr.c b/test/ohdr.c
index 042a81b..57edaf5 100644
--- a/test/ohdr.c
+++ b/test/ohdr.c
@@ -753,7 +753,7 @@ put_attribute(hid_t loc_id, const char *attrname, const void *attrvalue, hid_t d
{
if((*attribute_id) < 0) {
hid_t id = -1;
- id = H5Acreate(loc_id, attrname, datatype_id, dataspace_id, H5P_DEFAULT, H5P_DEFAULT);
+ id = H5Acreate2(loc_id, attrname, datatype_id, dataspace_id, H5P_DEFAULT, H5P_DEFAULT);
if(id < 0)
return FAIL;
*attribute_id = id;
@@ -770,7 +770,7 @@ count_attributes(hid_t dset_id)
{
H5O_info_t info;
- if(H5Oget_info(dset_id, &info, H5O_INFO_ALL) < 0)
+ if(H5Oget_info2(dset_id, &info, H5O_INFO_ALL) < 0)
return -1;
else
return (int)info.num_attrs; /* should never exceed int bounds */
@@ -879,10 +879,10 @@ test_minimized_dset_ohdr_attribute_addition(hid_t fapl_id)
} H5E_END_TRY;
if(count != -1) TEST_ERROR
- dset_id = H5Dcreate(file_id, "dataset", int_type_id, dspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+ dset_id = H5Dcreate2(file_id, "dataset", int_type_id, dspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
if(dset_id < 0) TEST_ERROR
- mindset_id = H5Dcreate(file_id, "mindataset", int_type_id, dspace_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
+ mindset_id = H5Dcreate2(file_id, "mindataset", int_type_id, dspace_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
if(mindset_id < 0) TEST_ERROR
/********************
@@ -1121,13 +1121,13 @@ test_minimized_dset_ohdr_size_comparisons(hid_t fapl_id)
file_f_id = H5Fcreate(filename_a, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id);
if(file_f_id < 0) TEST_ERROR
- dset_f_x_id = H5Dcreate(file_f_id, "default", int_type_id, dspace_id, H5P_DEFAULT, dcpl_default, H5P_DEFAULT);
+ dset_f_x_id = H5Dcreate2(file_f_id, "default", int_type_id, dspace_id, H5P_DEFAULT, dcpl_default, H5P_DEFAULT);
if(dset_f_x_id < 0) TEST_ERROR
- dset_f_N_id = H5Dcreate(file_f_id, "dsetNOT", int_type_id, dspace_id, H5P_DEFAULT, dcpl_dontmin, H5P_DEFAULT);
+ dset_f_N_id = H5Dcreate2(file_f_id, "dsetNOT", int_type_id, dspace_id, H5P_DEFAULT, dcpl_dontmin, H5P_DEFAULT);
if(dset_f_N_id < 0) TEST_ERROR
- dset_f_Y_id = H5Dcreate(file_f_id, "dsetMIN", int_type_id, dspace_id, H5P_DEFAULT, dcpl_minimize, H5P_DEFAULT);
+ dset_f_Y_id = H5Dcreate2(file_f_id, "dsetMIN", int_type_id, dspace_id, H5P_DEFAULT, dcpl_minimize, H5P_DEFAULT);
if(dset_f_x_id < 0) TEST_ERROR
file_F_id = H5Fcreate(filename_b, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id);
@@ -1135,13 +1135,13 @@ test_minimized_dset_ohdr_size_comparisons(hid_t fapl_id)
ret = H5Fset_dset_no_attrs_hint(file_F_id, TRUE);
if(ret < 0) TEST_ERROR
- dset_F_x_id = H5Dcreate(file_F_id, "default", int_type_id, dspace_id, H5P_DEFAULT, dcpl_default, H5P_DEFAULT);
+ dset_F_x_id = H5Dcreate2(file_F_id, "default", int_type_id, dspace_id, H5P_DEFAULT, dcpl_default, H5P_DEFAULT);
if(dset_F_x_id < 0) TEST_ERROR
- dset_F_N_id = H5Dcreate(file_F_id, "dsetNOT", int_type_id, dspace_id, H5P_DEFAULT, dcpl_dontmin, H5P_DEFAULT);
+ dset_F_N_id = H5Dcreate2(file_F_id, "dsetNOT", int_type_id, dspace_id, H5P_DEFAULT, dcpl_dontmin, H5P_DEFAULT);
if(dset_F_N_id < 0) TEST_ERROR
- dset_F_Y_id = H5Dcreate(file_F_id, "dsetMIN", int_type_id, dspace_id, H5P_DEFAULT, dcpl_minimize, H5P_DEFAULT);
+ dset_F_Y_id = H5Dcreate2(file_F_id, "dsetMIN", int_type_id, dspace_id, H5P_DEFAULT, dcpl_minimize, H5P_DEFAULT);
if(dset_F_Y_id < 0) TEST_ERROR
/*********
@@ -1276,16 +1276,16 @@ test_minimized_dset_ohdr_with_filter(hid_t fapl_id)
file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id);
if(file_id < 0) TEST_ERROR
- dset_xx_id = H5Dcreate(file_id, "xx", dtype_id, dspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+ dset_xx_id = H5Dcreate2(file_id, "xx", dtype_id, dspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
if(dset_xx_id < 0) TEST_ERROR
- dset_mx_id = H5Dcreate(file_id, "Mx", dtype_id, dspace_id, H5P_DEFAULT, dcpl_mx_id, H5P_DEFAULT);
+ dset_mx_id = H5Dcreate2(file_id, "Mx", dtype_id, dspace_id, H5P_DEFAULT, dcpl_mx_id, H5P_DEFAULT);
if(dset_mx_id < 0) TEST_ERROR
- dset_xZ_id = H5Dcreate(file_id, "xZ", dtype_id, dspace_id, H5P_DEFAULT, dcpl_xZ_id, H5P_DEFAULT);
+ dset_xZ_id = H5Dcreate2(file_id, "xZ", dtype_id, dspace_id, H5P_DEFAULT, dcpl_xZ_id, H5P_DEFAULT);
if(dset_xZ_id < 0) TEST_ERROR
- dset_mZ_id = H5Dcreate(file_id, "MZ", dtype_id, dspace_id, H5P_DEFAULT, dcpl_mZ_id, H5P_DEFAULT);
+ dset_mZ_id = H5Dcreate2(file_id, "MZ", dtype_id, dspace_id, H5P_DEFAULT, dcpl_mZ_id, H5P_DEFAULT);
if(dset_mZ_id < 0) TEST_ERROR
/*********
@@ -1435,18 +1435,18 @@ test_minimized_dset_ohdr_modification_times(hid_t _fapl_id)
file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id);
if(file_id < 0) TEST_ERROR
- dset_xx_id = H5Dcreate( file_id, "xx", dtype_id, dspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+ dset_xx_id = H5Dcreate2( file_id, "xx", dtype_id, dspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
if(dset_xx_id < 0) TEST_ERROR
- dset_mx_id = H5Dcreate(file_id, "mx", dtype_id, dspace_id, H5P_DEFAULT, dcpl_mx_id, H5P_DEFAULT);
+ dset_mx_id = H5Dcreate2(file_id, "mx", dtype_id, dspace_id, H5P_DEFAULT, dcpl_mx_id, H5P_DEFAULT);
if(dset_mx_id < 0) TEST_ERROR
- dset_xT_id = H5Dcreate(file_id, "xT", dtype_id, dspace_id, H5P_DEFAULT, dcpl_xT_id, H5P_DEFAULT);
+ dset_xT_id = H5Dcreate2(file_id, "xT", dtype_id, dspace_id, H5P_DEFAULT, dcpl_xT_id, H5P_DEFAULT);
if(dset_xT_id < 0) TEST_ERROR
- dset_mT_id = H5Dcreate(file_id, "mT", dtype_id, dspace_id, H5P_DEFAULT, dcpl_mT_id, H5P_DEFAULT);
+ dset_mT_id = H5Dcreate2(file_id, "mT", dtype_id, dspace_id, H5P_DEFAULT, dcpl_mT_id, H5P_DEFAULT);
if(dset_mT_id < 0) TEST_ERROR
- dset_mN_id = H5Dcreate(file_id, "mN", dtype_id, dspace_id, H5P_DEFAULT, dcpl_mN_id, H5P_DEFAULT);
+ dset_mN_id = H5Dcreate2(file_id, "mN", dtype_id, dspace_id, H5P_DEFAULT, dcpl_mN_id, H5P_DEFAULT);
if(dset_mN_id < 0) TEST_ERROR
/* ----- *
@@ -1561,7 +1561,7 @@ test_minimized_dset_ohdr_fillvalue_backwards_compatability(hid_t _fapl_id)
file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id);
if(file_id < 0) TEST_ERROR
- dset_0_id = H5Dcreate(file_id, "fullrange", dtype_id, dspace_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
+ dset_0_id = H5Dcreate2(file_id, "fullrange", dtype_id, dspace_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
if(dset_0_id < 0) TEST_ERROR
/* Close file and re-open with different libver bounds.
@@ -1576,7 +1576,7 @@ test_minimized_dset_ohdr_fillvalue_backwards_compatability(hid_t _fapl_id)
file_id = H5Fopen(filename, H5F_ACC_RDWR, fapl_id);
if(file_id < 0) TEST_ERROR
- dset_1_id = H5Dcreate(file_id, "upperrange", dtype_id, dspace_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
+ dset_1_id = H5Dcreate2(file_id, "upperrange", dtype_id, dspace_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
if(dset_1_id < 0) TEST_ERROR
/* re-open "fullrange" dataset
diff --git a/test/test_filenotclosed.sh.in b/test/testabort_fail.sh.in
index 0b43c5b..925d8a4 100644
--- a/test/test_filenotclosed.sh.in
+++ b/test/testabort_fail.sh.in
@@ -13,6 +13,9 @@
#
# Test to verify that the assertion/abort failure is fixed when the application
# does not close the file. (See HDFFV-10160)
+#
+# Test to verify that the infinite loop closing library/abort failure is fixed
+# when the application creates and removes dense attributes (See HDFFV-10659)
srcdir=@srcdir@
@@ -20,22 +23,44 @@ nerrors=0
##############################################################################
##############################################################################
-### T H E T E S T ###
+### T H E T E S T S ###
##############################################################################
##############################################################################
-
+#
+#
echo "Testing file not closed assertion/abort failure"
TEST_NAME=filenotclosed # The test name
-TEST_BIN=`pwd`/$TEST_NAME # The path of the test binary
+TEST_BIN=`pwd`/$TEST_NAME # The path of the test binary
#
# Run the test
-#$RUNSERIAL $TEST_BIN >/dev/null 2>&1
-$RUNSERIAL $TEST_BIN 2>&1
+$RUNSERIAL $TEST_BIN >/dev/null 2>&1
exitcode=$?
if [ $exitcode -eq 0 ]; then
echo "Test PASSED"
else
+ echo "Test FAILED"
nerrors="`expr $nerrors + 1`"
- echo "***Error encountered***"
fi
-exit $nerrors
+#
+#
+echo "Testing infinite loop closing library/abort failure"
+TEST_NAME=del_many_dense_attrs # The test name
+TEST_BIN=`pwd`/$TEST_NAME # The path of the test binary
+# Run the test
+$RUNSERIAL $TEST_BIN >/dev/null 2>&1
+exitcode=$?
+if [ $exitcode -eq 0 ]; then
+ echo "Test PASSED"
+else
+ echo "Test FAILED"
+ nerrors="`expr $nerrors + 1`"
+fi
+#
+#
+if test $nerrors -eq 0 ; then
+ echo "All tests for abort failure passed."
+ exit 0
+else
+ echo "Tests for abort failure failed with $nerrors errors."
+ exit 1
+fi