diff options
author | Robb Matzke <matzke@llnl.gov> | 1998-07-30 16:38:21 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1998-07-30 16:38:21 (GMT) |
commit | c7b935a9acd629929296c1ccdd05214cc5c01e5d (patch) | |
tree | 07d051649f88b4d65f98316182e6191b038fc4c7 /test | |
parent | a34534c9b8321f4de9fadd836be926497f7461d4 (diff) | |
download | hdf5-c7b935a9acd629929296c1ccdd05214cc5c01e5d.zip hdf5-c7b935a9acd629929296c1ccdd05214cc5c01e5d.tar.gz hdf5-c7b935a9acd629929296c1ccdd05214cc5c01e5d.tar.bz2 |
[svn-r547] Changes since 19980729
----------------------
./MANIFEST
./test/Makefile.in
./test/mtime.c [NEW]
Test for the modification time message.
./src/H5AC.c
./src/H5Fistore.c
Turned off printing of statistics on H5close() if H5AC_DEBUG
isn't defined.
Diffstat (limited to 'test')
-rw-r--r-- | test/.distdep | 44 | ||||
-rw-r--r-- | test/Makefile.in | 10 | ||||
-rw-r--r-- | test/mtime.c | 149 |
3 files changed, 178 insertions, 25 deletions
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; +} + + |