summaryrefslogtreecommitdiffstats
path: root/test/cache.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2009-03-30 17:45:30 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2009-03-30 17:45:30 (GMT)
commitf8fa1029b7e056cc068583d5f08d788aa57e3635 (patch)
tree8f209b41c99651962e067a75364ce09cd3120659 /test/cache.c
parent383f266ef1df526ea3ebeadd1b49099361ada7a9 (diff)
downloadhdf5-f8fa1029b7e056cc068583d5f08d788aa57e3635.zip
hdf5-f8fa1029b7e056cc068583d5f08d788aa57e3635.tar.gz
hdf5-f8fa1029b7e056cc068583d5f08d788aa57e3635.tar.bz2
[svn-r16625] Description:
Add mechanism for querying if an entry in the metadata cache is the parent or child in a flush dependency relationship. Tested on: FreeBSD/32 6.3 (duty) in debug mode FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (jam) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/Intel compilers w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode Mac OS X/32 10.5.6 (amazon) in debug mode Mac OS X/32 10.5.6 (amazon) w/C++ & FORTRAN, w/threadsafe, in production mode
Diffstat (limited to 'test/cache.c')
-rw-r--r--test/cache.c97
1 files changed, 67 insertions, 30 deletions
diff --git a/test/cache.c b/test/cache.c
index c3e5ee0..bacd559 100644
--- a/test/cache.c
+++ b/test/cache.c
@@ -2727,7 +2727,7 @@ check_insert_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
&in_cache, &is_dirty, &is_protected,
- &is_pinned);
+ &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13541,7 +13541,7 @@ check_get_entry_status(void)
*/
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
- &in_cache, &is_dirty, &is_protected, &is_pinned);
+ &in_cache, &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13565,7 +13565,7 @@ check_get_entry_status(void)
if ( pass ) {
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
- &in_cache, &is_dirty, &is_protected, &is_pinned);
+ &in_cache, &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13587,7 +13587,7 @@ check_get_entry_status(void)
if ( pass ) {
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
- &in_cache, &is_dirty, &is_protected, &is_pinned);
+ &in_cache, &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13609,7 +13609,7 @@ check_get_entry_status(void)
if ( pass ) {
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
- &in_cache, &is_dirty, &is_protected, &is_pinned);
+ &in_cache, &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13631,7 +13631,7 @@ check_get_entry_status(void)
if ( pass ) {
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
- &in_cache, &is_dirty, &is_protected, &is_pinned);
+ &in_cache, &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13653,7 +13653,7 @@ check_get_entry_status(void)
if ( pass ) {
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
- &in_cache, &is_dirty, &is_protected, &is_pinned);
+ &in_cache, &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13743,7 +13743,7 @@ check_expunge_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
&in_cache, &is_dirty, &is_protected,
- &is_pinned);
+ &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13781,7 +13781,7 @@ check_expunge_entry(void)
if ( pass ) {
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
- &in_cache, &is_dirty, &is_protected, &is_pinned);
+ &in_cache, &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13821,7 +13821,7 @@ check_expunge_entry(void)
*/
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
- &in_cache, &is_dirty, &is_protected, &is_pinned);
+ &in_cache, &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13863,7 +13863,7 @@ check_expunge_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
&in_cache, &is_dirty, &is_protected,
- &is_pinned);
+ &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13902,7 +13902,7 @@ check_expunge_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
&in_cache, &is_dirty, &is_protected,
- &is_pinned);
+ &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -13943,7 +13943,7 @@ check_expunge_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
&in_cache, &is_dirty, &is_protected,
- &is_pinned);
+ &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -14878,7 +14878,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
&reported_entry_size, &in_cache,
- &is_dirty, &is_protected, &is_pinned);
+ &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -14948,7 +14948,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
&reported_entry_size, &in_cache,
- &is_dirty, &is_protected, &is_pinned);
+ &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15021,7 +15021,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
&reported_entry_size, &in_cache,
- &is_dirty, &is_protected, &is_pinned);
+ &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15086,7 +15086,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
&reported_entry_size, &in_cache,
- &is_dirty, &is_protected, &is_pinned);
+ &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15147,7 +15147,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
&reported_entry_size, &in_cache,
- &is_dirty, &is_protected, &is_pinned);
+ &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15184,7 +15184,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
&in_cache, &is_dirty, &is_protected,
- &is_pinned);
+ &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15290,7 +15290,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
&reported_entry_size, &in_cache,
- &is_dirty, &is_protected, &is_pinned);
+ &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15362,7 +15362,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
&reported_entry_size, &in_cache,
- &is_dirty, &is_protected, &is_pinned);
+ &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15435,7 +15435,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
&reported_entry_size, &in_cache,
- &is_dirty, &is_protected, &is_pinned);
+ &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15502,7 +15502,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
&reported_entry_size, &in_cache,
- &is_dirty, &is_protected, &is_pinned);
+ &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15563,7 +15563,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
&reported_entry_size, &in_cache,
- &is_dirty, &is_protected, &is_pinned);
+ &is_dirty, &is_protected, &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15600,7 +15600,7 @@ check_resize_entry(void)
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr, &entry_size,
&in_cache, &is_dirty, &is_protected,
- &is_pinned);
+ &is_pinned, NULL, NULL);
if ( result < 0 ) {
@@ -15878,7 +15878,7 @@ check_evictions_enabled(void)
entry_ptr = &(base_addr[0]);
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
- NULL, &in_cache, NULL, NULL, NULL);
+ NULL, &in_cache, NULL, NULL, NULL, NULL, NULL);
if ( result < 0 ) {
@@ -15941,7 +15941,7 @@ check_evictions_enabled(void)
entry_ptr = &(base_addr[1]);
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
- NULL, &in_cache, NULL, NULL, NULL);
+ NULL, &in_cache, NULL, NULL, NULL, NULL, NULL);
if ( result < 0 ) {
@@ -16148,7 +16148,7 @@ check_evictions_enabled(void)
entry_ptr = &(base_addr[2]);
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
- NULL, &in_cache, NULL, NULL, NULL);
+ NULL, &in_cache, NULL, NULL, NULL, NULL, NULL);
if ( result < 0 ) {
@@ -16184,7 +16184,7 @@ check_evictions_enabled(void)
entry_ptr = &(base_addr[3]);
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
- NULL, &in_cache, NULL, NULL, NULL);
+ NULL, &in_cache, NULL, NULL, NULL, NULL, NULL);
if ( result < 0 ) {
@@ -16313,7 +16313,7 @@ check_evictions_enabled(void)
entry_ptr = &(base_addr[4]);
result = H5C_get_entry_status(cache_ptr, entry_ptr->addr,
- NULL, &in_cache, NULL, NULL, NULL);
+ NULL, &in_cache, NULL, NULL, NULL, NULL, NULL);
if ( result < 0 ) {
@@ -29726,6 +29726,7 @@ static unsigned
check_flush_deps(void)
{
H5C_t * cache_ptr = NULL; /* Metadata cache for this test */
+ test_entry_t *base_addr; /* Base address of entries for test */
int entry_type = PICO_ENTRY_TYPE; /* Use very small entry size (size of entries doesn't matter) */
size_t entry_size = PICO_ENTRY_SIZE; /* 1 byte */
unsigned u; /* Local index variable */
@@ -29750,6 +29751,7 @@ check_flush_deps(void)
reset_entries();
cache_ptr = setup_cache((size_t)(2 * 1024), (size_t)(1 * 1024));
+ base_addr = entries[entry_type];
if ( !pass ) CACHE_ERROR("setup_cache failed")
@@ -29776,12 +29778,47 @@ check_flush_deps(void)
/* Create flush dependency between entries 0 (child) & 1 (parent) */
{
+ hbool_t in_cache, is_flush_dep_parent, is_flush_dep_child;
+ test_entry_t * entry_ptr;
+
protect_entry(cache_ptr, entry_type, 1);
if ( !pass ) CACHE_ERROR("protect_entry failed")
+ /* Check the parent's entry status */
+ entry_ptr = &(base_addr[1]);
+ if(H5C_get_entry_status(cache_ptr, entry_ptr->addr, NULL, &in_cache,
+ NULL, NULL, NULL, &is_flush_dep_parent, &is_flush_dep_child) < 0)
+ CACHE_ERROR("H5C_get_entry_status() failed")
+ if(!in_cache || is_flush_dep_parent || is_flush_dep_child)
+ CACHE_ERROR("invalid entry status")
+
+ /* Check the child's entry status */
+ entry_ptr = &(base_addr[0]);
+ if(H5C_get_entry_status(cache_ptr, entry_ptr->addr, NULL, &in_cache,
+ NULL, NULL, NULL, &is_flush_dep_parent, &is_flush_dep_child) < 0)
+ CACHE_ERROR("H5C_get_entry_status() failed")
+ if(!in_cache || is_flush_dep_parent || is_flush_dep_child)
+ CACHE_ERROR("invalid entry status")
+
create_flush_dependency(cache_ptr, entry_type, 1, entry_type, 0);
if ( !pass ) CACHE_ERROR("create_flush_dependency failed")
+ /* Check the parent's entry status */
+ entry_ptr = &(base_addr[1]);
+ if(H5C_get_entry_status(cache_ptr, entry_ptr->addr, NULL, &in_cache,
+ NULL, NULL, NULL, &is_flush_dep_parent, &is_flush_dep_child) < 0)
+ CACHE_ERROR("H5C_get_entry_status() failed")
+ if(!in_cache || !is_flush_dep_parent || is_flush_dep_child)
+ CACHE_ERROR("invalid entry status")
+
+ /* Check the child's entry status */
+ entry_ptr = &(base_addr[0]);
+ if(H5C_get_entry_status(cache_ptr, entry_ptr->addr, NULL, &in_cache,
+ NULL, NULL, NULL, &is_flush_dep_parent, &is_flush_dep_child) < 0)
+ CACHE_ERROR("H5C_get_entry_status() failed")
+ if(!in_cache || is_flush_dep_parent || !is_flush_dep_child)
+ CACHE_ERROR("invalid entry status")
+
/* Change expected values, and verify the status of the entries
* after creating flush dependency
*/