diff options
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | src/.distdep | 167 | ||||
-rw-r--r-- | src/H5AC.c | 6 | ||||
-rw-r--r-- | src/H5Distore.c | 41 | ||||
-rw-r--r-- | src/H5Fistore.c | 41 | ||||
-rw-r--r-- | test/.distdep | 44 | ||||
-rw-r--r-- | test/Makefile.in | 10 | ||||
-rw-r--r-- | test/mtime.c | 149 |
8 files changed, 340 insertions, 119 deletions
@@ -264,6 +264,7 @@ ./test/iopipe.c ./test/istore.c ./test/links.c +./test/mtime.c ./test/shtype.c ./test/testhdf5.c ./test/testhdf5.h diff --git a/src/.distdep b/src/.distdep index c8e7e52..516813c 100644 --- a/src/.distdep +++ b/src/.distdep @@ -1,13 +1,3 @@ -H5AC.o: \ - H5AC.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Ipublic.h H5B.o: \ H5B.c \ H5private.h \ @@ -628,36 +618,6 @@ H5E.o: \ H5Eprivate.h \ H5Epublic.h \ H5MMprivate.h -H5Fistore.o: \ - H5Fistore.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Dprivate.h \ - H5Dpublic.h \ - H5Ipublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MFprivate.h \ - H5MFpublic.h \ - H5MMprivate.h \ - H5MMpublic.h H5Oattr.o: \ H5Oattr.c \ H5private.h \ @@ -760,31 +720,6 @@ H5Ssimp.o: \ H5Tpublic.h \ H5Zprivate.h \ H5Zpublic.h -H5T.o: \ - H5T.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Dprivate.h \ - H5Dpublic.h \ - H5Ipublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Iprivate.h H5V.o: \ H5V.c \ H5private.h \ @@ -1089,3 +1024,105 @@ H5Omtime.o: \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h +H5D.o: \ + H5D.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Iprivate.h \ + H5Ipublic.h \ + H5ACprivate.h \ + H5ACpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5Dprivate.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5HLprivate.h \ + H5HLpublic.h \ + H5MFprivate.h \ + H5MFpublic.h +H5T.o: \ + H5T.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Dprivate.h \ + H5Dpublic.h \ + H5Ipublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h \ + H5Iprivate.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5MMprivate.h +H5AC.o: \ + H5AC.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5ACprivate.h \ + H5ACpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Ipublic.h \ + H5Dpublic.h \ + H5Eprivate.h \ + H5Epublic.h +H5Fistore.o: \ + H5Fistore.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Dprivate.h \ + H5Dpublic.h \ + H5Ipublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5MFprivate.h \ + H5MFpublic.h @@ -845,15 +845,18 @@ H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, *------------------------------------------------------------------------- */ herr_t -H5AC_debug(H5F_t *f) +H5AC_debug(H5F_t __unused__ *f) { +#ifdef H5AC_DEBUG H5AC_subid_t i; char s[32], ascii[32]; H5AC_t *cache = f->shared->cache; double miss_rate; +#endif FUNC_ENTER(H5AC_debug, FAIL); +#ifdef H5AC_DEBUG fprintf(stderr, "H5AC: meta data cache statistics for file %s\n", f->name); fprintf(stderr, " %-18s %8s %8s %8s %8s+%-8s\n", "Layer", "Hits", "Misses", "MissRate", "Inits", "Flushes"); @@ -904,6 +907,7 @@ H5AC_debug(H5F_t *f) ((long)(cache->diagnostics[i].nflushes) - (long)(cache->diagnostics[i].ninits))); } +#endif FUNC_LEAVE(SUCCEED); } diff --git a/src/H5Distore.c b/src/H5Distore.c index 262a58f..a8b321b 100644 --- a/src/H5Distore.c +++ b/src/H5Distore.c @@ -1688,21 +1688,32 @@ H5F_istore_stats (H5F_t *f, hbool_t headers) "-----", "----", "------", "--------", "-----", "-------"); } - if (rdcc->nhits>0 || rdcc->nmisses>0) { - miss_rate = 100.0 * rdcc->nmisses / - (rdcc->nhits + rdcc->nmisses); - } else { - miss_rate = 0.0; - } - if (miss_rate > 100) { - sprintf(ascii, "%7d%%", (int) (miss_rate + 0.5)); - } else { - sprintf(ascii, "%7.2f%%", miss_rate); +#ifndef H5AC_DEBUG + /* + * If we're not debugging the H5AC layer then print these statistics only + * if we printed the headers that go with them. + */ + if (headers) { +#endif + if (rdcc->nhits>0 || rdcc->nmisses>0) { + miss_rate = 100.0 * rdcc->nmisses / + (rdcc->nhits + rdcc->nmisses); + } else { + miss_rate = 0.0; + } + if (miss_rate > 100) { + sprintf(ascii, "%7d%%", (int) (miss_rate + 0.5)); + } else { + sprintf(ascii, "%7.2f%%", miss_rate); + } + + fprintf(stderr, " %-18s %8u %8u %7s %8d+%-9ld\n", + "raw data chunks", rdcc->nhits, rdcc->nmisses, ascii, + rdcc->ninits, (long)(rdcc->nflushes)-(long)(rdcc->ninits)); +#ifndef H5AC_DEBUG } - - fprintf(stderr, " %-18s %8u %8u %7s %8d+%-9ld\n", - "raw data chunks", rdcc->nhits, rdcc->nmisses, ascii, - rdcc->ninits, (long)(rdcc->nflushes)-(long)(rdcc->ninits)); +#endif + FUNC_LEAVE (SUCCEED); } @@ -1823,7 +1834,9 @@ H5F_istore_allocate (H5F_t *f, const H5O_layout_t *layout, uint8 *chunk=NULL; intn idx_hint=0; size_t chunk_size; +#ifdef AKC H5F_istore_ud1_t udata; +#endif FUNC_ENTER(H5F_istore_allocate, FAIL); #ifdef AKC diff --git a/src/H5Fistore.c b/src/H5Fistore.c index 262a58f..a8b321b 100644 --- a/src/H5Fistore.c +++ b/src/H5Fistore.c @@ -1688,21 +1688,32 @@ H5F_istore_stats (H5F_t *f, hbool_t headers) "-----", "----", "------", "--------", "-----", "-------"); } - if (rdcc->nhits>0 || rdcc->nmisses>0) { - miss_rate = 100.0 * rdcc->nmisses / - (rdcc->nhits + rdcc->nmisses); - } else { - miss_rate = 0.0; - } - if (miss_rate > 100) { - sprintf(ascii, "%7d%%", (int) (miss_rate + 0.5)); - } else { - sprintf(ascii, "%7.2f%%", miss_rate); +#ifndef H5AC_DEBUG + /* + * If we're not debugging the H5AC layer then print these statistics only + * if we printed the headers that go with them. + */ + if (headers) { +#endif + if (rdcc->nhits>0 || rdcc->nmisses>0) { + miss_rate = 100.0 * rdcc->nmisses / + (rdcc->nhits + rdcc->nmisses); + } else { + miss_rate = 0.0; + } + if (miss_rate > 100) { + sprintf(ascii, "%7d%%", (int) (miss_rate + 0.5)); + } else { + sprintf(ascii, "%7.2f%%", miss_rate); + } + + fprintf(stderr, " %-18s %8u %8u %7s %8d+%-9ld\n", + "raw data chunks", rdcc->nhits, rdcc->nmisses, ascii, + rdcc->ninits, (long)(rdcc->nflushes)-(long)(rdcc->ninits)); +#ifndef H5AC_DEBUG } - - fprintf(stderr, " %-18s %8u %8u %7s %8d+%-9ld\n", - "raw data chunks", rdcc->nhits, rdcc->nmisses, ascii, - rdcc->ninits, (long)(rdcc->nflushes)-(long)(rdcc->ninits)); +#endif + FUNC_LEAVE (SUCCEED); } @@ -1823,7 +1834,9 @@ H5F_istore_allocate (H5F_t *f, const H5O_layout_t *layout, uint8 *chunk=NULL; intn idx_hint=0; size_t chunk_size; +#ifdef AKC H5F_istore_ud1_t udata; +#endif FUNC_ENTER(H5F_istore_allocate, FAIL); #ifdef AKC diff --git a/test/.distdep b/test/.distdep index a98c168..502e178 100644 --- a/test/.distdep +++ b/test/.distdep @@ -174,28 +174,6 @@ external.o: \ ../src/H5Zpublic.h \ ../src/H5Spublic.h \ ../src/H5Tpublic.h -iopipe.o: \ - iopipe.c \ - ../src/hdf5.h \ - ../src/H5public.h \ - ../src/H5config.h \ - ../src/H5Ipublic.h \ - ../src/H5Apublic.h \ - ../src/H5ACpublic.h \ - ../src/H5Bpublic.h \ - ../src/H5Dpublic.h \ - ../src/H5Epublic.h \ - ../src/H5Fpublic.h \ - ../src/H5Gpublic.h \ - ../src/H5HGpublic.h \ - ../src/H5HLpublic.h \ - ../src/H5MFpublic.h \ - ../src/H5MMpublic.h \ - ../src/H5Opublic.h \ - ../src/H5Ppublic.h \ - ../src/H5Zpublic.h \ - ../src/H5Spublic.h \ - ../src/H5Tpublic.h gheap.o: \ gheap.c \ ../src/H5private.h \ @@ -469,3 +447,25 @@ cmpd_dset.o: \ ../src/H5Ppublic.h \ ../src/H5Zpublic.h \ ../src/H5Spublic.h +iopipe.o: \ + iopipe.c \ + ../src/hdf5.h \ + ../src/H5public.h \ + ../src/H5config.h \ + ../src/H5Ipublic.h \ + ../src/H5Apublic.h \ + ../src/H5ACpublic.h \ + ../src/H5Bpublic.h \ + ../src/H5Dpublic.h \ + ../src/H5Epublic.h \ + ../src/H5Fpublic.h \ + ../src/H5Gpublic.h \ + ../src/H5HGpublic.h \ + ../src/H5HLpublic.h \ + ../src/H5MFpublic.h \ + ../src/H5MMpublic.h \ + ../src/H5Opublic.h \ + ../src/H5Ppublic.h \ + ../src/H5Zpublic.h \ + ../src/H5Spublic.h \ + ../src/H5Tpublic.h diff --git a/test/Makefile.in b/test/Makefile.in index 3103f0e..899452d 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -12,7 +12,7 @@ CPPFLAGS=-I. -I../src @CPPFLAGS@ # These are our main targets. They should be listed in the order to be # executed, generally most specific tests to least specific tests. TESTS=testhdf5 gheap hyperslab istore bittests dtypes dsets cmpd_dset extend \ - external shtype links big + external shtype links big mtime TIMINGS=iopipe chunk # Temporary files @@ -24,7 +24,7 @@ MOSTLYCLEAN=cmpd_dset.h5 dataset.h5 extend.h5 istore.h5 tfile1.h5 tfile2.h5 \ gheap1.h5 gheap2.h5 gheap3.h5 gheap4.h5 shtype0.h5 shtype1.h5 \ shtype2a.h5 shtype2b.h5 shtype3.h5 links.h5 chunk.h5 big.data \ big[0-9][0-9][0-9][0-9][0-9].h5 dtypes1.h5 dtypes2.h5 tattr.h5 \ - tselect.h5 + tselect.h5 mtime.h5 # Source and object files for programs... The TEST_SRC list contains all the # source files and is used for things like dependencies, archiving, etc. The @@ -32,7 +32,8 @@ MOSTLYCLEAN=cmpd_dset.h5 dataset.h5 extend.h5 istore.h5 tfile1.h5 tfile2.h5 \ # overlap with other tests. TEST_SRC=testhdf5.c tattr.c tfile.c theap.c tmeta.c tohdr.c tselect.c tstab.c \ th5s.c dtypes.c hyperslab.c istore.c dsets.c cmpd_dset.c extend.c \ - external.c iopipe.c gheap.c shtype.c big.c links.c chunk.c bittests.c + external.c iopipe.c gheap.c shtype.c big.c links.c chunk.c bittests.c \ + mtime.c TEST_OBJ=$(PROG_SRC:.c=.o) # Private header files (not to be installed)... @@ -98,4 +99,7 @@ links: links.o ../src/libhdf5.a chunk: chunk.o ../src/libhdf5.a $(CC) $(CFLAGS) -o $@ chunk.o ../src/libhdf5.a $(LIBS) +mtime: mtime.o ../src/libhdf5.a + $(CC) $(CFLAGS) -o $@ mtime.o ../src/libhdf5.a $(LIBS) + @CONCLUDE@ diff --git a/test/mtime.c b/test/mtime.c new file mode 100644 index 0000000..cd78cc1 --- /dev/null +++ b/test/mtime.c @@ -0,0 +1,149 @@ +/* + * Copyright © 1998 NCSA + * All rights reserved. + * + * Programmer: Robb Matzke <matzke@llnl.gov> + * Thursday, July 30, 1998 + * + * Purpose: Determines if the modification time message is working + * properly. Specifically, the code in H5O_mtime_decode() is + * very OS-dependent and this test tries to figure out if it's + * working properly. + */ +#include <assert.h> +#include <hdf5.h> +#include <math.h> +#include <sys/time.h> +#include <time.h> + +#define FALSE 0 +#define TRUE 1 +#define FILE_NAME_1 "mtime.h5" + +#include <H5config.h> +#ifndef HAVE_ATTRIBUTE +# undef __attribute__ +# define __attribute__(X) /*void*/ +# define __unused__ /*void*/ +#else +# define __unused__ __attribute__((unused)) +#endif + + +/*------------------------------------------------------------------------- + * Function: display_error_cb + * + * Purpose: Displays the error stack after printing "*FAILED*". + * + * Return: Success: 0 + * + * Failure: -1 + * + * Programmer: Robb Matzke + * Wednesday, March 4, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static herr_t +display_error_cb (void __unused__ *client_data) +{ + puts ("*FAILED*"); + H5Eprint (stdout); + return 0; +} + + +/*------------------------------------------------------------------------- + * Function: cleanup + * + * Purpose: Removes test files + * + * Return: void + * + * Programmer: Robb Matzke + * Thursday, June 4, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void +cleanup (void) +{ + if (!getenv ("HDF5_NOCLEANUP")) { + remove (FILE_NAME_1); + } +} + + +/*------------------------------------------------------------------------- + * Function: main + * + * Purpose: H5O_mtime_decode() test. + * + * Return: Success: + * + * Failure: + * + * Programmer: Robb Matzke + * Thursday, July 30, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +int +main(void) +{ + hid_t file, space, dset; + hsize_t size[1] = {2}; + time_t now; + struct tm *tm; + H5G_stat_t sb; + char buf1[32], buf2[32]; + + H5Eset_auto(display_error_cb, NULL); + printf("%-70s", "Testing modification time messages"); + + /* Create the file, create a dataset, then close the file */ + file = H5Fcreate(FILE_NAME_1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + if (file<0) return 1; + if ((space = H5Screate_simple(1, size, NULL))<0) return 1; + dset = H5Dcreate(file, "dset", H5T_NATIVE_CHAR, space, H5P_DEFAULT); + if (dset<0) return 1; + now = time(NULL); + if (H5Dclose(dset)<0) return 1; + if (H5Sclose(space)<0) return 1; + if (H5Fclose(file)<0) return 1; + + /* Open the file and get the modification time */ + if ((file = H5Fopen(FILE_NAME_1, H5F_ACC_RDONLY, H5P_DEFAULT))<0) return 1; + if (H5Gstat(file, "dset", TRUE, &sb)<0) return 1; + if (H5Fclose(file)<0) return 1; + + /* Compare times -- they must be within 60 seconds of one another */ + if (0==sb.mtime) { + puts("--SKIP--"); + puts(" The modification time could not be decoded on this OS."); + puts(" Modification times will be mantained in the file bug cannot"); + puts(" be queried on this system. See H5O_mtime_decode()."); + return 1; + } else if (fabs(difftime(now, sb.mtime))>60.0) { + puts("*FAILED*"); + tm = localtime(&(sb.mtime)); + strftime(buf1, sizeof buf1, "%Y-%m-%d %H:%M:%S", tm); + tm = localtime(&now); + strftime(buf2, sizeof buf2, "%Y-%m-%d %H:%M:%S", tm); + printf(" Got %s instead of %s\n", buf1, buf2); + return 1; + } + + /* All looks good */ + puts(" PASSED"); + cleanup(); + return 0; +} + + |