diff options
Diffstat (limited to 'test/farray.c')
| -rw-r--r-- | test/farray.c | 1468 |
1 files changed, 803 insertions, 665 deletions
diff --git a/test/farray.c b/test/farray.c index 7a79aaa..b772ce3 100644 --- a/test/farray.c +++ b/test/farray.c @@ -1,16 +1,13 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * * * * This file is part of HDF5. The full HDF5 copyright notice, including * * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * + * the COPYING file, which can be found at the root of the source code * + * distribution tree, or in https://www.hdfgroup.org/licenses. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* @@ -22,62 +19,61 @@ * This file needs to access private datatypes from the H5FA package. * This file also needs to access the fixed array testing code. */ -#define H5FA_PACKAGE +#define H5FA_FRIEND /*suppress error about including H5FApkg */ #define H5FA_TESTING -#include "H5FApkg.h" /* Fixed Arrays */ +#include "H5FApkg.h" /* Fixed Arrays */ /* Other private headers that this test requires */ -#include "H5Iprivate.h" /* IDs */ -#include "H5VMprivate.h" /* Vectors and arrays */ - +#include "H5CXprivate.h" /* API Contexts */ +#include "H5Iprivate.h" /* IDs */ +#include "H5VMprivate.h" /* Vectors and arrays */ +#include "H5VLprivate.h" /* Virtual Object Layer */ /* Local macros */ /* Max. testfile name length */ -#define FARRAY_FILENAME_LEN 1024 +#define FARRAY_FILENAME_LEN 1024 /* Fixed array creation values */ -#define ELMT_SIZE sizeof(uint64_t) -#define MAX_DBLOCK_PAGE_NELMTS_BITS 10 /* 2^10 = 1024 elements per data block page */ +#define ELMT_SIZE sizeof(uint64_t) +#define MAX_DBLOCK_PAGE_NELMTS_BITS 10 /* 2^10 = 1024 elements per data block page */ /* Testing # of elements in the Fixed Array */ -#define TEST_NELMTS 20000 +#define TEST_NELMTS 20000 /* Convenience macros for computing earray state */ -#define FA_HDR_SIZE 28 /* hard-coded */ -#define DBLOCK_PREFIX 18 /* hard-coded */ +#define FA_HDR_SIZE 28 /* hard-coded */ +#define DBLOCK_PREFIX 18 /* hard-coded */ /* 4 giga-elements: max chunk size */ -#define MAX_NELMTS ((unsigned long long)4*1024*1024*1024) /* 4 giga-elements */ +#define MAX_NELMTS ((unsigned long long)4 * 1024 * 1024 * 1024) /* 4 giga-elements */ /* Iterator parameter values */ -#define FA_CYC_COUNT 4 - +#define FA_CYC_COUNT 4 /* Local typedefs */ /* Types of tests to perform */ typedef enum { - FARRAY_TEST_NORMAL, /* "Normal" test, with no testing parameters set */ - FARRAY_TEST_REOPEN, /* Set the reopen_array flag */ - FARRAY_TEST_NTESTS /* The number of test types, must be last */ + FARRAY_TEST_NORMAL, /* "Normal" test, with no testing parameters set */ + FARRAY_TEST_REOPEN, /* Set the reopen_array flag */ + FARRAY_TEST_NTESTS /* The number of test types, must be last */ } farray_test_type_t; /* Types of iteration to perform */ typedef enum { - FARRAY_ITER_FW, /* "Forward" iteration */ - FARRAY_ITER_RV, /* "Reverse" iteration */ - FARRAY_ITER_RND, /* "Random" iteration */ - FARRAY_ITER_CYC, /* "Cyclic" iteration */ - FARRAY_ITER_NITERS /* The number of iteration types, must be last */ + FARRAY_ITER_FW, /* "Forward" iteration */ + FARRAY_ITER_RV, /* "Reverse" iteration */ + FARRAY_ITER_RND, /* "Random" iteration */ + FARRAY_ITER_CYC, /* "Cyclic" iteration */ + FARRAY_ITER_NITERS /* The number of iteration types, must be last */ } farray_iter_type_t; - /* Fixed array state information */ typedef struct farray_state_t { - hsize_t hdr_size; /* Size of header */ - hsize_t dblk_size; /* Size of data block */ - hsize_t nelmts; /* # of elements */ + hsize_t hdr_size; /* Size of header */ + hsize_t dblk_size; /* Size of data block */ + hsize_t nelmts; /* # of elements */ } farray_state_t; /* Forward decl. */ @@ -86,24 +82,20 @@ typedef struct farray_test_param_t farray_test_param_t; /* Fixed array iterator class */ typedef struct farray_iter_t { void *(*init)(const H5FA_create_t *cparam, const farray_test_param_t *tparam, - hsize_t cnt); /* Initialize/allocate iterator private info */ - hssize_t (*next)(void *info); /* Get the next element to test */ - herr_t (*term)(void *info); /* Shutdown/free iterator private info */ + hsize_t cnt); /* Initialize/allocate iterator private info */ + hssize_t (*next)(void *info); /* Get the next element to test */ + herr_t (*term)(void *info); /* Shutdown/free iterator private info */ } farray_iter_t; - /* Testing parameters */ struct farray_test_param_t { - farray_test_type_t reopen_array; /* Whether to re-open the array during the test */ - hsize_t nelmts; /* # of elements to set for the fixed array */ - const farray_iter_t *fiter; /* Iterator to use for this test */ + farray_test_type_t reopen_array; /* Whether to re-open the array during the test */ + hsize_t nelmts; /* # of elements to set for the fixed array */ + const farray_iter_t *fiter; /* Iterator to use for this test */ }; /* Local variables */ -const char *FILENAME[] = { - "farray", - NULL -}; +const char *FILENAME[] = {"farray", "farray_tmp", NULL}; /* Filename to use for all tests */ char filename_g[FARRAY_FILENAME_LEN]; @@ -111,127 +103,117 @@ char filename_g[FARRAY_FILENAME_LEN]; /* Empty file size */ h5_stat_size_t empty_size_g; - /*------------------------------------------------------------------------- - * Function: init_cparam + * Function: init_cparam * - * Purpose: Initialize array creation parameter structure + * Purpose: Initialize array creation parameter structure * - * Return: Success: 0 - * Failure: -1 + * Return: SUCCEED/FAIL * *------------------------------------------------------------------------- */ -static int +static herr_t init_cparam(H5FA_create_t *cparam, farray_test_param_t *tparam) { /* Wipe out background */ HDmemset(cparam, 0, sizeof(*cparam)); - cparam->cls = H5FA_CLS_TEST; - cparam->raw_elmt_size = ELMT_SIZE; + cparam->cls = H5FA_CLS_TEST; + cparam->raw_elmt_size = ELMT_SIZE; cparam->max_dblk_page_nelmts_bits = MAX_DBLOCK_PAGE_NELMTS_BITS; - cparam->nelmts = tparam->nelmts; + cparam->nelmts = tparam->nelmts; - return(0); + return SUCCEED; } /* init_cparam() */ - /*------------------------------------------------------------------------- - * Function: create_file + * Function: create_file * - * Purpose: Create file and retrieve pointer to internal file object + * Purpose: Create file and retrieve pointer to internal file object * - * Return: Success: 0 - * Failure: -1 + * Return: SUCCEED/FAIL * *------------------------------------------------------------------------- */ -static int -create_file(hid_t fapl, hid_t *file, H5F_t **f) +static herr_t +create_file(hid_t fapl_id, hid_t *fid, H5F_t **f) { /* Create the file to work on */ - if((*file = H5Fcreate(filename_g, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) - FAIL_STACK_ERROR + if ((*fid = H5Fcreate(filename_g, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id)) < 0) + FAIL_STACK_ERROR; /* Get a pointer to the internal file object */ - if(NULL == (*f = (H5F_t *)H5I_object(*file))) - FAIL_STACK_ERROR + if (NULL == (*f = (H5F_t *)H5VL_object(*fid))) + FAIL_STACK_ERROR; /* Ignore metadata tags in the file's cache */ - if(H5AC_ignore_tags(*f) < 0) { - FAIL_STACK_ERROR - } + if (H5AC_ignore_tags(*f) < 0) + FAIL_STACK_ERROR; /* Success */ - return(0); + return SUCCEED; error: - return(-1); + return FAIL; } /* create_file() */ - /*------------------------------------------------------------------------- - * Function: check_stats + * Function: check_stats * - * Purpose: Verify stats for a fixed array + * Purpose: Verify stats for a fixed array * - * Return: Success: 0 - * Failure: -1 + * Return: SUCCEED/FAIL * *------------------------------------------------------------------------- */ -static int +static herr_t check_stats(const H5FA_t *fa, const farray_state_t *state) { - H5FA_stat_t farray_stats; /* Statistics about the array */ + H5FA_stat_t farray_stats; /* Statistics about the array */ /* Get statistics for fixed array and verify they are correct */ - if(H5FA_get_stats(fa, &farray_stats) < 0) - FAIL_STACK_ERROR + if (H5FA_get_stats(fa, &farray_stats) < 0) + FAIL_STACK_ERROR; /* Compare information */ - if(farray_stats.hdr_size != state->hdr_size) { - HDfprintf(stdout, "farray_stats.hdr_size = %Hu, state->hdr_size = %Hu\n", - farray_stats.hdr_size, state->hdr_size); - TEST_ERROR - } /* end if */ + if (farray_stats.hdr_size != state->hdr_size) { + HDfprintf(stdout, "farray_stats.hdr_size = %" PRIuHSIZE ", state->hdr_size = %" PRIuHSIZE "\n", + farray_stats.hdr_size, state->hdr_size); + TEST_ERROR; + } - if(farray_stats.dblk_size != state->dblk_size) { - HDfprintf(stdout, "farray_stats.dblk_size = %Hu, state->dblk_size = %Hu\n", - farray_stats.dblk_size, state->dblk_size); - TEST_ERROR - } /* end if */ + if (farray_stats.dblk_size != state->dblk_size) { + HDfprintf(stdout, "farray_stats.dblk_size = %" PRIuHSIZE ", state->dblk_size = %" PRIuHSIZE "\n", + farray_stats.dblk_size, state->dblk_size); + TEST_ERROR; + } - if(farray_stats.nelmts != state->nelmts) { - HDfprintf(stdout, "farray_stats.nelmts = %Hu, state->nelmts = %Hu\n", - farray_stats.nelmts, state->nelmts); - TEST_ERROR - } /* end if */ + if (farray_stats.nelmts != state->nelmts) { + HDfprintf(stdout, "farray_stats.nelmts = %" PRIuHSIZE ", state->nelmts = %" PRIuHSIZE "\n", + farray_stats.nelmts, state->nelmts); + TEST_ERROR; + } - /* All tests passed */ - return(0); + /* Success */ + return SUCCEED; error: - return(-1); + return FAIL; } /* check_stats() */ - /*------------------------------------------------------------------------- - * Function: set_fa_state + * Function: set_fa_state * - * Purpose: Set the state of the Fixed Array + * Purpose: Set the state of the Fixed Array * - * Return: does not fail - * - * Programmer: Vailin Choi; 5th August, 2009 + * Return: SUCCEED/FAIL * *------------------------------------------------------------------------- */ -static int +static herr_t set_fa_state(const H5FA_create_t *cparam, farray_state_t *state) { - size_t dblk_page_nelmts; /* # of elements per page */ + size_t dblk_page_nelmts; /* # of elements per page */ /* Sanity check */ HDassert(cparam); @@ -239,196 +221,190 @@ set_fa_state(const H5FA_create_t *cparam, farray_state_t *state) /* Compute the state of the fixed array */ state->hdr_size = FA_HDR_SIZE; - state->nelmts = cparam->nelmts; + state->nelmts = cparam->nelmts; dblk_page_nelmts = (size_t)1 << cparam->max_dblk_page_nelmts_bits; - if(state->nelmts > dblk_page_nelmts) { - size_t npages = (size_t)(((state->nelmts + dblk_page_nelmts) - 1) / dblk_page_nelmts); - size_t dblk_page_init_size = (npages + 7) / 8; - hsize_t checksum_size = npages * 4; + if (state->nelmts > dblk_page_nelmts) { + size_t npages = (size_t)(((state->nelmts + dblk_page_nelmts) - 1) / dblk_page_nelmts); + size_t dblk_page_init_size = (npages + 7) / 8; + hsize_t checksum_size = npages * 4; - state->dblk_size = DBLOCK_PREFIX + dblk_page_init_size + checksum_size + - state->nelmts * cparam->raw_elmt_size; - } else - state->dblk_size = DBLOCK_PREFIX + state->nelmts * cparam->raw_elmt_size; + state->dblk_size = + DBLOCK_PREFIX + dblk_page_init_size + checksum_size + state->nelmts * cparam->raw_elmt_size; + } + else + state->dblk_size = DBLOCK_PREFIX + state->nelmts * cparam->raw_elmt_size; - return(0); + return SUCCEED; } /* end set_fa_state() */ - /*------------------------------------------------------------------------- - * Function: reopen_file + * Function: reopen_file * - * Purpose: Perform common "re-open" operations on file & array for testing + * Purpose: Perform common "re-open" operations on file & array for testing * - * Return: Success: 0 - * Failure: -1 + * Return: SUCCEED/FAIL * *------------------------------------------------------------------------- */ static int -reopen_file(hid_t *file, H5F_t **f, hid_t fapl, hid_t dxpl, - H5FA_t **fa, haddr_t fa_addr, const farray_test_param_t *tparam) +reopen_file(hid_t *fid, H5F_t **f, hid_t fapl_id, H5FA_t **fa, haddr_t fa_addr, + const farray_test_param_t *tparam) { /* Check for closing & re-opening the array */ /* (actually will close & re-open the file as well) */ - if(tparam->reopen_array) { + if (tparam->reopen_array) { + /* Close array, if given */ - if(fa) { - if(H5FA_close(*fa, dxpl) < 0) - FAIL_STACK_ERROR + if (fa && *fa) { + if (H5FA_close(*fa) < 0) + FAIL_STACK_ERROR; *fa = NULL; - } /* end if */ + } /* Close file */ - if(H5Fclose(*file) < 0) - FAIL_STACK_ERROR - *file = (-1); - *f = NULL; + if (*fid) { + if (H5Fclose(*fid) < 0) + FAIL_STACK_ERROR; + *fid = H5I_INVALID_HID; + *f = NULL; + } /* Re-open the file */ - if((*file = H5Fopen(filename_g, H5F_ACC_RDWR, fapl)) < 0) - FAIL_STACK_ERROR + if ((*fid = H5Fopen(filename_g, H5F_ACC_RDWR, fapl_id)) < 0) + FAIL_STACK_ERROR; /* Get a pointer to the internal file object */ - if(NULL == (*f = (H5F_t *)H5I_object(*file))) - FAIL_STACK_ERROR + if (NULL == (*f = (H5F_t *)H5VL_object(*fid))) + FAIL_STACK_ERROR; /* Ignore metadata tags in the file's cache */ - if(H5AC_ignore_tags(*f) < 0) { - FAIL_STACK_ERROR - } + if (H5AC_ignore_tags(*f) < 0) + FAIL_STACK_ERROR; /* Re-open array, if given */ - if(fa) { - if(NULL == (*fa = H5FA_open(*f, dxpl, fa_addr, NULL))) - FAIL_STACK_ERROR - } /* end if */ - } /* end if */ + if (fa) + if (NULL == (*fa = H5FA_open(*f, fa_addr, NULL))) + FAIL_STACK_ERROR; + } /* Success */ - return(0); + return SUCCEED; error: - return(-1); + return FAIL; } /* reopen_file() */ - /*------------------------------------------------------------------------- - * Function: create_array + * Function: create_array * - * Purpose: Create a fixed array and perform initial checks + * Purpose: Create a fixed array and perform initial checks * - * Return: Success: 0 - * Failure: -1 + * Return: SUCCEED/FAIL * *------------------------------------------------------------------------- */ -static int -create_array(H5F_t *f, hid_t dxpl, const H5FA_create_t *cparam, - H5FA_t **fa, haddr_t *fa_addr) +static herr_t +create_array(H5F_t *f, const H5FA_create_t *cparam, H5FA_t **fa, haddr_t *fa_addr) { - farray_state_t state; /* State of extensible array */ + farray_state_t state; /* State of extensible array */ /* Create array */ - if(NULL == (*fa = H5FA_create(f, dxpl, cparam, NULL))) - FAIL_STACK_ERROR + if (NULL == (*fa = H5FA_create(f, cparam, NULL))) + FAIL_STACK_ERROR; /* Check status of array */ - if(H5FA_get_addr(*fa, fa_addr) < 0) - FAIL_STACK_ERROR - if(!H5F_addr_defined(*fa_addr)) - TEST_ERROR + if (H5FA_get_addr(*fa, fa_addr) < 0) + FAIL_STACK_ERROR; + if (!H5F_addr_defined(*fa_addr)) + TEST_ERROR; + + /* Check array stats */ HDmemset(&state, 0, sizeof(state)); state.hdr_size = FA_HDR_SIZE; - state.nelmts = cparam->nelmts; - if(check_stats(*fa, &state)) - TEST_ERROR + state.nelmts = cparam->nelmts; + if (check_stats(*fa, &state)) + TEST_ERROR; /* Success */ - return(0); + return SUCCEED; error: - return(-1); + return FAIL; } /* create_array() */ - /*------------------------------------------------------------------------- - * Function: verify_cparam + * Function: verify_cparam * - * Purpose: Verify creation parameters are correct + * Purpose: Verify creation parameters are correct * - * Return: Success: 0 - * Failure: -1 + * Return: SUCCEED/FAIL * *------------------------------------------------------------------------- */ -static int +static herr_t verify_cparam(const H5FA_t *fa, const H5FA_create_t *cparam) { - H5FA_create_t test_cparam; /* Creation parameters for array */ + H5FA_create_t test_cparam; /* Creation parameters for array */ /* Retrieve creation parameters */ HDmemset(&test_cparam, 0, sizeof(H5FA_create_t)); - if(H5FA_get_cparam_test(fa, &test_cparam) < 0) - FAIL_STACK_ERROR + if (H5FA__get_cparam_test(fa, &test_cparam) < 0) + FAIL_STACK_ERROR; /* Verify creation parameters */ - if(H5FA_cmp_cparam_test(cparam, &test_cparam)) - TEST_ERROR + if (H5FA__cmp_cparam_test(cparam, &test_cparam)) + TEST_ERROR; /* Success */ - return(0); + return SUCCEED; error: - return(-1); + return FAIL; } /* verify_cparam() */ - /*------------------------------------------------------------------------- - * Function: finish + * Function: finish * - * Purpose: Close array, delete array, close file and verify that file + * Purpose: Close array, delete array, close file and verify that file * is empty size * - * Return: Success: 0 - * Failure: -1 + * Return: SUCCEED/FAIL * *------------------------------------------------------------------------- */ -static int -finish(hid_t file, hid_t fapl, H5F_t *f, H5FA_t *fa, haddr_t fa_addr) +static herr_t +finish(hid_t fid, hid_t fapl_id, H5F_t *f, H5FA_t *fa, haddr_t fa_addr) { - h5_stat_size_t file_size; /* File size, after deleting array */ + h5_stat_size_t file_size; /* File size, after deleting array */ /* Close the fixed array */ - if(H5FA_close(fa, H5P_DATASET_XFER_DEFAULT) < 0) - FAIL_STACK_ERROR + if (H5FA_close(fa) < 0) + FAIL_STACK_ERROR; /* Delete array */ - if(H5FA_delete(f, H5P_DATASET_XFER_DEFAULT, fa_addr, NULL) < 0) - FAIL_STACK_ERROR + if (H5FA_delete(f, fa_addr, NULL) < 0) + FAIL_STACK_ERROR; /* Close the file */ - if(H5Fclose(file) < 0) - FAIL_STACK_ERROR + if (H5Fclose(fid) < 0) + FAIL_STACK_ERROR; /* Get the size of the file */ - if((file_size = h5_get_file_size(filename_g, fapl)) < 0) - TEST_ERROR + if ((file_size = h5_get_file_size(filename_g, fapl_id)) < 0) + TEST_ERROR; /* Verify the file is correct size */ - if(file_size != empty_size_g) - TEST_ERROR + if (file_size != empty_size_g) + TEST_ERROR; /* Success */ - return(0); + return SUCCEED; error: - return(-1); + return FAIL; } /* finish() */ - /*------------------------------------------------------------------------- * Function: test_create * @@ -440,16 +416,16 @@ error: *------------------------------------------------------------------------- */ static unsigned -test_create(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t UNUSED *tparam) +test_create(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t H5_ATTR_UNUSED *tparam) { - hid_t file = -1; /* File ID */ - H5F_t *f = NULL; /* Internal file object pointer */ - H5FA_t *fa = NULL; /* Fixed array wrapper */ - haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ + hid_t file = -1; /* File ID */ + H5F_t *f = NULL; /* Internal file object pointer */ + H5FA_t *fa = NULL; /* Fixed array wrapper */ + haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ /* Create file & retrieve pointer to internal file object */ - if(create_file(fapl, &file, &f) < 0) - TEST_ERROR + if (create_file(fapl, &file, &f) < 0) + TEST_ERROR; /* * Display testing message @@ -457,59 +433,65 @@ test_create(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t UNUSED *tpara TESTING("invalid fixed array creation parameters"); #ifndef NDEBUG -{ - H5FA_create_t test_cparam; /* Creation parameters for array */ - - /* Set invalid element size */ - HDmemcpy(&test_cparam, cparam, sizeof(test_cparam)); - test_cparam.raw_elmt_size = 0; - H5E_BEGIN_TRY { - fa = H5FA_create(f, H5P_DATASET_XFER_DEFAULT, &test_cparam, NULL); - } H5E_END_TRY; - if(fa) { - /* Close opened fixed array */ - H5FA_close(fa, H5P_DATASET_XFER_DEFAULT); - fa = NULL; - - /* Indicate error */ - TEST_ERROR - } /* end if */ - - /* Set invalid max. # of elements bits */ - HDmemcpy(&test_cparam, cparam, sizeof(test_cparam)); - test_cparam.max_dblk_page_nelmts_bits = 0; - H5E_BEGIN_TRY { - fa = H5FA_create(f, H5P_DATASET_XFER_DEFAULT, &test_cparam, NULL); - } H5E_END_TRY; - if(fa) { - /* Close opened fixed array */ - H5FA_close(fa, H5P_DATASET_XFER_DEFAULT); - fa = NULL; - - /* Indicate error */ - TEST_ERROR - } /* end if */ + { + H5FA_create_t test_cparam; /* Creation parameters for array */ + + /* Set invalid element size */ + HDmemcpy(&test_cparam, cparam, sizeof(test_cparam)); + test_cparam.raw_elmt_size = 0; + H5E_BEGIN_TRY + { + fa = H5FA_create(f, &test_cparam, NULL); + } + H5E_END_TRY; + if (fa) { + /* Close opened fixed array */ + H5FA_close(fa); + fa = NULL; + + /* Indicate error */ + TEST_ERROR; + } /* end if */ - /* Set invalid max. # of elements */ - HDmemcpy(&test_cparam, cparam, sizeof(test_cparam)); - test_cparam.nelmts = 0; - H5E_BEGIN_TRY { - fa = H5FA_create(f, H5P_DATASET_XFER_DEFAULT, &test_cparam, NULL); - } H5E_END_TRY; - if(fa) { - /* Close opened fixed array */ - H5FA_close(fa, H5P_DATASET_XFER_DEFAULT); - fa = NULL; + /* Set invalid max. # of elements bits */ + HDmemcpy(&test_cparam, cparam, sizeof(test_cparam)); + test_cparam.max_dblk_page_nelmts_bits = 0; + H5E_BEGIN_TRY + { + fa = H5FA_create(f, &test_cparam, NULL); + } + H5E_END_TRY; + if (fa) { + /* Close opened fixed array */ + H5FA_close(fa); + fa = NULL; + + /* Indicate error */ + TEST_ERROR; + } /* end if */ - /* Indicate error */ - TEST_ERROR - } /* end if */ + /* Set invalid max. # of elements */ + HDmemcpy(&test_cparam, cparam, sizeof(test_cparam)); + test_cparam.nelmts = 0; + H5E_BEGIN_TRY + { + fa = H5FA_create(f, &test_cparam, NULL); + } + H5E_END_TRY; + if (fa) { + /* Close opened fixed array */ + H5FA_close(fa); + fa = NULL; + + /* Indicate error */ + TEST_ERROR; + } /* end if */ - PASSED() -} -#else /* NDEBUG */ + PASSED(); + } +#else /* NDEBUG */ SKIPPED(); - puts(" Not tested when assertions are disabled"); + HDputs(" Not tested when assertions are disabled"); #endif /* NDEBUG */ /* @@ -518,38 +500,39 @@ test_create(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t UNUSED *tpara TESTING("fixed array creation"); /* Create array */ - if(create_array(f, H5P_DATASET_XFER_DEFAULT, cparam, &fa, &fa_addr) < 0) - TEST_ERROR + if (create_array(f, cparam, &fa, &fa_addr) < 0) + TEST_ERROR; - PASSED() + PASSED(); /* Verify the creation parameters */ TESTING("verify array creation parameters"); /* Verify the creation parameters */ - if(verify_cparam(fa, cparam) < 0) - TEST_ERROR + if (verify_cparam(fa, cparam) < 0) + TEST_ERROR; /* Close array, delete array, close file & verify file is empty */ - if(finish(file, fapl, f, fa, fa_addr) < 0) - TEST_ERROR + if (finish(file, fapl, f, fa, fa_addr) < 0) + TEST_ERROR; /* All tests passed */ - PASSED() + PASSED(); return 0; error: - H5E_BEGIN_TRY { - if(fa) - H5FA_close(fa, H5P_DATASET_XFER_DEFAULT); - H5Fclose(file); - } H5E_END_TRY; + H5E_BEGIN_TRY + { + if (fa) + H5FA_close(fa); + H5Fclose(file); + } + H5E_END_TRY; return 1; } /* end test_create() */ - /*------------------------------------------------------------------------- * Function: test_reopen * @@ -563,14 +546,14 @@ error: static unsigned test_reopen(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam) { - hid_t file = -1; /* File ID */ - H5F_t *f = NULL; /* Internal file object pointer */ - H5FA_t *fa = NULL; /* Fixed array wrapper */ - haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ + hid_t file = -1; /* File ID */ + H5F_t *f = NULL; /* Internal file object pointer */ + H5FA_t *fa = NULL; /* Fixed array wrapper */ + haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ /* Create file & retrieve pointer to internal file object */ - if(create_file(fapl, &file, &f) < 0) - TEST_ERROR + if (create_file(fapl, &file, &f) < 0) + TEST_ERROR; /* * Display testing message @@ -578,45 +561,46 @@ test_reopen(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam) TESTING("create, close & reopen fixed array"); /* Create array */ - if(create_array(f, H5P_DATASET_XFER_DEFAULT, cparam, &fa, &fa_addr) < 0) - TEST_ERROR + if (create_array(f, cparam, &fa, &fa_addr) < 0) + TEST_ERROR; /* Close the fixed array */ - if(H5FA_close(fa, H5P_DATASET_XFER_DEFAULT) < 0) - FAIL_STACK_ERROR + if (H5FA_close(fa) < 0) + FAIL_STACK_ERROR; /* Check for closing & re-opening the file */ - if(reopen_file(&file, &f, fapl, H5P_DATASET_XFER_DEFAULT, NULL, HADDR_UNDEF, tparam) < 0) - TEST_ERROR + if (reopen_file(&file, &f, fapl, NULL, HADDR_UNDEF, tparam) < 0) + TEST_ERROR; /* Re-open the array */ - if(NULL == (fa = H5FA_open(f, H5P_DATASET_XFER_DEFAULT, fa_addr, NULL))) - FAIL_STACK_ERROR + if (NULL == (fa = H5FA_open(f, fa_addr, NULL))) + FAIL_STACK_ERROR; /* Verify the creation parameters */ - if(verify_cparam(fa, cparam) < 0) - TEST_ERROR + if (verify_cparam(fa, cparam) < 0) + TEST_ERROR; /* Close array, delete array, close file & verify file is empty */ - if(finish(file, fapl, f, fa, fa_addr) < 0) - TEST_ERROR + if (finish(file, fapl, f, fa, fa_addr) < 0) + TEST_ERROR; /* All tests passed */ - PASSED() + PASSED(); return 0; error: - H5E_BEGIN_TRY { - if(fa) - H5FA_close(fa, H5P_DATASET_XFER_DEFAULT); - H5Fclose(file); - } H5E_END_TRY; + H5E_BEGIN_TRY + { + if (fa) + H5FA_close(fa); + H5Fclose(file); + } + H5E_END_TRY; return 1; } /* test_reopen() */ - /*------------------------------------------------------------------------- * Function: test_open_twice * @@ -628,99 +612,234 @@ error: *------------------------------------------------------------------------- */ static unsigned -test_open_twice(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam) +test_open_twice(hid_t fapl_id, H5FA_create_t *cparam, farray_test_param_t *tparam) { - hid_t file = -1; /* File ID */ - hid_t file2 = -1; /* File ID */ - H5F_t *f = NULL; /* Internal file object pointer */ - H5F_t *f2 = NULL; /* Internal file object pointer */ - H5FA_t *fa = NULL; /* Fixed array wrapper */ - H5FA_t *fa2 = NULL; /* Fixed array wrapper */ - haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ + hid_t fid = H5I_INVALID_HID; /* File ID */ + hid_t fid2 = H5I_INVALID_HID; /* File ID */ + H5F_t *f = NULL; /* Internal file object pointer */ + H5F_t *f2 = NULL; /* Internal file object pointer */ + H5FA_t *fa = NULL; /* Fixed array wrapper */ + H5FA_t *fa2 = NULL; /* Fixed array wrapper */ + haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ /* Create file & retrieve pointer to internal file object */ - if(create_file(fapl, &file, &f) < 0) - TEST_ERROR + if (create_file(fapl_id, &fid, &f) < 0) + TEST_ERROR; - /* - * Display testing message - */ + /* Display testing message */ TESTING("open fixed array twice"); /* Create array */ - if(create_array(f, H5P_DATASET_XFER_DEFAULT, cparam, &fa, &fa_addr) < 0) - TEST_ERROR + if (create_array(f, cparam, &fa, &fa_addr) < 0) + TEST_ERROR; /* Open the array again, through the first file handle */ - if(NULL == (fa2 = H5FA_open(f, H5P_DATASET_XFER_DEFAULT, fa_addr, NULL))) - FAIL_STACK_ERROR + if (NULL == (fa2 = H5FA_open(f, fa_addr, NULL))) + FAIL_STACK_ERROR; /* Verify the creation parameters */ - if(verify_cparam(fa, cparam) < 0) - TEST_ERROR - if(verify_cparam(fa2, cparam) < 0) - TEST_ERROR + if (verify_cparam(fa, cparam) < 0) + TEST_ERROR; + if (verify_cparam(fa2, cparam) < 0) + TEST_ERROR; /* Close the second fixed array wrapper */ - if(H5FA_close(fa2, H5P_DATASET_XFER_DEFAULT) < 0) - FAIL_STACK_ERROR + if (H5FA_close(fa2) < 0) + FAIL_STACK_ERROR; fa2 = NULL; /* Check for closing & re-opening the file */ - if(reopen_file(&file, &f, fapl, H5P_DATASET_XFER_DEFAULT, &fa, fa_addr, tparam) < 0) - TEST_ERROR + if (reopen_file(&fid, &f, fapl_id, &fa, fa_addr, tparam) < 0) + TEST_ERROR; /* Re-open the file */ - if((file2 = H5Freopen(file)) < 0) - FAIL_STACK_ERROR + if ((fid2 = H5Freopen(fid)) < 0) + FAIL_STACK_ERROR; /* Get a pointer to the internal file object */ - if(NULL == (f2 = (H5F_t *)H5I_object(file2))) - FAIL_STACK_ERROR + if (NULL == (f2 = (H5F_t *)H5VL_object(fid2))) + FAIL_STACK_ERROR; /* Open the fixed array through the second file handle */ - if(NULL == (fa2 = H5FA_open(f2, H5P_DATASET_XFER_DEFAULT, fa_addr, NULL))) - FAIL_STACK_ERROR + if (NULL == (fa2 = H5FA_open(f2, fa_addr, NULL))) + FAIL_STACK_ERROR; /* Verify the creation parameters */ - if(verify_cparam(fa, cparam) < 0) - TEST_ERROR + if (verify_cparam(fa, cparam) < 0) + TEST_ERROR; /* Close the first extensible array wrapper */ - if(H5FA_close(fa, H5P_DATASET_XFER_DEFAULT) < 0) - FAIL_STACK_ERROR + if (H5FA_close(fa) < 0) + FAIL_STACK_ERROR; fa = NULL; /* Close the first file */ /* (close before second file, to detect error on internal array header's * shared file information) */ - if(H5Fclose(file) < 0) - FAIL_STACK_ERROR + if (H5Fclose(fid) < 0) + FAIL_STACK_ERROR; /* Close array, delete array, close file & verify file is empty */ - if(finish(file2, fapl, f2, fa2, fa_addr) < 0) - TEST_ERROR + if (finish(fid2, fapl_id, f2, fa2, fa_addr) < 0) + TEST_ERROR; /* All tests passed */ - PASSED() + PASSED(); return 0; error: - H5E_BEGIN_TRY { - if(fa) - H5FA_close(fa, H5P_DATASET_XFER_DEFAULT); - if(fa2) - H5FA_close(fa2, H5P_DATASET_XFER_DEFAULT); - H5Fclose(file); - H5Fclose(file2); - } H5E_END_TRY; + H5E_BEGIN_TRY + { + if (fa) + H5FA_close(fa); + if (fa2) + H5FA_close(fa2); + H5Fclose(fid); + H5Fclose(fid2); + } + H5E_END_TRY; return 1; } /* test_open_twice() */ - +/*------------------------------------------------------------------------- + * Function: test_open_twice_diff + * + * Purpose: Open a fixed array twice, through different "top" file + * handles, with an intermediate file open that takes the "shared" + * file handle from the first fixed array's file pointer. + * + * Return: Success: 0 + * Failure: 1 + * + * Programmer: Quincey Koziol + * Friday, December 18, 2015 + * + *------------------------------------------------------------------------- + */ +static unsigned +test_open_twice_diff(hid_t fapl_id, H5FA_create_t *cparam, farray_test_param_t *tparam) +{ + char filename_tmp[FARRAY_FILENAME_LEN]; /* Temporary file name */ + hid_t fid = H5I_INVALID_HID; /* File ID */ + hid_t fid2 = H5I_INVALID_HID; /* File ID */ + hid_t fid0 = H5I_INVALID_HID; /* File ID */ + hid_t fid00 = H5I_INVALID_HID; /* File ID */ + H5F_t *f = NULL; /* Internal file object pointer */ + H5F_t *f2 = NULL; /* Internal file object pointer */ + H5FA_t *fa = NULL; /* Fixed array wrapper */ + H5FA_t *fa2 = NULL; /* Fixed array wrapper */ + haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ + + /* Display testing message */ + TESTING("open fixed array twice, through different file handles"); + + /* Create file & retrieve pointer to internal file object */ + if (create_file(fapl_id, &fid, &f) < 0) + TEST_ERROR; + + /* Create array */ + if (create_array(f, cparam, &fa, &fa_addr) < 0) + TEST_ERROR; + + /* Open the array again, through the first file handle */ + if (NULL == (fa2 = H5FA_open(f, fa_addr, NULL))) + FAIL_STACK_ERROR; + + /* Verify the creation parameters */ + if (verify_cparam(fa, cparam) < 0) + TEST_ERROR; + if (verify_cparam(fa2, cparam) < 0) + TEST_ERROR; + + /* Close the second fixed array wrapper */ + if (H5FA_close(fa2) < 0) + FAIL_STACK_ERROR; + fa2 = NULL; + + /* Re-open the file */ + /* (So that there is something holding the file open when the extensible + * array is closed) + */ + if ((fid0 = H5Fopen(filename_g, H5F_ACC_RDWR, fapl_id)) < 0) + FAIL_STACK_ERROR; + + /* Check for closing & re-opening the file */ + if (reopen_file(&fid, &f, fapl_id, &fa, fa_addr, tparam) < 0) + TEST_ERROR; + + /* Close the first fixed array wrapper */ + if (H5FA_close(fa) < 0) + FAIL_STACK_ERROR; + fa = NULL; + + /* Close the first file */ + /* (close before second file, to detect error on internal array header's + * shared file information) + */ + if (H5Fclose(fid) < 0) + FAIL_STACK_ERROR; + fid = H5I_INVALID_HID; + + /* Open a different file */ + /* (This re-allocates the 'top' file pointer and assigns it a different + * 'shared' file pointer, making the file pointer in the fixed array's + * header stale) + */ + h5_fixname(FILENAME[1], fapl_id, filename_tmp, sizeof(filename_tmp)); + if ((fid00 = H5Fcreate(filename_tmp, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id)) < 0) + FAIL_STACK_ERROR; + + /* Re-open the file with the fixed array */ + if ((fid2 = H5Fopen(filename_g, H5F_ACC_RDWR, fapl_id)) < 0) + FAIL_STACK_ERROR; + + /* Get a pointer to the internal file object */ + if (NULL == (f2 = (H5F_t *)H5VL_object(fid2))) + FAIL_STACK_ERROR; + + /* Open the fixed array through the second file handle */ + if (NULL == (fa2 = H5FA_open(f2, fa_addr, NULL))) + FAIL_STACK_ERROR; + + /* Verify the creation parameters */ + if (verify_cparam(fa2, cparam) < 0) + TEST_ERROR; + + /* Close the extra file handles */ + if (H5Fclose(fid0) < 0) + FAIL_STACK_ERROR; + if (H5Fclose(fid00) < 0) + FAIL_STACK_ERROR; + + /* Close array, delete array, close file & verify file is empty */ + if (finish(fid2, fapl_id, f2, fa2, fa_addr) < 0) + TEST_ERROR; + + /* All tests passed */ + PASSED(); + + return 0; + +error: + H5E_BEGIN_TRY + { + if (fa) + H5FA_close(fa); + if (fa2) + H5FA_close(fa2); + H5Fclose(fid); + H5Fclose(fid2); + H5Fclose(fid0); + H5Fclose(fid00); + } + H5E_END_TRY; + + return 1; +} /* test_open_twice_diff() */ + /*------------------------------------------------------------------------- * Function: test_delete_open * @@ -734,16 +853,16 @@ error: static unsigned test_delete_open(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam) { - hid_t file = -1; /* File ID */ - H5F_t *f = NULL; /* Internal file object pointer */ - H5FA_t *fa = NULL; /* Fixed array wrapper */ - H5FA_t *fa2 = NULL; /* Fixed array wrapper */ - haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ - h5_stat_size_t file_size; /* File size, after deleting array */ + hid_t file = -1; /* File ID */ + H5F_t *f = NULL; /* Internal file object pointer */ + H5FA_t *fa = NULL; /* Fixed array wrapper */ + H5FA_t *fa2 = NULL; /* Fixed array wrapper */ + haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ + h5_stat_size_t file_size; /* File size, after deleting array */ /* Create file & retrieve pointer to internal file object */ - if(create_file(fapl, &file, &f) < 0) - TEST_ERROR + if (create_file(fapl, &file, &f) < 0) + TEST_ERROR; /* * Display testing message @@ -751,100 +870,105 @@ test_delete_open(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam) TESTING("deleting open fixed array"); /* Create array */ - if(create_array(f, H5P_DATASET_XFER_DEFAULT, cparam, &fa, &fa_addr) < 0) - TEST_ERROR + if (create_array(f, cparam, &fa, &fa_addr) < 0) + TEST_ERROR; /* Open the array again */ - if(NULL == (fa2 = H5FA_open(f, H5P_DATASET_XFER_DEFAULT, fa_addr, NULL))) - FAIL_STACK_ERROR + if (NULL == (fa2 = H5FA_open(f, fa_addr, NULL))) + FAIL_STACK_ERROR; /* Request that the array be deleted */ - if(H5FA_delete(f, H5P_DATASET_XFER_DEFAULT, fa_addr, NULL) < 0) - FAIL_STACK_ERROR + if (H5FA_delete(f, fa_addr, NULL) < 0) + FAIL_STACK_ERROR; /* Verify the creation parameters */ - if(verify_cparam(fa, cparam) < 0) - TEST_ERROR - if(verify_cparam(fa2, cparam) < 0) - TEST_ERROR + if (verify_cparam(fa, cparam) < 0) + TEST_ERROR; + if (verify_cparam(fa2, cparam) < 0) + TEST_ERROR; /* Close the second fixed array wrapper */ - if(H5FA_close(fa2, H5P_DATASET_XFER_DEFAULT) < 0) - FAIL_STACK_ERROR + if (H5FA_close(fa2) < 0) + FAIL_STACK_ERROR; fa2 = NULL; /* Try re-opening the array again (should fail, as array will be deleted) */ - H5E_BEGIN_TRY { - fa2 = H5FA_open(f, H5P_DATASET_XFER_DEFAULT, fa_addr, NULL); - } H5E_END_TRY; - if(fa2) { + H5E_BEGIN_TRY + { + fa2 = H5FA_open(f, fa_addr, NULL); + } + H5E_END_TRY; + if (fa2) { /* Close opened array */ - H5FA_close(fa2, H5P_DATASET_XFER_DEFAULT); + H5FA_close(fa2); /* Indicate error */ - TEST_ERROR + TEST_ERROR; } /* end if */ /* Close the first fixed array wrapper */ - if(H5FA_close(fa, H5P_DATASET_XFER_DEFAULT) < 0) - FAIL_STACK_ERROR + if (H5FA_close(fa) < 0) + FAIL_STACK_ERROR; fa = NULL; /* Check for closing & re-opening the file */ - if(reopen_file(&file, &f, fapl, H5P_DATASET_XFER_DEFAULT, NULL, HADDR_UNDEF, tparam) < 0) - TEST_ERROR + if (reopen_file(&file, &f, fapl, NULL, HADDR_UNDEF, tparam) < 0) + TEST_ERROR; /* Try re-opening the array again (should fail, as array is now deleted) */ - H5E_BEGIN_TRY { - fa = H5FA_open(f, H5P_DATASET_XFER_DEFAULT, fa_addr, NULL); - } H5E_END_TRY; - if(fa) { + H5E_BEGIN_TRY + { + fa = H5FA_open(f, fa_addr, NULL); + } + H5E_END_TRY; + if (fa) { /* Close opened array */ - H5FA_close(fa, H5P_DATASET_XFER_DEFAULT); + H5FA_close(fa); /* Indicate error */ - TEST_ERROR + TEST_ERROR; } /* end if */ /* Close the file */ - if(H5Fclose(file) < 0) - FAIL_STACK_ERROR + if (H5Fclose(file) < 0) + FAIL_STACK_ERROR; /* Get the size of the file */ - if((file_size = h5_get_file_size(filename_g, fapl)) < 0) - TEST_ERROR + if ((file_size = h5_get_file_size(filename_g, fapl)) < 0) + TEST_ERROR; /* Verify the file is correct size */ - if(file_size != empty_size_g) - TEST_ERROR + if (file_size != empty_size_g) + TEST_ERROR; /* All tests passed */ - PASSED() + PASSED(); return 0; error: - H5E_BEGIN_TRY { - if(fa) - H5FA_close(fa, H5P_DATASET_XFER_DEFAULT); - if(fa2) - H5FA_close(fa2, H5P_DATASET_XFER_DEFAULT); - H5Fclose(file); - } H5E_END_TRY; + H5E_BEGIN_TRY + { + if (fa) + H5FA_close(fa); + if (fa2) + H5FA_close(fa2); + H5Fclose(file); + } + H5E_END_TRY; return 1; } /* test_delete_open() */ /* Fixed array iterator info for forward iteration */ typedef struct fiter_fw_t { - hsize_t idx; /* Index of next array location */ + hsize_t idx; /* Index of next array location */ } fiter_fw_t; - /*------------------------------------------------------------------------- * Function: fiter_fw_init * - * Purpose: Initialize element interator (forward iteration) + * Purpose: Initialize element iterator (forward iteration) * * Return: Success: Pointer to iteration status object * Failure: NULL @@ -852,10 +976,10 @@ typedef struct fiter_fw_t { *------------------------------------------------------------------------- */ static void * -fiter_fw_init(const H5FA_create_t UNUSED *cparam, const farray_test_param_t UNUSED *tparam, - hsize_t UNUSED cnt) +fiter_fw_init(const H5FA_create_t H5_ATTR_UNUSED *cparam, const farray_test_param_t H5_ATTR_UNUSED *tparam, + hsize_t H5_ATTR_UNUSED cnt) { - fiter_fw_t *fiter; /* Forward element iteration object */ + fiter_fw_t *fiter; /* Forward element iteration object */ /* Allocate space for the element iteration object */ fiter = (fiter_fw_t *)HDmalloc(sizeof(fiter_fw_t)); @@ -865,10 +989,9 @@ fiter_fw_init(const H5FA_create_t UNUSED *cparam, const farray_test_param_t UNUS fiter->idx = 0; /* Return iteration object */ - return(fiter); + return (fiter); } /* end fiter_fw_init() */ - /*------------------------------------------------------------------------- * Function: fiter_fw_next * @@ -883,7 +1006,7 @@ static hssize_t fiter_fw_next(void *_fiter) { fiter_fw_t *fiter = (fiter_fw_t *)_fiter; - hssize_t ret_val; + hssize_t ret_val; /* Sanity check */ HDassert(fiter); @@ -891,14 +1014,13 @@ fiter_fw_next(void *_fiter) /* Get the next array index to test */ ret_val = (hssize_t)fiter->idx++; - return(ret_val); + return (ret_val); } /* end fiter_fw_next() */ - /*------------------------------------------------------------------------- * Function: fiter_term * - * Purpose: Shut down element interator (simple iterators) + * Purpose: Shut down element iterator (simple iterators) * * Return: Success: 0 * Failure: -1 @@ -914,26 +1036,25 @@ fiter_term(void *fiter) /* Free iteration object */ HDfree(fiter); - return(0); + return (0); } /* end fiter_term() */ /* Fixed array iterator class for forward iteration */ static const farray_iter_t fa_iter_fw = { - fiter_fw_init, /* Iterator init */ - fiter_fw_next, /* Next array index */ - fiter_term /* Iterator term */ + fiter_fw_init, /* Iterator init */ + fiter_fw_next, /* Next array index */ + fiter_term /* Iterator term */ }; /* Fixed array iterator info for reverse iteration */ typedef struct fiter_rv_t { - hsize_t idx; /* Index of next array location */ + hsize_t idx; /* Index of next array location */ } fiter_rv_t; - /*------------------------------------------------------------------------- * Function: fiter_rv_init * - * Purpose: Initialize element interator (reverse iteration) + * Purpose: Initialize element iterator (reverse iteration) * * Return: Success: Pointer to iteration status object * Failure: NULL @@ -941,10 +1062,10 @@ typedef struct fiter_rv_t { *------------------------------------------------------------------------- */ static void * -fiter_rv_init(const H5FA_create_t *cparam, const farray_test_param_t UNUSED *tparam, - hsize_t UNUSED cnt) +fiter_rv_init(const H5FA_create_t *cparam, const farray_test_param_t H5_ATTR_UNUSED *tparam, + hsize_t H5_ATTR_UNUSED cnt) { - fiter_rv_t *fiter; /* Reverse element iteration object */ + fiter_rv_t *fiter; /* Reverse element iteration object */ /* Allocate space for the element iteration object */ fiter = (fiter_rv_t *)HDmalloc(sizeof(fiter_rv_t)); @@ -954,10 +1075,9 @@ fiter_rv_init(const H5FA_create_t *cparam, const farray_test_param_t UNUSED *tpa fiter->idx = cparam->nelmts - 1; /* Return iteration object */ - return(fiter); + return (fiter); } /* end fiter_rv_init() */ - /*------------------------------------------------------------------------- * Function: fiter_rv_next * @@ -972,7 +1092,7 @@ static hssize_t fiter_rv_next(void *_fiter) { fiter_rv_t *fiter = (fiter_rv_t *)_fiter; - hssize_t ret_val; + hssize_t ret_val; /* Sanity check */ HDassert(fiter); @@ -980,27 +1100,26 @@ fiter_rv_next(void *_fiter) /* Get the next array index to test */ ret_val = (hssize_t)fiter->idx--; - return(ret_val); + return (ret_val); } /* end fiter_rv_next() */ /* Fixed array iterator class for reverse iteration */ static const farray_iter_t fa_iter_rv = { - fiter_rv_init, /* Iterator init */ - fiter_rv_next, /* Next array index */ - fiter_term /* Iterator term */ + fiter_rv_init, /* Iterator init */ + fiter_rv_next, /* Next array index */ + fiter_term /* Iterator term */ }; /* Fixed array iterator info for random iteration */ typedef struct fiter_rnd_t { - hsize_t pos; /* Position in shuffled array */ - hsize_t *idx; /* Array of shuffled indices */ + hsize_t pos; /* Position in shuffled array */ + hsize_t *idx; /* Array of shuffled indices */ } fiter_rnd_t; - /*------------------------------------------------------------------------- * Function: fiter_rnd_init * - * Purpose: Initialize element interator (random iteration) + * Purpose: Initialize element iterator (random iteration) * * Return: Success: Pointer to iteration status object * Failure: NULL @@ -1008,11 +1127,11 @@ typedef struct fiter_rnd_t { *------------------------------------------------------------------------- */ static void * -fiter_rnd_init(const H5FA_create_t UNUSED *cparam, const farray_test_param_t UNUSED *tparam, - hsize_t cnt) +fiter_rnd_init(const H5FA_create_t H5_ATTR_UNUSED *cparam, const farray_test_param_t H5_ATTR_UNUSED *tparam, + hsize_t cnt) { - fiter_rnd_t *fiter; /* Random element iteration object */ - size_t u; /* Local index variable */ + fiter_rnd_t *fiter; /* Random element iteration object */ + size_t u; /* Local index variable */ /* Allocate space for the element iteration object */ fiter = (fiter_rnd_t *)HDmalloc(sizeof(fiter_rnd_t)); @@ -1024,27 +1143,26 @@ fiter_rnd_init(const H5FA_create_t UNUSED *cparam, const farray_test_param_t UNU /* Initialize reverse iteration info */ fiter->pos = 0; - for(u = 0; u < (size_t)cnt; u++) + for (u = 0; u < (size_t)cnt; u++) fiter->idx[u] = (hsize_t)u; /* Randomly shuffle array indices */ - if(cnt > 1) { - for(u = 0; u < (size_t)cnt; u++) { - size_t swap_idx; /* Location to swap with when shuffling */ - hsize_t temp_idx; /* Temporary index */ - - swap_idx = ((size_t)HDrandom() % ((size_t)cnt - u)) + u; - temp_idx = fiter->idx[u]; - fiter->idx[u] = fiter->idx[swap_idx]; + if (cnt > 1) { + for (u = 0; u < (size_t)cnt; u++) { + size_t swap_idx; /* Location to swap with when shuffling */ + hsize_t temp_idx; /* Temporary index */ + + swap_idx = ((size_t)HDrandom() % ((size_t)cnt - u)) + u; + temp_idx = fiter->idx[u]; + fiter->idx[u] = fiter->idx[swap_idx]; fiter->idx[swap_idx] = temp_idx; } /* end for */ - } /* end if */ + } /* end if */ /* Return iteration object */ - return(fiter); + return (fiter); } /* end fiter_rnd_init() */ - /*------------------------------------------------------------------------- * Function: fiter_rnd_next * @@ -1059,7 +1177,7 @@ static hssize_t fiter_rnd_next(void *_fiter) { fiter_rnd_t *fiter = (fiter_rnd_t *)_fiter; - hssize_t ret_val; + hssize_t ret_val; /* Sanity check */ HDassert(fiter); @@ -1068,14 +1186,13 @@ fiter_rnd_next(void *_fiter) ret_val = (hssize_t)fiter->idx[fiter->pos]; fiter->pos++; - return(ret_val); + return (ret_val); } /* end fiter_rnd_next() */ - /*------------------------------------------------------------------------- * Function: fiter_rnd_term * - * Purpose: Shut down element interator (random iteration) + * Purpose: Shut down element iterator (random iteration) * * Return: Success: 0 * Failure: -1 @@ -1097,28 +1214,27 @@ fiter_rnd_term(void *_fiter) /* Free iteration object */ HDfree(fiter); - return(0); + return (0); } /* end fiter_rnd_term() */ /* Fixed array iterator class for random iteration */ static const farray_iter_t fa_iter_rnd = { - fiter_rnd_init, /* Iterator init */ - fiter_rnd_next, /* Next array index */ - fiter_rnd_term /* Iterator term */ + fiter_rnd_init, /* Iterator init */ + fiter_rnd_next, /* Next array index */ + fiter_rnd_term /* Iterator term */ }; /* Fixed array iterator info for cyclic iteration */ typedef struct fiter_cyc_t { - hsize_t pos; /* Position in shuffled array */ - hsize_t cnt; /* # of elements to store */ - hsize_t cyc; /* Cycle of elements to choose from */ + hsize_t pos; /* Position in shuffled array */ + hsize_t cnt; /* # of elements to store */ + hsize_t cyc; /* Cycle of elements to choose from */ } fiter_cyc_t; - /*------------------------------------------------------------------------- * Function: fiter_cyc_init * - * Purpose: Initialize element interator (cyclic iteration) + * Purpose: Initialize element iterator (cyclic iteration) * * Return: Success: Pointer to iteration status object * Failure: NULL @@ -1126,10 +1242,10 @@ typedef struct fiter_cyc_t { *------------------------------------------------------------------------- */ static void * -fiter_cyc_init(const H5FA_create_t UNUSED *cparam, const farray_test_param_t UNUSED *tparam, - hsize_t cnt) +fiter_cyc_init(const H5FA_create_t H5_ATTR_UNUSED *cparam, const farray_test_param_t H5_ATTR_UNUSED *tparam, + hsize_t cnt) { - fiter_cyc_t *fiter; /* Cyclic element iteration object */ + fiter_cyc_t *fiter; /* Cyclic element iteration object */ /* Allocate space for the element iteration object */ fiter = (fiter_cyc_t *)HDmalloc(sizeof(fiter_cyc_t)); @@ -1141,10 +1257,9 @@ fiter_cyc_init(const H5FA_create_t UNUSED *cparam, const farray_test_param_t UNU fiter->cyc = 0; /* Return iteration object */ - return(fiter); + return (fiter); } /* end fiter_cyc_init() */ - /*------------------------------------------------------------------------- * Function: fiter_cyc_next * @@ -1159,7 +1274,7 @@ static hssize_t fiter_cyc_next(void *_fiter) { fiter_cyc_t *fiter = (fiter_cyc_t *)_fiter; - hssize_t ret_val; + hssize_t ret_val; /* Sanity check */ HDassert(fiter); @@ -1167,21 +1282,19 @@ fiter_cyc_next(void *_fiter) /* Get the next array index to test */ ret_val = (hssize_t)fiter->pos; fiter->pos += FA_CYC_COUNT; - if(fiter->pos >= fiter->cnt) + if (fiter->pos >= fiter->cnt) fiter->pos = ++fiter->cyc; - return(ret_val); + return (ret_val); } /* end fiter_cyc_next() */ - /* Fixed array iterator class for cyclic iteration */ static const farray_iter_t fa_iter_cyc = { - fiter_cyc_init, /* Iterator init */ - fiter_cyc_next, /* Next array index */ - fiter_term /* Iterator term */ + fiter_cyc_init, /* Iterator init */ + fiter_cyc_next, /* Next array index */ + fiter_term /* Iterator term */ }; - /*------------------------------------------------------------------------- * Function: check_elmt * @@ -1200,22 +1313,21 @@ check_elmt(void *_relmt, void *_welmt) uint64_t *relmt = (uint64_t *)_relmt; uint64_t *welmt = (uint64_t *)_welmt; - if(welmt == NULL) { /* check for fill value */ - if(*relmt != H5FA_TEST_FILL) - TEST_ERROR + if (welmt == NULL) { /* check for fill value */ + if (*relmt != H5FA_TEST_FILL) + TEST_ERROR; } /* end if */ else { - if(*relmt != *welmt) - TEST_ERROR + if (*relmt != *welmt) + TEST_ERROR; } /* end else */ - return(0); + return (0); error: - return(-1); + return (-1); } /* end check_elmt() */ - /*------------------------------------------------------------------------- * Function: test_set_elmts * @@ -1228,21 +1340,21 @@ error: *------------------------------------------------------------------------- */ static unsigned -test_set_elmts(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam, - hsize_t nelmts, const char *test_str) +test_set_elmts(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam, hsize_t nelmts, + const char *test_str) { - hid_t file = -1; /* File ID */ - H5F_t *f = NULL; /* Internal file object pointer */ - H5FA_t *fa = NULL; /* Fixed array wrapper */ - void *fiter_info; /* Fixed array iterator info */ - farray_state_t state; /* State of fixed array */ - uint64_t welmt; /* Element to write */ - uint64_t relmt; /* Element to read */ - hsize_t cnt; /* Count of array indices */ - hssize_t sidx; /* Index value of next element in the fixed array */ - hsize_t idx; /* Index value of next element in the fixed array */ - hsize_t fa_nelmts; /* # of elements in fixed array */ - haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ + hid_t file = -1; /* File ID */ + H5F_t *f = NULL; /* Internal file object pointer */ + H5FA_t *fa = NULL; /* Fixed array wrapper */ + void *fiter_info; /* Fixed array iterator info */ + farray_state_t state; /* State of fixed array */ + uint64_t welmt; /* Element to write */ + uint64_t relmt; /* Element to read */ + hsize_t cnt; /* Count of array indices */ + hssize_t sidx; /* Index value of next element in the fixed array */ + hsize_t idx; /* Index value of next element in the fixed array */ + hsize_t fa_nelmts; /* # of elements in fixed array */ + haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ HDassert(nelmts); /* @@ -1251,129 +1363,129 @@ test_set_elmts(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam, TESTING(test_str); /* Create file & retrieve pointer to internal file object */ - if(create_file(fapl, &file, &f) < 0) - TEST_ERROR + if (create_file(fapl, &file, &f) < 0) + TEST_ERROR; /* Create array */ - if(create_array(f, H5P_DATASET_XFER_DEFAULT, cparam, &fa, &fa_addr) < 0) - TEST_ERROR + if (create_array(f, cparam, &fa, &fa_addr) < 0) + TEST_ERROR; /* Verify the creation parameters */ - if(verify_cparam(fa, cparam) < 0) - TEST_ERROR + if (verify_cparam(fa, cparam) < 0) + TEST_ERROR; /* Check for closing & re-opening the file */ - if(reopen_file(&file, &f, fapl, H5P_DATASET_XFER_DEFAULT, &fa, fa_addr, tparam) < 0) - TEST_ERROR + if (reopen_file(&file, &f, fapl, &fa, fa_addr, tparam) < 0) + TEST_ERROR; - if(H5FA_get_nelmts(fa, &fa_nelmts) < 0) - FAIL_STACK_ERROR + if (H5FA_get_nelmts(fa, &fa_nelmts) < 0) + FAIL_STACK_ERROR; - if(nelmts > fa_nelmts) - TEST_ERROR + if (nelmts > fa_nelmts) + TEST_ERROR; /* Verify array state */ HDmemset(&state, 0, sizeof(state)); - state.hdr_size = FA_HDR_SIZE; - state.nelmts = cparam->nelmts; + state.hdr_size = FA_HDR_SIZE; + state.nelmts = cparam->nelmts; state.dblk_size = 0; - if(check_stats(fa, &state)) - TEST_ERROR + if (check_stats(fa, &state)) + TEST_ERROR; /* Get all elements from empty array */ /* Initialize iterator */ - if(NULL == (fiter_info = tparam->fiter->init(cparam, tparam, nelmts))) - TEST_ERROR + if (NULL == (fiter_info = tparam->fiter->init(cparam, tparam, nelmts))) + TEST_ERROR; /* Get elements of array */ - for(cnt = 0; cnt < nelmts; cnt++) { + for (cnt = 0; cnt < nelmts; cnt++) { /* Get the array index */ - if((sidx = tparam->fiter->next(fiter_info)) < 0) - TEST_ERROR - idx = (hsize_t)sidx; + if ((sidx = tparam->fiter->next(fiter_info)) < 0) + TEST_ERROR; + idx = (hsize_t)sidx; /* Retrieve element of array (not set yet) */ relmt = (uint64_t)0; - if(H5FA_get(fa, H5P_DATASET_XFER_DEFAULT, idx, &relmt) < 0) - FAIL_STACK_ERROR + if (H5FA_get(fa, idx, &relmt) < 0) + FAIL_STACK_ERROR; /* Verify that the retrieved is correct */ - if(check_elmt(&relmt, NULL)) - TEST_ERROR + if (check_elmt(&relmt, NULL)) + TEST_ERROR; } /* end for */ /* Shutdown iterator */ - if(tparam->fiter->term(fiter_info) < 0) - TEST_ERROR - + if (tparam->fiter->term(fiter_info) < 0) + TEST_ERROR; /* Set (& get) all elements from empty array */ /* Initialize iterator */ - if(NULL == (fiter_info = tparam->fiter->init(cparam, tparam, nelmts))) - TEST_ERROR + if (NULL == (fiter_info = tparam->fiter->init(cparam, tparam, nelmts))) + TEST_ERROR; /* Set elements of array */ - for(cnt = 0; cnt < nelmts; cnt++) { + for (cnt = 0; cnt < nelmts; cnt++) { /* Get the array index */ - if((sidx = tparam->fiter->next(fiter_info)) < 0) - TEST_ERROR - idx = (hsize_t)sidx; + if ((sidx = tparam->fiter->next(fiter_info)) < 0) + TEST_ERROR; + idx = (hsize_t)sidx; relmt = (uint64_t)0; - if(H5FA_get(fa, H5P_DATASET_XFER_DEFAULT, idx, &relmt) < 0) - FAIL_STACK_ERROR + if (H5FA_get(fa, idx, &relmt) < 0) + FAIL_STACK_ERROR; /* Verify that the retrieved element is correct */ - if(check_elmt(&relmt, NULL)) - TEST_ERROR + if (check_elmt(&relmt, NULL)) + TEST_ERROR; /* Set element of array */ welmt = (uint64_t)7 + idx; - if(H5FA_set(fa, H5P_DATASET_XFER_DEFAULT, idx, &welmt) < 0) - FAIL_STACK_ERROR + if (H5FA_set(fa, idx, &welmt) < 0) + FAIL_STACK_ERROR; /* Retrieve element of array (set now) */ relmt = (uint64_t)0; - if(H5FA_get(fa, H5P_DATASET_XFER_DEFAULT, idx, &relmt) < 0) - FAIL_STACK_ERROR + if (H5FA_get(fa, idx, &relmt) < 0) + FAIL_STACK_ERROR; /* Verify that the retrieved element is correct */ - if(check_elmt(&relmt, &welmt)) - TEST_ERROR + if (check_elmt(&relmt, &welmt)) + TEST_ERROR; } /* end for */ /* Verify array state */ HDmemset(&state, 0, sizeof(state)); set_fa_state(cparam, &state); - if(check_stats(fa, &state)) - TEST_ERROR + if (check_stats(fa, &state)) + TEST_ERROR; /* Shutdown iterator */ - if(tparam->fiter->term(fiter_info) < 0) - TEST_ERROR + if (tparam->fiter->term(fiter_info) < 0) + TEST_ERROR; /* Close array, delete array, close file & verify file is empty */ - if(finish(file, fapl, f, fa, fa_addr) < 0) - TEST_ERROR + if (finish(file, fapl, f, fa, fa_addr) < 0) + TEST_ERROR; /* All tests passed */ - PASSED() + PASSED(); return 0; error: - H5E_BEGIN_TRY { - if(fa) - H5FA_close(fa, H5P_DATASET_XFER_DEFAULT); - H5Fclose(file); - } H5E_END_TRY; + H5E_BEGIN_TRY + { + if (fa) + H5FA_close(fa); + H5Fclose(file); + } + H5E_END_TRY; return 1; } /* test_set_elmts() */ - /*------------------------------------------------------------------------- * Function: test_skip_elmts * @@ -1386,19 +1498,19 @@ error: *------------------------------------------------------------------------- */ static unsigned -test_skip_elmts(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam, - hsize_t skip_elmts, hbool_t check_rest, const char *test_str) +test_skip_elmts(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam, hsize_t skip_elmts, + hbool_t check_rest, const char *test_str) { - hid_t file = -1; /* File ID */ - H5F_t *f = NULL; /* Internal file object pointer */ - H5FA_t *fa = NULL; /* Extensible array wrapper */ - farray_state_t state; /* State of extensible array */ - uint64_t welmt; /* Element to write */ - uint64_t relmt; /* Element to read */ - hsize_t idx; /* Index value of element to get */ - hsize_t cnt; /* Count of array indices */ - hsize_t fa_nelmts; /* # of elements in fixed array */ - haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ + hid_t file = -1; /* File ID */ + H5F_t *f = NULL; /* Internal file object pointer */ + H5FA_t *fa = NULL; /* Extensible array wrapper */ + farray_state_t state; /* State of extensible array */ + uint64_t welmt; /* Element to write */ + uint64_t relmt; /* Element to read */ + hsize_t idx; /* Index value of element to get */ + hsize_t cnt; /* Count of array indices */ + hsize_t fa_nelmts; /* # of elements in fixed array */ + haddr_t fa_addr = HADDR_UNDEF; /* Array address in file */ /* * Display testing message @@ -1406,101 +1518,102 @@ test_skip_elmts(hid_t fapl, H5FA_create_t *cparam, farray_test_param_t *tparam, TESTING(test_str); /* Create file & retrieve pointer to internal file object */ - if(create_file(fapl, &file, &f) < 0) - TEST_ERROR + if (create_file(fapl, &file, &f) < 0) + TEST_ERROR; /* Create array */ - if(create_array(f, H5P_DATASET_XFER_DEFAULT, cparam, &fa, &fa_addr) < 0) - TEST_ERROR + if (create_array(f, cparam, &fa, &fa_addr) < 0) + TEST_ERROR; /* Verify the creation parameters */ - if(verify_cparam(fa, cparam) < 0) - TEST_ERROR + if (verify_cparam(fa, cparam) < 0) + TEST_ERROR; /* Check for closing & re-opening the file */ - if(reopen_file(&file, &f, fapl, H5P_DATASET_XFER_DEFAULT, &fa, fa_addr, tparam) < 0) - TEST_ERROR + if (reopen_file(&file, &f, fapl, &fa, fa_addr, tparam) < 0) + TEST_ERROR; - if(H5FA_get_nelmts(fa, &fa_nelmts) < 0) - FAIL_STACK_ERROR + if (H5FA_get_nelmts(fa, &fa_nelmts) < 0) + FAIL_STACK_ERROR; - if(skip_elmts >= fa_nelmts) - TEST_ERROR + if (skip_elmts >= fa_nelmts) + TEST_ERROR; /* Verify array state */ HDmemset(&state, 0, sizeof(state)); - state.hdr_size = FA_HDR_SIZE; - state.nelmts = cparam->nelmts; + state.hdr_size = FA_HDR_SIZE; + state.nelmts = cparam->nelmts; state.dblk_size = 0; - if(check_stats(fa, &state)) - TEST_ERROR + if (check_stats(fa, &state)) + TEST_ERROR; /* Set (& get) element after skipping elements */ idx = skip_elmts; /* Retrieve element of array (not set yet) */ relmt = (uint64_t)0; - if(H5FA_get(fa, H5P_DATASET_XFER_DEFAULT, idx, &relmt) < 0) - FAIL_STACK_ERROR + if (H5FA_get(fa, idx, &relmt) < 0) + FAIL_STACK_ERROR; /* Verify that the retrieved is correct */ - if(check_elmt(&relmt, NULL)) - TEST_ERROR + if (check_elmt(&relmt, NULL)) + TEST_ERROR; /* Set element of array */ welmt = (uint64_t)7 + idx; - if(H5FA_set(fa, H5P_DATASET_XFER_DEFAULT, idx, &welmt) < 0) - FAIL_STACK_ERROR + if (H5FA_set(fa, idx, &welmt) < 0) + FAIL_STACK_ERROR; /* Verify array state */ HDmemset(&state, 0, sizeof(state)); set_fa_state(cparam, &state); - if(check_stats(fa, &state)) - TEST_ERROR + if (check_stats(fa, &state)) + TEST_ERROR; /* Retrieve element of array (set now) */ relmt = (uint64_t)0; - if(H5FA_get(fa, H5P_DATASET_XFER_DEFAULT, idx, &relmt) < 0) - FAIL_STACK_ERROR + if (H5FA_get(fa, idx, &relmt) < 0) + FAIL_STACK_ERROR; /* Verify that the retrieved is correct */ - if(check_elmt(&relmt, &welmt)) - TEST_ERROR + if (check_elmt(&relmt, &welmt)) + TEST_ERROR; - if(check_rest) { + if (check_rest) { /* Get unset elements of array */ - for(cnt = 0; cnt < skip_elmts; cnt++) { + for (cnt = 0; cnt < skip_elmts; cnt++) { /* Retrieve element of array (not set yet) */ relmt = (uint64_t)0; - if(H5FA_get(fa, H5P_DATASET_XFER_DEFAULT, cnt, &relmt) < 0) - FAIL_STACK_ERROR + if (H5FA_get(fa, cnt, &relmt) < 0) + FAIL_STACK_ERROR; /* Verify that the retrieved is correct */ - if(check_elmt(&relmt, NULL)) - TEST_ERROR + if (check_elmt(&relmt, NULL)) + TEST_ERROR; } /* end for */ - } /* end if */ + } /* end if */ /* Close array, delete array, close file & verify file is empty */ - if(finish(file, fapl, f, fa, fa_addr) < 0) - TEST_ERROR + if (finish(file, fapl, f, fa, fa_addr) < 0) + TEST_ERROR; /* All tests passed */ - PASSED() + PASSED(); return 0; error: - H5E_BEGIN_TRY { - if(fa) - H5FA_close(fa, H5P_DATASET_XFER_DEFAULT); - H5Fclose(file); - } H5E_END_TRY; + H5E_BEGIN_TRY + { + if (fa) + H5FA_close(fa); + H5Fclose(file); + } + H5E_END_TRY; return 1; } /* test_skip_elmts() */ - /*------------------------------------------------------------------------- * Function: main * @@ -1514,62 +1627,68 @@ error: int main(void) { - H5FA_create_t cparam; /* Creation parameters for fixed array */ - farray_test_param_t tparam; /* Testing parameters */ - farray_test_type_t curr_test; /* Current test being worked on */ - farray_iter_type_t curr_iter; /* Current iteration type being worked on */ - hid_t fapl = -1; /* File access property list for data files */ - unsigned nerrors = 0; /* Cumulative error count */ - time_t curr_time; /* Current time, for seeding random number generator */ - int ExpressMode; /* Test express value */ + H5FA_create_t cparam; /* Creation parameters for fixed array */ + farray_test_param_t tparam; /* Testing parameters */ + farray_test_type_t curr_test; /* Current test being worked on */ + farray_iter_type_t curr_iter; /* Current iteration type being worked on */ + hid_t fapl = -1; /* File access property list for data files */ + unsigned nerrors = 0; /* Cumulative error count */ + time_t curr_time; /* Current time, for seeding random number generator */ + int ExpressMode; /* Test express value */ + hbool_t api_ctx_pushed = FALSE; /* Whether API context pushed */ /* Reset library */ h5_reset(); - fapl = h5_fileaccess(); + fapl = h5_fileaccess(); ExpressMode = GetTestExpress(); - if(ExpressMode > 1) - printf("***Express test mode on. Some tests may be skipped\n"); + if (ExpressMode > 1) + HDprintf("***Express test mode on. Some tests may be skipped\n"); /* Set the filename to use for this test (dependent on fapl) */ h5_fixname(FILENAME[0], fapl, filename_g, sizeof(filename_g)); + /* Push API context */ + if (H5CX_push() < 0) + FAIL_STACK_ERROR; + api_ctx_pushed = TRUE; + /* Seed random #'s */ curr_time = HDtime(NULL); - HDsrandom((unsigned long)curr_time); + HDsrandom((unsigned)curr_time); /* Create an empty file to retrieve size */ { - hid_t file; /* File ID */ + hid_t file; /* File ID */ - if((file = H5Fcreate(filename_g, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) - FAIL_STACK_ERROR + if ((file = H5Fcreate(filename_g, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) + FAIL_STACK_ERROR; /* Close file */ - if(H5Fclose(file) < 0) - FAIL_STACK_ERROR + if (H5Fclose(file) < 0) + FAIL_STACK_ERROR; /* Get the size of a file w/no array */ - if((empty_size_g = h5_get_file_size(filename_g, fapl)) < 0) - TEST_ERROR + if ((empty_size_g = h5_get_file_size(filename_g, fapl)) < 0) + TEST_ERROR; } /* Iterate over the testing parameters */ - for(curr_test = FARRAY_TEST_NORMAL; curr_test < FARRAY_TEST_NTESTS; curr_test++) { + for (curr_test = FARRAY_TEST_NORMAL; curr_test < FARRAY_TEST_NTESTS; curr_test++) { /* Initialize the testing parameters */ - HDmemset(&tparam, 0, sizeof(tparam)); - tparam.nelmts = TEST_NELMTS; + HDmemset(&tparam, 0, sizeof(tparam)); + tparam.nelmts = TEST_NELMTS; /* Set appropriate testing parameters for each test */ - switch(curr_test) { + switch (curr_test) { /* "Normal" testing parameters */ case FARRAY_TEST_NORMAL: - puts("Testing with NORMAL PARAMETERS"); + HDputs("Testing with NORMAL PARAMETERS"); break; /* "Re-open array" testing parameters */ case FARRAY_TEST_REOPEN: - puts("Testing with reopen array flag set"); + HDputs("Testing with reopen array flag set"); tparam.reopen_array = FARRAY_TEST_REOPEN; break; @@ -1579,41 +1698,42 @@ main(void) goto error; } /* end switch */ - /* Initialize fixed array creation parameters */ - init_cparam(&cparam, &tparam); + /* Initialize fixed array creation parameters */ + init_cparam(&cparam, &tparam); /* Basic capability tests */ nerrors += test_create(fapl, &cparam, &tparam); nerrors += test_reopen(fapl, &cparam, &tparam); nerrors += test_open_twice(fapl, &cparam, &tparam); + nerrors += test_open_twice_diff(fapl, &cparam, &tparam); nerrors += test_delete_open(fapl, &cparam, &tparam); - /* Iterate over the type of capacity tests */ - for(curr_iter = FARRAY_ITER_FW; curr_iter < FARRAY_ITER_NITERS; curr_iter++) { + /* Iterate over the type of capacity tests */ + for (curr_iter = FARRAY_ITER_FW; curr_iter < FARRAY_ITER_NITERS; curr_iter++) { /* Set appropriate parameters for each type of iteration */ - switch(curr_iter) { + switch (curr_iter) { /* "Forward" testing parameters */ case FARRAY_ITER_FW: - puts("Testing with forward iteration"); + HDputs("Testing with forward iteration"); tparam.fiter = &fa_iter_fw; break; /* "Reverse" testing parameters */ case FARRAY_ITER_RV: - puts("Testing with reverse iteration"); + HDputs("Testing with reverse iteration"); tparam.fiter = &fa_iter_rv; break; /* "Random" testing parameters */ case FARRAY_ITER_RND: - puts("Testing with random iteration"); + HDputs("Testing with random iteration"); tparam.fiter = &fa_iter_rnd; break; /* "Cyclic" testing parameters */ case FARRAY_ITER_CYC: - puts("Testing with cyclic iteration"); + HDputs("Testing with cyclic iteration"); tparam.fiter = &fa_iter_cyc; break; @@ -1625,48 +1745,66 @@ main(void) /* Basic capacity tests */ nerrors += test_set_elmts(fapl, &cparam, &tparam, (hsize_t)1, "setting 1 element of the array"); - nerrors += test_set_elmts(fapl, &cparam, &tparam, (hsize_t)(tparam.nelmts/2), "setting half of the array's elements "); - nerrors += test_set_elmts(fapl, &cparam, &tparam, (hsize_t)tparam.nelmts, "setting all the array elements"); + nerrors += test_set_elmts(fapl, &cparam, &tparam, (hsize_t)(tparam.nelmts / 2), + "setting half of the array's elements "); + nerrors += test_set_elmts(fapl, &cparam, &tparam, (hsize_t)tparam.nelmts, + "setting all the array elements"); } /* end for */ - /* Check skipping elements */ + /* Check skipping elements */ nerrors += test_skip_elmts(fapl, &cparam, &tparam, (hsize_t)1, TRUE, "skipping to first element"); - nerrors += test_skip_elmts(fapl, &cparam, &tparam, ((hsize_t)1 << cparam.max_dblk_page_nelmts_bits), TRUE, "skipping to first element in data block page"); - nerrors += test_skip_elmts(fapl, &cparam, &tparam, (hsize_t)(tparam.nelmts - 1), TRUE, "skipping to last element"); - - /* Create Fixed Array of MAX_NELMTS elements */ - /* - * MAX_NELMTS succeeds on jam and smirom. - * The value was adjusted for linew due to the following: - Linew failed with "H5FD_sec2_truncate(): unable to extend file properly" - Linew failed with "H5FD_sec2_truncate(): File too large" - */ - tparam.nelmts = MAX_NELMTS/17; - init_cparam(&cparam, &tparam); - - /* Set the last element in the Fixed Array */ - nerrors += test_skip_elmts(fapl, &cparam, &tparam, (hsize_t)(tparam.nelmts - 1), FALSE, "skipping to last element"); + nerrors += test_skip_elmts(fapl, &cparam, &tparam, ((hsize_t)1 << cparam.max_dblk_page_nelmts_bits), + TRUE, "skipping to first element in data block page"); + nerrors += test_skip_elmts(fapl, &cparam, &tparam, (hsize_t)(tparam.nelmts - 1), TRUE, + "skipping to last element"); + + /* Create Fixed Array */ + /* MAX_NELMTS succeeds on some platforms buy may fail on others: + * + * "H5FD_sec2_truncate(): unable to extend file properly" + * + * and + * + * "H5FD_sec2_truncate(): File too large" + * + * have both been seen. + */ + tparam.nelmts = MAX_NELMTS / 17; + init_cparam(&cparam, &tparam); + + /* Set the last element in the Fixed Array */ + nerrors += test_skip_elmts(fapl, &cparam, &tparam, (hsize_t)(tparam.nelmts - 1), FALSE, + "skipping to last element"); } /* end for */ /* Verify symbol table messages are cached */ nerrors += (h5_verify_cached_stabs(FILENAME, fapl) < 0 ? 1 : 0); - if(nerrors) + /* Pop API context */ + if (api_ctx_pushed && H5CX_pop(FALSE) < 0) + FAIL_STACK_ERROR; + api_ctx_pushed = FALSE; + + if (nerrors) goto error; - puts("All fixed array tests passed."); + HDputs("All fixed array tests passed."); /* Clean up file used */ h5_cleanup(FILENAME, fapl); - return 0; + HDexit(EXIT_SUCCESS); error: - puts("*** TESTS FAILED ***"); + HDputs("*** TESTS FAILED ***"); - H5E_BEGIN_TRY { - H5Pclose(fapl); - } H5E_END_TRY; + H5E_BEGIN_TRY + { + H5Pclose(fapl); + } + H5E_END_TRY; - return 1; -} /* end main() */ + if (api_ctx_pushed) + H5CX_pop(FALSE); + HDexit(EXIT_FAILURE); +} /* end main() */ |
