#include #include #include "testframe.h" #include "params.h" static void test_read_file_attribs(h5_file_t *file, int position) { h5_err_t status; char name[ATTR_NAME_SIZE]; char str[ATTR_NAME_SIZE]; h5_int32_t i32; h5_int64_t i64; h5_float32_t f32; h5_float64_t f64; TEST("Reading file attributes"); i64 = H5GetNumFileAttribs(file); VALUE(i64 % 5, 0, "file attribute count"); get_attr_name(name, "str", position); status = H5ReadFileAttribString(file, name, str); RETURN(status, H5_SUCCESS, "H5ReadFileAttribString"); SVALUE(str, ATTR_STR_VAL, "string attribute"); get_attr_name(name, "i32", position); status = H5ReadFileAttribInt32(file, name, &i32); RETURN(status, H5_SUCCESS, "H5ReadFileAttribInt32"); IVALUE(i32, ATTR_INT32_VAL, "int32 attribute"); get_attr_name(name, "i64", position); status = H5ReadFileAttribInt64(file, name, &i64); RETURN(status, H5_SUCCESS, "H5ReadFileAttribInt64"); IVALUE(i64, ATTR_INT64_VAL, "int64 attribute"); get_attr_name(name, "f32", position); status = H5ReadFileAttribFloat32(file, name, &f32); RETURN(status, H5_SUCCESS, "H5ReadFileAttribFloat32"); FVALUE(f32, ATTR_FLOAT_VAL, "float32 attribute"); get_attr_name(name, "f64", position); status = H5ReadFileAttribFloat64(file, name, &f64); RETURN(status, H5_SUCCESS, "H5ReadFileAttribFloat64"); FVALUE(f64, ATTR_FLOAT_VAL, "float64 attribute"); } static void test_read_step_attribs(h5_file_t *file, int position) { h5_err_t status; char name[ATTR_NAME_SIZE]; char str[ATTR_NAME_SIZE]; h5_int32_t i32; h5_int64_t i64; h5_float32_t f32; h5_float64_t f64; TEST("Reading file attributes"); i64 = H5GetNumStepAttribs(file); VALUE(i64 % 5, 0, "step attribute count"); get_attr_name(name, "str", position); status = H5ReadStepAttribString(file, name, str); RETURN(status, H5_SUCCESS, "H5ReadStepAttribString"); SVALUE(str, ATTR_STR_VAL, "string attribute"); get_attr_name(name, "i32", position); status = H5ReadStepAttribInt32(file, name, &i32); RETURN(status, H5_SUCCESS, "H5ReadStepAttribInt32"); IVALUE(i32, ATTR_INT32_VAL, "int32 attribute"); get_attr_name(name, "i64", position); status = H5ReadStepAttribInt64(file, name, &i64); RETURN(status, H5_SUCCESS, "H5ReadStepAttribInt64"); IVALUE(i64, ATTR_INT64_VAL, "int64 attribute"); get_attr_name(name, "f32", position); status = H5ReadStepAttribFloat32(file, name, &f32); RETURN(status, H5_SUCCESS, "H5ReadStepAttribFloat32"); FVALUE(f32, ATTR_FLOAT_VAL, "float32 attribute"); get_attr_name(name, "f64", position); status = H5ReadStepAttribFloat64(file, name, &f64); RETURN(status, H5_SUCCESS, "H5ReadStepAttribFloat64"); FVALUE(f64, ATTR_FLOAT_VAL, "float64 attribute"); } static void test_read_data64(h5_file_t *file, int nparticles, int step) { int i,t; int rank, nprocs; h5_err_t status; h5_int64_t val, start, end, type; char name1[4]; char name2[8]; h5_size_t indices[8]; h5_size_t size; double *x,*y,*z; double *px,*py,*pz; h5_int64_t *id; x=(double*)malloc(nparticles*sizeof(double)); y=(double*)malloc(nparticles*sizeof(double)); z=(double*)malloc(nparticles*sizeof(double)); px=(double*)malloc(nparticles*sizeof(double)); py=(double*)malloc(nparticles*sizeof(double)); pz=(double*)malloc(nparticles*sizeof(double)); id=(h5_int64_t*)malloc(nparticles*sizeof(h5_int64_t)); TEST("Verifying dataset info"); #if defined(PARALLEL_IO) MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); #else nprocs = 1; rank = 2; #endif val = H5PartGetNumParticles(file); IVALUE(val, nprocs*nparticles, "particle count"); val = H5PartGetNumDatasets(file); IVALUE(val, 7, "dataset count"); for (i=0; i<7; i++) { status = H5PartGetDatasetName(file, i, name1, 2); RETURN(status, H5_SUCCESS, "H5PartGetDatasetName"); status = H5PartGetDatasetInfo( file, i, name2, 4, &type, &size); RETURN(status, H5_SUCCESS, "H5PartGetDatasetInfo"); CVALUE(name1[0], name2[0], "dataset name"); status = H5PartGetDatasetName(file, i, name1, 4); RETURN(status, H5_SUCCESS, "H5PartGetDatasetName"); CVALUE(name1[1], name2[1], "dataset name"); IVALUE(size, nprocs*nparticles, "dataset size"); if (name1[0] == 'i') IVALUE(type, H5_INT64_T, "dataset type"); else IVALUE(type, H5_FLOAT64_T, "dataset type"); } #if defined(PARALLEL_IO) TEST("Setting throttle"); status = H5SetThrottle(file, 3); RETURN(status, H5_SUCCESS, "H5SetThrottle"); #endif TEST("Reading 64-bit data"); for (t=step; t