[svn-r16] ./src/test/Makefile

Added new files

./test/testhdf5.c
./test/testhdf5.h
	Added calls for object header testing.

./test/theap.c
	Turned off some output.
This commit is contained in:
Robb Matzke 1997-08-07 14:23:41 -05:00
parent a905a3a1e3
commit 0d050fcd57
5 changed files with 179 additions and 4 deletions

View File

@ -14,7 +14,7 @@ DEFS = -I../src
INCL = ../src/hdf5.h testhdf5.h
OBJ = testhdf5.o tmeta.o tfile.o theap.o
OBJ = testhdf5.o tmeta.o tfile.o theap.o tohdr.o
LIBS = ../src/libhdf5.a
@ -47,4 +47,7 @@ tfile.o: tfile.c $(INCL)
theap.o: theap.c $(INCL)
$(CC) $(CFLAGS) $(DEFS) theap.c
tohdr.o: tohdr.c $(INCL)
$(CC) $(CFLAGS) $(DEFS) tohdr.c

View File

@ -149,6 +149,7 @@ int main(int argc, char *argv[])
InitTest("metadata", test_metadata, "Encode/decode metadata code");
InitTest("file", test_file, "Low-Level File I/O");
InitTest("heap", test_heap, "Object and Name Heaps");
InitTest("ohdr", test_ohdr, "Object Headers");
Verbosity = 4; /* Default Verbosity is Low */
H5version(&major, &minor, &release, &patch);

View File

@ -110,6 +110,7 @@ int print_func(const char *, ...);
void test_metadata(void);
void test_file(void);
void test_heap (void);
void test_ohdr (void);
#endif /* HDF5TEST_H */

View File

