diff options
Diffstat (limited to 'test/gheap.c')
-rw-r--r-- | test/gheap.c | 171 |
1 files changed, 130 insertions, 41 deletions
diff --git a/test/gheap.c b/test/gheap.c index c8b27fb..a296feb 100644 --- a/test/gheap.c +++ b/test/gheap.c @@ -51,7 +51,7 @@ const char *FILENAME[] = { "gheap2", "gheap3", "gheap4", - "gheapooo", + "gheap5", NULL }; @@ -82,18 +82,28 @@ const char *FILENAME[] = { static int test_monotonic_increasing(hid_t fapl) { - hid_t fid = -1; /* HDF5 file ID */ - H5F_t *f = NULL; /* file object pointer */ - H5HG_t obj[N_GHEAP_OBJS]; /* global heap objects */ - uint8_t in[OBJ_BUF_SIZE]; /* global heap data sent */ - uint8_t out[OBJ_BUF_SIZE]; /* global heap data received */ + char *filename = NULL; /* VFD-dependent filename */ + hid_t fid = -1; /* HDF5 file ID */ + H5F_t *f = NULL; /* file object pointer */ + H5HG_t *obj = NULL; /* global heap objects */ + uint8_t *in = NULL; /* global heap data sent */ + uint8_t *out = NULL; /* global heap data received */ unsigned i; /* iterator */ - size_t size; /* heap object size */ - int nerrors = 0; /* # of errors encountered */ - char filename[FILENAME_SIZE]; /* VFD-dependent filename */ + size_t size; /* heap object size */ + int nerrors = 0; /* # of errors encountered */ TESTING("monotonically increasing lengths"); + /* allocate memory */ + if(NULL == (filename = (char *)HDcalloc(FILENAME_SIZE, sizeof(char)))) + goto error; + if(NULL == (obj = (H5HG_t *)HDcalloc(N_GHEAP_OBJS, sizeof(H5HG_t)))) + goto error; + if(NULL == (in = (uint8_t *)HDcalloc(OBJ_BUF_SIZE, sizeof(uint8_t)))) + goto error; + if(NULL == (out = (uint8_t *)HDcalloc(OBJ_BUF_SIZE, sizeof(uint8_t)))) + goto error; + /* Open a clean file */ h5_fixname(FILENAME[0], fapl, filename, sizeof(filename)); if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) @@ -142,6 +152,11 @@ test_monotonic_increasing(hid_t fapl) if(H5Fclose(fid) < 0) goto error; if(nerrors) goto error; + HDfree(filename); + HDfree(obj); + HDfree(in); + HDfree(out); + PASSED(); return 0; @@ -149,6 +164,14 @@ error: H5E_BEGIN_TRY { H5Fclose(fid); } H5E_END_TRY; + if(filename) + HDfree(filename); + if(obj) + HDfree(obj); + if(in) + HDfree(in); + if(out) + HDfree(out); return MAX(1, nerrors); } /* end test_monotonic_increasing() */ @@ -170,18 +193,28 @@ error: static int test_monotonic_decreasing(hid_t fapl) { - hid_t fid = -1; /* HDF5 file ID */ - H5F_t *f = NULL; /* file object pointer */ - H5HG_t obj[N_GHEAP_OBJS]; /* global heap objects */ - uint8_t in[OBJ_BUF_SIZE]; /* global heap data sent */ - uint8_t out[OBJ_BUF_SIZE]; /* global heap data received */ + char *filename = NULL; /* VFD-dependent filename */ + hid_t fid = -1; /* HDF5 file ID */ + H5F_t *f = NULL; /* file object pointer */ + H5HG_t *obj = NULL; /* global heap objects */ + uint8_t *in = NULL; /* global heap data sent */ + uint8_t *out = NULL; /* global heap data received */ unsigned i; /* iterator */ - size_t size; /* heap object size */ - int nerrors = 0; /* # of errors encountered */ - char filename[FILENAME_SIZE]; /* VFD-dependent filename */ + size_t size; /* heap object size */ + int nerrors = 0; /* # of errors encountered */ TESTING("monotonically decreasing lengths"); + /* allocate memory */ + if(NULL == (filename = (char *)HDcalloc(FILENAME_SIZE, sizeof(char)))) + goto error; + if(NULL == (obj = (H5HG_t *)HDcalloc(N_GHEAP_OBJS, sizeof(H5HG_t)))) + goto error; + if(NULL == (in = (uint8_t *)HDcalloc(OBJ_BUF_SIZE, sizeof(uint8_t)))) + goto error; + if(NULL == (out = (uint8_t *)HDcalloc(OBJ_BUF_SIZE, sizeof(uint8_t)))) + goto error; + /* Open a clean file */ h5_fixname(FILENAME[1], fapl, filename, sizeof(filename)); if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) @@ -194,7 +227,7 @@ test_monotonic_decreasing(hid_t fapl) /* Write the objects, monotonically decreasing in length. */ for(i = 0; i < N_GHEAP_OBJS; i++) { - size = 1024 - i; + size = N_GHEAP_OBJS - i; HDmemset(out, 'A' + (int)i % 26, size); H5Eclear2(H5E_DEFAULT); if(H5HG_insert(f, H5AC_dxpl_id, size, out, obj+i) < 0) { @@ -206,7 +239,7 @@ test_monotonic_decreasing(hid_t fapl) /* Now try to read each object back. */ for(i = 0; i < N_GHEAP_OBJS; i++) { - size = OBJ_BUF_SIZE - i; + size = N_GHEAP_OBJS - i; HDmemset(out, 'A' + (int)i % 26, size); H5Eclear2(H5E_DEFAULT); if(NULL == H5HG_read(f, H5AC_dxpl_id, obj+i, in, NULL)) { @@ -222,6 +255,12 @@ test_monotonic_decreasing(hid_t fapl) if(H5Fclose(fid) < 0) goto error; if(nerrors) goto error; + + HDfree(filename); + HDfree(obj); + HDfree(in); + HDfree(out); + PASSED(); return 0; @@ -229,6 +268,14 @@ test_monotonic_decreasing(hid_t fapl) H5E_BEGIN_TRY { H5Fclose(fid); } H5E_END_TRY; + if(filename) + HDfree(filename); + if(obj) + HDfree(obj); + if(in) + HDfree(in); + if(out) + HDfree(out); return MAX(1, nerrors); } /* end test_monotonic_decreasing() */ @@ -250,17 +297,25 @@ test_monotonic_decreasing(hid_t fapl) static int test_complete_removal(hid_t fapl) { - hid_t fid = -1; /* HDF5 file ID */ - H5F_t *f = NULL; /* file object pointer */ - H5HG_t obj[N_GHEAP_OBJS]; /* global heap objects */ - uint8_t out[OBJ_BUF_SIZE]; /* global heap data received */ + char *filename = NULL; /* VFD-dependent filename */ + hid_t fid = -1; /* HDF5 file ID */ + H5F_t *f = NULL; /* file object pointer */ + H5HG_t *obj = NULL; /* global heap objects */ + uint8_t *out = NULL; /* global heap data received */ unsigned i; /* iterator */ - size_t size; /* heap object size */ - int nerrors = 0; /* # of errors encountered */ - char filename[FILENAME_SIZE]; /* VFD-dependent filename */ + size_t size; /* heap object size */ + int nerrors = 0; /* # of errors encountered */ TESTING("complete object removal"); + /* allocate memory */ + if(NULL == (filename = (char *)HDcalloc(FILENAME_SIZE, sizeof(char)))) + goto error; + if(NULL == (obj = (H5HG_t *)HDcalloc(N_GHEAP_OBJS, sizeof(H5HG_t)))) + goto error; + if(NULL == (out = (uint8_t *)HDcalloc(OBJ_BUF_SIZE, sizeof(uint8_t)))) + goto error; + /* Open a clean file */ h5_fixname(FILENAME[2], fapl, filename, sizeof(filename)); if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) @@ -272,7 +327,7 @@ test_complete_removal(hid_t fapl) } /* end if */ /* Create some stuff */ - for(i=0; i < N_GHEAP_OBJS; i++) { + for(i = 0; i < N_GHEAP_OBJS; i++) { size = i % 30 + 100; HDmemset(out, 'A' + (int)i % 26, size); H5Eclear2(H5E_DEFAULT); @@ -295,6 +350,10 @@ test_complete_removal(hid_t fapl) if(H5Fclose(fid) < 0) goto error; if(nerrors) goto error; + HDfree(filename); + HDfree(obj); + HDfree(out); + PASSED(); return 0; @@ -302,6 +361,12 @@ test_complete_removal(hid_t fapl) H5E_BEGIN_TRY { H5Fclose(fid); } H5E_END_TRY; + if(filename) + HDfree(filename); + if(obj) + HDfree(obj); + if(out) + HDfree(out); return MAX(1, nerrors); } /* end test_complete_removal() */ @@ -324,17 +389,25 @@ test_complete_removal(hid_t fapl) static int test_partial_removal(hid_t fapl) { - hid_t fid = -1; /* HDF5 file ID */ - H5F_t *f = NULL; /* file object pointer */ - H5HG_t obj[N_GHEAP_OBJS]; /* global heap objects */ - uint8_t out[OBJ_BUF_SIZE]; /* global heap data received */ + char *filename = NULL; /* VFD-dependent filename */ + hid_t fid = -1; /* HDF5 file ID */ + H5F_t *f = NULL; /* file object pointer */ + H5HG_t *obj = NULL; /* global heap objects */ + uint8_t *out = NULL; /* global heap data received */ unsigned i; /* iterator */ - size_t size; /* heap object size */ - int nerrors = 0; /* # of errors encountered */ - char filename[FILENAME_SIZE]; /* VFD-dependent filename */ + size_t size; /* heap object size */ + int nerrors = 0; /* # of errors encountered */ TESTING("partial object removal"); + /* allocate memory */ + if(NULL == (filename = (char *)HDcalloc(FILENAME_SIZE, sizeof(char)))) + goto error; + if(NULL == (obj = (H5HG_t *)HDcalloc(N_GHEAP_OBJS, sizeof(H5HG_t)))) + goto error; + if(NULL == (out = (uint8_t *)HDcalloc(OBJ_BUF_SIZE, sizeof(uint8_t)))) + goto error; + /* Open a clean file */ h5_fixname(FILENAME[3], fapl, filename, sizeof(filename)); if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) @@ -375,6 +448,10 @@ test_partial_removal(hid_t fapl) if(H5Fclose(fid) < 0) goto error; if(nerrors) goto error; + HDfree(filename); + HDfree(obj); + HDfree(out); + PASSED(); return 0; @@ -382,6 +459,12 @@ test_partial_removal(hid_t fapl) H5E_BEGIN_TRY { H5Fclose(fid); } H5E_END_TRY; + if(filename) + HDfree(filename); + if(obj) + HDfree(obj); + if(out) + HDfree(out); return MAX(1, nerrors); } /* end test_partial_removal() */ @@ -405,15 +488,18 @@ test_partial_removal(hid_t fapl) static int test_ooo_indices(hid_t fapl) { - hid_t fid = -1; /* HDF5 file ID */ - H5F_t *f = NULL; /* file object pointer */ - H5HG_t *obj = NULL; /* global heap objects */ - unsigned i, j; /* iterators */ - int nerrors = 0; /* # of errors encountered */ - char filename[FILENAME_SIZE]; /* VFD-dependent filename */ + char *filename = NULL; /* VFD-dependent filename */ + hid_t fid = -1; /* HDF5 file ID */ + H5F_t *f = NULL; /* file object pointer */ + H5HG_t *obj = NULL; /* global heap objects */ + unsigned i, j; /* iterators */ + int nerrors = 0; /* # of errors encountered */ TESTING("out of order indices"); + /* allocate memory */ + if(NULL == (filename = (char *)HDcalloc(FILENAME_SIZE, sizeof(char)))) + goto error; if(NULL == (obj = (H5HG_t *)HDmalloc(2000 * sizeof(*obj)))) goto error; @@ -483,8 +569,9 @@ test_ooo_indices(hid_t fapl) if(H5Fclose(fid) < 0) goto error; if(nerrors) goto error; + HDfree(filename); HDfree(obj); - obj = NULL; + PASSED(); return 0; @@ -492,6 +579,8 @@ error: H5E_BEGIN_TRY { H5Fclose(fid); } H5E_END_TRY; + if(filename) + HDfree(filename); if(obj) HDfree(obj); return MAX(1, nerrors); |