mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
44a72a6777
Test Bug Fix Description: Under certain [obscure] circumstances, an object header would get paged out of the metadata cache, and when it was accessed again and brought back into the cache, and immediately had additional metadata added to it (an attribute, usually, or perhaps adding an object to a group), and needed to be extended with a continuation message, but there was no room in any existing object header chunks for the continuation message and an existing object header message needed to be moved to the new object header chunk (I told you it was obscure :-), the object header message moved to the new chunk (not the new metadata being added) would get corrupted. *whew* :-) Solution: Actually copy the "raw" object header message information of the object header message being moved to the new chunk, instead of relying on the "native" object header message information being re-encoded when the object header is flushed. This is because when an object header is paged out of the metadata cache and subsequently brought back in, the "native" information pointer in memory is reset to NULL and only the "raw" information exists. [Actually, this additional testing doesn't trigger the bug, which needs _lots_ of objects to be created and accessed, but it does execise the object header continuation code more than other tests in the library.] Platforms tested: Solaris 2.7 (arabica) & FreeBSD 4.5 (sleipnir)
193 lines
7.4 KiB
Makefile
193 lines
7.4 KiB
Makefile
## HDF5 Library Test Makefile(.in)
|
|
##
|
|
## Copyright (C) 1997, 2002
|
|
## National Center for Supercomputing Applications.
|
|
## All rights reserved.
|
|
##
|
|
##
|
|
top_srcdir=@top_srcdir@
|
|
top_builddir=..
|
|
srcdir=@srcdir@
|
|
@COMMENCE@
|
|
|
|
## Add include directory to the C preprocessor flags and the h5test and hdf5
|
|
## libraries to the library list.
|
|
CPPFLAGS=-I. -I$(srcdir) -I../src -I$(top_srcdir)/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.
|
|
TEST_PROGS=testhdf5 lheap ohdr stab gheap hyperslab istore bittests dtypes \
|
|
dsets cmpd_dset extend external links unlink big mtime fillval mount \
|
|
flush1 flush2 enum gass_write gass_read gass_append set_extent \
|
|
srb_write srb_append srb_read ttsafe stream_test
|
|
|
|
TIMINGS=testmeta
|
|
|
|
## The libh5test.a library provides common support code for the tests. We link
|
|
## this library statically because some systems can only link executables to
|
|
## a single shared library and libhdf5 is much bigger than libh5test.
|
|
LIBHDF5=../src/libhdf5.la
|
|
LIB=libh5test.la
|
|
LIB_SRC=h5test.c
|
|
LIB_OBJ=$(LIB_SRC:.c=.lo)
|
|
PUB_LIB=
|
|
|
|
## Temporary files. These files are the ones created by setting the
|
|
## HDF5_NOCLEANUP environment variable and running `make test' without
|
|
## specifying a file prefix or low-level driver. Changing the file
|
|
## prefix or low-level driver with environment variables will influence
|
|
## the temporary file name in ways that the makefile is not aware of.
|
|
MOSTLYCLEAN=cmpd_dset.h5 dataset.h5 extend.h5 istore.h5 tfile1.h5 tfile2.h5 \
|
|
tfile3.h5 th5s1.h5 lheap.h5 ohdr.h5 stab1.h5 stab2.h5 \
|
|
extern_1.h5 extern_2.h5 extern_3.h5 extern_1a.raw extern_1b.raw \
|
|
extern_2a.raw extern_2b.raw extern_3a.raw extern_3b.raw \
|
|
extern_4a.raw extern_4b.raw gheap0.h5 gheap1.h5 gheap2.h5 \
|
|
gheap3.h5 gheap4.h5 links.h5 big.data \
|
|
big[0-9][0-9][0-9][0-9][0-9].h5 dtypes1.h5 dtypes2.h5 tattr.h5 \
|
|
tselect.h5 mtime.h5 unlink.h5 fillval_[0-9].h5 fillval.raw \
|
|
mount_[0-9].h5 testmeta.h5 ttime.h5 trefer[12].h5 tvltypes.h5 \
|
|
tvlstr.h5 flush.h5 enum1.h5 titerate.h5 ttsafe.h5 tarray1.h5 \
|
|
tgenprop.h5 tmisc.h5 tmisc2a.h5 tmisc2b.h5 tmisc3.h5 tmisc4a.h5 \
|
|
tmisc4b.h5 tmisc5.h5 tmisc6.h5 set_extent_read.h5 \
|
|
set_extent_create.h5
|
|
CLEAN=$(TIMINGS)
|
|
|
|
## 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
|
|
## other source lists are for the individual tests, the files of which may
|
|
## overlap with other tests.
|
|
|
|
TEST_SRC=big.c bittests.c cmpd_dset.c dsets.c dtypes.c extend.c \
|
|
external.c fillval.c flush1.c flush2.c gheap.c h5test.c hyperslab.c \
|
|
istore.c lheap.c links.c mount.c mtime.c ohdr.c stab.c tarray.c \
|
|
tattr.c tconfig.c testhdf5.c testmeta.c tfile.c tgenprop.c th5s.c \
|
|
titerate.c tmeta.c trefer.c tselect.c ttime.c ttbbt.c tvltypes.c \
|
|
tvlstr.c tmisc.c unlink.c enum.c ttsafe.c ttsafe_dcreate.c \
|
|
ttsafe_error.c ttsafe_cancel.c ttsafe_acreate.c gass_write.c \
|
|
gass_read.c gass_append.c srb_read.c srb_write.c srb_append.c \
|
|
stream_test.c set_extent.c
|
|
|
|
TEST_OBJ=$(TEST_SRC:.c=.lo)
|
|
|
|
## Private header files (not to be installed)...
|
|
PRIVATE_HDR=testhdf5.h ttsafe.h
|
|
|
|
## Additional targets
|
|
.PHONY: timings _timings
|
|
timings _timings: $(TIMINGS)
|
|
@for timing in $(TIMINGS) dummy; do \
|
|
if test $$timing != dummy; then \
|
|
echo "Running $$timing $(TEST_FLAGS)"; \
|
|
$(RUNTEST) ./$$timing $(TEST_FLAGS) || exit 1; \
|
|
fi; \
|
|
done;
|
|
|
|
## How to build the tests... They all depend on the test and hdf5 libraries.
|
|
$(TEST_PROGS): $(LIB) $(LIBHDF5)
|
|
|
|
TESTHDF5_OBJ=testhdf5.lo tarray.lo tattr.lo tconfig.lo tfile.lo tgenprop.lo \
|
|
th5s.lo titerate.lo tmeta.lo ttime.lo trefer.lo tselect.lo ttbbt.lo \
|
|
tvltypes.lo tvlstr.lo tmisc.lo
|
|
|
|
TTS_OBJ=ttsafe.lo ttsafe_dcreate.lo ttsafe_error.lo ttsafe_cancel.lo \
|
|
ttsafe_acreate.lo
|
|
|
|
testhdf5: $(TESTHDF5_OBJ)
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ $(TESTHDF5_OBJ) $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
lheap: lheap.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ lheap.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
ohdr: ohdr.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ ohdr.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
stab: stab.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ stab.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
gheap: gheap.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ gheap.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
dsets: dsets.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ dsets.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
bittests: bittests.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ bittests.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
dtypes: dtypes.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ dtypes.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
hyperslab: hyperslab.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ hyperslab.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
istore: istore.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ istore.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
cmpd_dset: cmpd_dset.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ cmpd_dset.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
extend: extend.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ extend.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
external: external.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ external.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
big: big.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ big.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
links: links.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ links.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
mtime: mtime.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ mtime.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
unlink: unlink.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ unlink.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
fillval: fillval.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ fillval.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
mount: mount.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ mount.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
flush1: flush1.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ flush1.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
flush2: flush2.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ flush2.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
enum: enum.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ enum.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
ttsafe: $(TTS_OBJ)
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ $(TTS_OBJ) $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
gass_write: gass_write.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ gass_write.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
gass_read: gass_read.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ gass_read.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
gass_append: gass_append.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ gass_append.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
set_extent: set_extent.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ set_extent.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
srb_read: srb_read.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ srb_read.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
srb_write: srb_write.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ srb_write.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
srb_append: srb_append.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ srb_append.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
stream_test: stream_test.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ stream_test.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
testmeta: testmeta.lo
|
|
@$(LT_LINK_EXE) $(CFLAGS) -o $@ testmeta.lo $(LIB) $(LIBHDF5) $(LDFLAGS) $(LIBS)
|
|
|
|
@CONCLUDE@
|
|
|