@ -58,12 +58,11 @@ test_heap (void)
CHECK (f, NULL, "H5Aatom_object");
/* Create a new heap */
heap = H5H_new (f, 0);
heap = H5H_new (f, H5H_LOCAL, 0);
CHECK_I (heap, "H5H_new");
/* Add stuff to the heap */
for (i=0; i<NOBJS; i++) {
fprintf (stderr, "%d\n", i);
sprintf (buf, "%03d-", i);
for (j=4; j<i; j++) buf[j] = '0' + j%10;
if (j>4) buf[j] = '\0';
@ -78,7 +77,7 @@ test_heap (void)
/* Read the objects back out */
for (i=0; i<NOBJS; i++) {
s = H5H_peek (f, heap, obj[i]);
print_func ("object is `%s'\n", s);
MESSAGE (8, print_func ("object is `%s'\n", s););
}
/* Close the file */

171
test/tohdr.c Normal file
View File

@ -0,0 +1,171 @@
/*-------------------------------------------------------------------------
* Copyright (C) 1997 National Center for Supercomputing Applications.
* All rights reserved.
*
*-------------------------------------------------------------------------
*
* Created: tohdr.c
* Aug 6 1997
* Robb Matzke <robb@maya.nuance.com>
*
* Purpose:
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
#include "testhdf5.h"
#include "H5ACprivate.h"
#include "H5Fprivate.h"
#include "H5Gprivate.h"
#include "H5Oprivate.h"
/*-------------------------------------------------------------------------
* Function: test_ohdr
*
* Purpose: Test object headers.
*
* Return: void
*
* Programmer: Robb Matzke
* robb@maya.nuance.com
* Aug 6 1997
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
void
test_ohdr (void)
{
hatom_t fid;
hdf5_file_t *f;
haddr_t oh;
H5O_stab_t stab, ro;
herr_t status;
void *ptr;
H5G_entry_t ent;
hbool_t ent_mod;
int i;
MESSAGE (5, print_func("Testing Object Headers\n"););
/* create the file */
fid = H5Fcreate ("tohdr.h5", H5ACC_OVERWRITE, 0, 0);
CHECK (fid, FAIL, "H5Fcreate");
f = H5Aatom_object (fid);
CHECK (f, NULL, "H5Aatom_object");
/* the new object header */
MESSAGE (8, print_func("Creating new object header...\n"););
oh = H5O_new (f, 1, 64);
/*
* Test creation of a new message.
*/
MESSAGE (8, print_func("Creating new message...\n"););
stab.btree = 11111111;
stab.heap = 22222222;
status = H5O_modify (f, oh, NULL, NULL, H5O_STAB, H5O_NEW_MESG, &stab);
CHECK (status, FAIL, "H5O_modify");
H5AC_flush (f, NULL, 0, TRUE);
ptr = H5O_read (f, oh, NULL, H5O_STAB, 0, &ro);
CHECK_PTR (ptr, "H5O_read");
VERIFY (ptr, &ro, "H5O_read");
VERIFY (ro.btree, stab.btree, "H5O_read");
VERIFY (ro.heap, stab.heap, "H5O_read");
/*
* Test modification of an existing message.
*/
MESSAGE (8, print_func("Modifying message...\n"););
stab.btree = 33333333;
stab.heap = 44444444;
status = H5O_modify (f, oh, NULL, NULL, H5O_STAB, 0, &stab);
CHECK (status, FAIL, "H5O_modify");
H5AC_flush (f, NULL, 0, TRUE);
ptr = H5O_read (f, oh, NULL, H5O_STAB, 0, &ro);
CHECK_PTR (ptr, "H5O_read");
VERIFY (ptr, &ro, "H5O_read");
VERIFY (ro.btree, stab.btree, "H5O_read");
VERIFY (ro.heap, stab.heap, "H5O_read");
/*
* Test creation of a second message of the same type with a symbol
* table.
*/
MESSAGE (8, print_func("Creating a duplicate message...\n"););
ent.header = 0;
ent.type = H5G_NOTHING_CACHED;
stab.btree = 55555555;
stab.heap = 66666666;
status = H5O_modify (f, oh, &ent, &ent_mod, H5O_STAB, H5O_NEW_MESG, &stab);
CHECK (status, FAIL, "H5O_modify");
VERIFY (ent_mod, TRUE, "H5O_modify");
VERIFY (ent.type, H5G_CACHED_STAB, "H5O_modify");
VERIFY (ent.cache.stab.heap, stab.heap, "H5O_modify");
VERIFY (ent.cache.stab.btree, stab.btree, "H5O_modify");
H5AC_flush (f, NULL, 0, TRUE);
ptr = H5O_read (f, oh, NULL, H5O_STAB, 1, &ro);
CHECK_PTR (ptr, "H5O_read");
VERIFY (ptr, &ro, "H5O_read");
VERIFY (ro.btree, stab.btree, "H5O_read");
VERIFY (ro.heap, stab.heap, "H5O_read");
/*
* Test modification of the second message with a symbol table.
*/
MESSAGE (8, print_func("Modifying the duplicate message...\n"););
stab.btree = 77777777;
stab.heap = 88888888;
status = H5O_modify (f, oh, &ent, &ent_mod, H5O_STAB, 1, &stab);
CHECK (status, FAIL, "H5O_modify");
VERIFY (ent_mod, TRUE, "H5O_modify");
VERIFY (ent.type, H5G_CACHED_STAB, "H5O_modify");
VERIFY (ent.cache.stab.heap, stab.heap, "H5O_modify");
VERIFY (ent.cache.stab.btree, stab.btree, "H5O_modify");
H5AC_flush (f, NULL, 0, TRUE);
ptr = H5O_read (f, oh, NULL, H5O_STAB, 1, &ro);
CHECK_PTR (ptr, "H5O_read");
VERIFY (ptr, &ro, "H5O_read");
VERIFY (ro.btree, stab.btree, "H5O_read");
VERIFY (ro.heap, stab.heap, "H5O_read");
/*
* Test creation of a bunch of messages one after another to see
* what happens when the object header overflows in core.
*/
MESSAGE (8, print_func("Overflowing header in core...\n"););
for (i=0; i<40; i++) {
stab.btree = (i+1)*1000 + 1;
stab.heap = (i+1)*1000 + 2;
status = H5O_modify (f, oh, NULL, NULL, H5O_STAB, H5O_NEW_MESG, &stab);
CHECK (status, FAIL, "H5O_modify");
}
H5AC_flush (f, NULL, 0, TRUE);
/*
* Test creation of a bunch of messages one after another to see
* what happens when the object header overflows on disk.
*/
MESSAGE (8, print_func("Overflowing header on disk...\n"););
for (i=0; i<10; i++) {
stab.btree = (i+1)*1000 + 10;
stab.heap = (i+1)*1000 + 20;
status = H5O_modify (f, oh, NULL, NULL, H5O_STAB, H5O_NEW_MESG, &stab);
CHECK (status, FAIL, "H5O_modify");
H5AC_flush (f, NULL, 0, TRUE);
}
/* close the file */
H5Fclose (fid);
}