[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.
This commit is contained in:
Robb Matzke 1998-07-30 11:38:21 -05:00
parent a34534c9b8
commit c7b935a9ac
8 changed files with 340 additions and 119 deletions

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -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;
#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
}
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));
#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

View File

@ -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;
#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
}
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));
#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

View File

@ -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

View File

@ -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@

149
test/mtime.c Normal file
View File

@ -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;
}