summaryrefslogtreecommitdiffstats
path: root/src/H5Atest.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2006-12-19 20:18:26 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2006-12-19 20:18:26 (GMT)
commitde9088b6bb7969aade23f5af0d1e4e1806fcc0c4 (patch)
tree5f77b2172513805db28c2907f119abe513550295 /src/H5Atest.c
parenta75186cc511760578d8a9de722a16873371b6570 (diff)
downloadhdf5-de9088b6bb7969aade23f5af0d1e4e1806fcc0c4.zip
hdf5-de9088b6bb7969aade23f5af0d1e4e1806fcc0c4.tar.gz
hdf5-de9088b6bb7969aade23f5af0d1e4e1806fcc0c4.tar.bz2
[svn-r13079] Description:
Add more tests for checking that writing to shared attributes works correctly. (Looks like it still has a bug when dense storage is used, which I'll correct shortly). Add testing routine to shared message code, to retrieve reference count for a shared message. Add fractal heap 'op' callback for efficiently computing the hash value of an existing encoded message in the shared message fractal heap. Various minor cleanups and warning placations. Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
Diffstat (limited to 'src/H5Atest.c')
-rw-r--r--src/H5Atest.c150
1 files changed, 150 insertions, 0 deletions
diff --git a/src/H5Atest.c b/src/H5Atest.c
new file mode 100644
index 0000000..80348e8
--- /dev/null
+++ b/src/H5Atest.c
@@ -0,0 +1,150 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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 files COPYING and Copyright.html. COPYING can be found at the root *
+ * of the source code distribution tree; Copyright.html can be found at the *
+ * root level of an installed copy of the electronic HDF5 document set and *
+ * is linked from the top-level documents page. It can also be found at *
+ * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
+ * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*-------------------------------------------------------------------------
+ *
+ * Created: H5Aint.c
+ * Dec 18 2006
+ * Quincey Koziol <koziol@hdfgroup.org>
+ *
+ * Purpose: Internal routines for managing attributes.
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/****************/
+/* Module Setup */
+/****************/
+
+#define H5A_PACKAGE /*suppress error about including H5Apkg */
+#define H5A_TESTING /*suppress warning about H5A testing funcs*/
+#define H5SM_PACKAGE /*suppress error about including H5SMpkg */
+#define H5SM_TESTING /*suppress warning about H5SM testing funcs*/
+
+
+/***********/
+/* Headers */
+/***********/
+#include "H5private.h" /* Generic Functions */
+#include "H5Apkg.h" /* Attributes */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Iprivate.h" /* IDs */
+#include "H5SMpkg.h" /* Shared object header messages */
+
+
+/****************/
+/* Local Macros */
+/****************/
+
+
+/******************/
+/* Local Typedefs */
+/******************/
+
+
+/********************/
+/* Package Typedefs */
+/********************/
+
+
+/********************/
+/* Local Prototypes */
+/********************/
+
+
+/*********************/
+/* Package Variables */
+/*********************/
+
+
+/*****************************/
+/* Library Private Variables */
+/*****************************/
+
+
+/*******************/
+/* Local Variables */
+/*******************/
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5A_is_shared_test
+ *
+ * Purpose: Check if an attribute is shared
+ *
+ * Return: Success: Non-negative
+ * Failure: Negative
+ *
+ * Programmer: Quincey Koziol
+ * Dec 19, 2006
+ *
+ *-------------------------------------------------------------------------
+ */
+htri_t
+H5A_is_shared_test(hid_t attr_id)
+{
+ H5A_t *attr; /* Attribute object for ID */
+ htri_t ret_value; /* Return value */
+
+ FUNC_ENTER_NOAPI_NOINIT(H5A_is_shared_test)
+
+ /* Check arguments */
+ if(NULL == (attr = (H5A_t *)H5I_object_verify(attr_id, H5I_ATTR)))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an attribute")
+
+ /* Check if attribute is shared */
+ ret_value = H5O_attr_is_shared(attr);
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5A_is_shared_test() */
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5A_get_shared_rc_test
+ *
+ * Purpose: Retrieve the refcount for a shared attribute
+ *
+ * Return: Success: Non-negative
+ * Failure: Negative
+ *
+ * Programmer: Quincey Koziol
+ * Dec 19, 2006
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5A_get_shared_rc_test(hid_t attr_id, hsize_t *ref_count)
+{
+ H5A_t *attr; /* Attribute object for ID */
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_NOAPI_NOINIT(H5A_get_shared_rc_test)
+
+ /* Check arguments */
+ if(NULL == (attr = (H5A_t *)H5I_object_verify(attr_id, H5I_ATTR)))
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an attribute")
+
+ /* Sanity check */
+ HDassert(H5O_attr_is_shared(attr));
+
+ /* Retrieve ref count for shared attribute */
+ if(H5SM_get_refcount_test(attr->oloc.file, H5AC_ind_dxpl_id, H5O_ATTR_ID,
+ &attr->sh_loc, ref_count) < 0)
+ HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't retrieve shared message ref count")
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5A_get_shared_rc_test() */
+