mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-17 16:10:24 +08:00
[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:
parent
a905a3a1e3
commit
0d050fcd57
@ -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
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
171
test/tohdr.c
Normal 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);
|
||||
}
|
Loading…
Reference in New Issue
Block a user