diff options
Diffstat (limited to 'test/vfd_swmr_gperf_writer.c')
-rw-r--r-- | test/vfd_swmr_gperf_writer.c | 197 |
1 files changed, 108 insertions, 89 deletions
diff --git a/test/vfd_swmr_gperf_writer.c b/test/vfd_swmr_gperf_writer.c index 88e8b6f..cedbaf5 100644 --- a/test/vfd_swmr_gperf_writer.c +++ b/test/vfd_swmr_gperf_writer.c @@ -97,18 +97,6 @@ typedef struct { unsigned int nglevels; } state_t; -#define ALL_HID_INITIALIZER \ - (state_t) \ - { \ - .file = H5I_INVALID_HID, .one_by_one_sid = H5I_INVALID_HID, .filename = "", \ - .filetype = H5T_NATIVE_UINT32, .asteps = 1, .nsteps = 100, .use_vfd_swmr = true, \ - .old_style_grp = false, .grp_op_pattern = ' ', .grp_op_test = false, .at_pattern = ' ', \ - .attr_test = false, .tick_len = 4, .max_lag = 7, .gperf = false, .glog = false, .min_gc_time = 100., \ - .max_gc_time = 0., .mean_gc_time = 0., .total_gc_time = 0., .total_time = 0., .mean_time = 0., \ - .fo_total_time = 0., .fc_total_time = 0., .num_attrs = 1, .vlstr_test = false, .ps = 4096, \ - .pbs = 4096, .nglevels = 0 \ - } - static void usage(const char *progname) { @@ -209,7 +197,37 @@ state_init(state_t *s, int argc, char **argv) char * tfile = NULL; char * end; - *s = ALL_HID_INITIALIZER; + s->file = H5I_INVALID_HID; + s->one_by_one_sid = H5I_INVALID_HID; + s->filetype = H5T_NATIVE_UINT32; + s->asteps = 1; + s->nsteps = 100; + s->use_vfd_swmr = TRUE; + s->old_style_grp = FALSE; + s->grp_op_pattern = ' '; + s->grp_op_test = FALSE; + s->at_pattern = ' '; + s->attr_test = FALSE; + s->tick_len = 4; + s->max_lag = 7; + s->gperf = FALSE; + s->glog = FALSE; + s->min_gc_time = 100; + s->max_gc_time = 100; + s->mean_gc_time = 0.0; + s->total_gc_time = 0.0; + s->total_time = 0.0; + s->mean_time = 0.0; + s->fo_total_time = 0.0; + s->fc_total_time = 0.0; + s->num_attrs = 1; + s->vlstr_test = FALSE; + s->ps = 4096; + s->pbs = 4096; + s->nglevels = 0; + + HDmemset(s->filename, 0, PATH_MAX); + HDmemset(s->progname, 0, PATH_MAX); if (H5_basename(argv[0], &tfile) < 0) { HDprintf("H5_basename failed\n"); @@ -2773,22 +2791,31 @@ error: int main(int argc, char **argv) { - hid_t fapl = H5I_INVALID_HID, fcpl = H5I_INVALID_HID; - unsigned step; - bool writer = false; - state_t s; - const char * personality; - H5F_vfd_swmr_config_t config; - bool wg_ret = false; - struct timespec start_time, end_time; - unsigned int num_elems_per_level = 0; - - if (!state_init(&s, argc, argv)) { + hid_t fapl = H5I_INVALID_HID, fcpl = H5I_INVALID_HID; + unsigned step; + bool writer = false; + state_t * s = NULL; + const char * personality; + H5F_vfd_swmr_config_t *config = NULL; + bool wg_ret = false; + struct timespec start_time, end_time; + unsigned int num_elems_per_level = 0; + + if (NULL == (s = HDcalloc(1, sizeof(state_t)))) { + HDprintf("memory allocation failed"); + TEST_ERROR; + } + if (NULL == (config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t)))) { + HDprintf("memory allocation failed"); + TEST_ERROR; + } + + if (!state_init(s, argc, argv)) { HDprintf("state_init failed\n"); TEST_ERROR; } - personality = HDstrstr(s.progname, "vfd_swmr_gperf_"); + personality = HDstrstr(s->progname, "vfd_swmr_gperf_"); if (personality != NULL && HDstrcmp(personality, "vfd_swmr_gperf_writer") == 0) writer = true; @@ -2807,69 +2834,66 @@ main(int argc, char **argv) /* config, tick_len, max_lag, presume_posix_semantics, writer, * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved, * md_file_path, md_file_name, updater_file_path */ - init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, writer, TRUE, FALSE, FALSE, 128, "./", + init_vfd_swmr_config(config, s->tick_len, s->max_lag, FALSE, writer, TRUE, FALSE, FALSE, 128, "./", "group-shadow", NULL); /* If the log flag is on, create the log file log-test under the current directory. */ - if (s.glog == true) - init_vfd_swmr_log(&config, "./log-test"); + if (s->glog == true) + init_vfd_swmr_log(config, "./log-test"); /* If old-style option is chosen, use the earliest file format(H5F_LIBVER_EARLIEST) * as the second parameter of H5Pset_libver_bound() that is called by * vfd_swmr_create_fapl. Otherwise, the latest file format(H5F_LIBVER_LATEST) * should be used as the second parameter of H5Pset_libver_bound(). * Also pass the use_vfd_swmr, only_meta_page, page buffer size, config to vfd_swmr_create_fapl().*/ - if ((fapl = vfd_swmr_create_fapl(!s.old_style_grp, s.use_vfd_swmr, true, s.pbs, &config)) < 0) { + if ((fapl = vfd_swmr_create_fapl(!s->old_style_grp, s->use_vfd_swmr, true, s->pbs, config)) < 0) { HDprintf("vfd_swmr_create_fapl failed\n"); TEST_ERROR; } /* Set fs_strategy (file space strategy) and fs_page_size (file space page size) */ - if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s.ps)) < 0) { + if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s->ps)) < 0) { HDprintf("vfd_swmr_create_fcpl() failed"); TEST_ERROR; } - if (s.nglevels > 0) { - if (s.grp_op_pattern != ' ' || s.at_pattern != ' ') { + if (s->nglevels > 0) { + if (s->grp_op_pattern != ' ' || s->at_pattern != ' ') { HDprintf("For nested group creation test, only the default option is supported.\n"); HDprintf("Please re-run the tests with the appropriate option.\n"); TEST_ERROR; } } - if (s.gperf) { - + if (s->gperf) { if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) { HDfprintf(stderr, "HDclock_gettime failed"); TEST_ERROR; } } - s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl); - - if (s.gperf) { + s->file = H5Fcreate(s->filename, H5F_ACC_TRUNC, fcpl, fapl); + if (s->gperf) { if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) { HDfprintf(stderr, "HDclock_gettime failed"); TEST_ERROR; } - s.fo_total_time = TIME_PASSED(start_time, end_time); + s->fo_total_time = TIME_PASSED(start_time, end_time); } - if (s.file < 0) { + if (s->file < 0) { HDprintf("H5Fcreate failed\n"); TEST_ERROR; } /* If generating nested groups, calculate the maximum number of elements per level. */ - if (s.nglevels > 0) - num_elems_per_level = obtain_tree_level_elems(s.nsteps, s.nglevels); - - if (s.gperf) { + if (s->nglevels > 0) + num_elems_per_level = obtain_tree_level_elems(s->nsteps, s->nglevels); + if (s->gperf) { if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) { HDfprintf(stderr, "HDclock_gettime failed"); TEST_ERROR; @@ -2877,20 +2901,18 @@ main(int argc, char **argv) } /* If generating nested groups */ - if (s.nglevels > 0) { - + if (s->nglevels > 0) { /* for the recursive call, the groups under the root is treated as one level */ - wg_ret = gen_tree_struct(&s, s.nglevels + 1, num_elems_per_level, s.file); + wg_ret = gen_tree_struct(s, s->nglevels + 1, num_elems_per_level, s->file); if (wg_ret == false) { HDprintf("write nested group failed at group counter %u\n", grp_counter); TEST_ERROR; } } else { - for (step = 0; step < s.nsteps; step++) { - + for (step = 0; step < s->nsteps; step++) { dbgf(2, "writer: step %d\n", step); - wg_ret = group_operations(&s, step); + wg_ret = group_operations(s, step); if (wg_ret == false) { HDprintf("write_group failed at step %d\n", step); TEST_ERROR; @@ -2898,17 +2920,15 @@ main(int argc, char **argv) } } - if (s.gperf) { - + if (s->gperf) { if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) { - HDfprintf(stderr, "HDclock_gettime failed"); TEST_ERROR; } - s.total_time = TIME_PASSED(start_time, end_time); - s.mean_time = s.total_time / s.nsteps; - s.mean_gc_time = s.total_gc_time / s.nsteps; + s->total_time = TIME_PASSED(start_time, end_time); + s->mean_time = s->total_time / s->nsteps; + s->mean_gc_time = s->total_gc_time / s->nsteps; } if (H5Pclose(fapl) < 0) { @@ -2921,68 +2941,61 @@ main(int argc, char **argv) TEST_ERROR; } - if (H5Sclose(s.one_by_one_sid) < 0) { + if (H5Sclose(s->one_by_one_sid) < 0) { HDprintf("H5Sclose failed\n"); TEST_ERROR; } - if (s.gperf) { - + if (s->gperf) { if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) { - HDfprintf(stderr, "HDclock_gettime failed"); - TEST_ERROR; } } - if (H5Fclose(s.file) < 0) { + if (H5Fclose(s->file) < 0) { HDprintf("H5Fclose failed\n"); TEST_ERROR; } - if (s.gperf) { - + if (s->gperf) { if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) { - HDfprintf(stderr, "HDclock_gettime failed"); - TEST_ERROR; } - s.fc_total_time = TIME_PASSED(start_time, end_time); + s->fc_total_time = TIME_PASSED(start_time, end_time); } /* Performance statistics summary */ - if (s.gperf) { + if (s->gperf) { if (verbosity != 0) { - HDfprintf(stdout, "\nPerformance Test Configuration: "); - if (s.use_vfd_swmr) + if (s->use_vfd_swmr) HDfprintf(stdout, " Using VFD SWMR \n"); else HDfprintf(stdout, " Not using VFD SWMR \n"); - if (s.old_style_grp) + if (s->old_style_grp) HDfprintf(stdout, " Groups: Created via the earliest file format(old-style) \n"); else HDfprintf(stdout, " Groups: Created via the latest file format(new-style) \n"); HDfprintf(stdout, "\n"); - HDfprintf(stdout, "The length of a tick = %u\n", s.tick_len); - HDfprintf(stdout, "The maximum expected lag(in ticks)= %u\n", s.max_lag); - HDfprintf(stdout, "The page size(in bytes) = %u\n", s.ps); - HDfprintf(stdout, "The page buffer size(in bytes) = %u\n", s.pbs); + HDfprintf(stdout, "The length of a tick = %u\n", s->tick_len); + HDfprintf(stdout, "The maximum expected lag(in ticks)= %u\n", s->max_lag); + HDfprintf(stdout, "The page size(in bytes) = %u\n", s->ps); + HDfprintf(stdout, "The page buffer size(in bytes) = %u\n", s->pbs); HDfprintf(stdout, "\n"); - HDfprintf(stdout, "Number of groups = %u\n", s.nsteps); - HDfprintf(stdout, "Group Nested levels = %u\n", s.nglevels); - HDfprintf(stdout, "Number of attributes = %u\n", s.num_attrs); + HDfprintf(stdout, "Number of groups = %u\n", s->nsteps); + HDfprintf(stdout, "Group Nested levels = %u\n", s->nglevels); + HDfprintf(stdout, "Number of attributes = %u\n", s->num_attrs); HDfprintf(stdout, "Number of element per attribute = 1\n"); - if (s.vlstr_test) + if (s->vlstr_test) HDfprintf(stdout, "Attribute datatype is variable length string. \n"); - else if (s.filetype == H5T_STD_U32BE) + else if (s->filetype == H5T_STD_U32BE) HDfprintf(stdout, "Attribute datatype is big-endian unsigned 32-bit integer.\n"); else HDfprintf(stdout, "Attribute datatype is native unsigned 32-bit integer.\n"); @@ -2990,19 +3003,22 @@ main(int argc, char **argv) HDfprintf(stdout, "\n"); HDfprintf(stdout, "(If the nested level is 0, all the groups are created directly under the root.)\n\n"); - HDfprintf(stdout, "group creation maximum time =%lf\n", s.max_gc_time); - HDfprintf(stdout, "group creation minimum time =%lf\n", s.min_gc_time); + HDfprintf(stdout, "group creation maximum time =%lf\n", s->max_gc_time); + HDfprintf(stdout, "group creation minimum time =%lf\n", s->min_gc_time); } - HDfprintf(stdout, "group creation total time = %lf\n", s.total_gc_time); - HDfprintf(stdout, "group creation mean time(per group) = %lf\n", s.mean_gc_time); - HDfprintf(stdout, "group creation and attributes generation total time = %lf\n", s.total_time); + HDfprintf(stdout, "group creation total time = %lf\n", s->total_gc_time); + HDfprintf(stdout, "group creation mean time(per group) = %lf\n", s->mean_gc_time); + HDfprintf(stdout, "group creation and attributes generation total time = %lf\n", s->total_time); HDfprintf(stdout, "group creation and attributes generation mean time(per group) = %lf\n", - s.mean_time); - HDfprintf(stdout, "H5Fcreate time = %lf\n", s.fo_total_time); - HDfprintf(stdout, "H5Fclose time = %lf\n", s.fc_total_time); + s->mean_time); + HDfprintf(stdout, "H5Fcreate time = %lf\n", s->fo_total_time); + HDfprintf(stdout, "H5Fclose time = %lf\n", s->fc_total_time); } + HDfree(config); + HDfree(s); + return EXIT_SUCCESS; error: @@ -3010,11 +3026,14 @@ error: { H5Pclose(fapl); H5Pclose(fcpl); - H5Sclose(s.one_by_one_sid); - H5Fclose(s.file); + H5Sclose(s->one_by_one_sid); + H5Fclose(s->file); } H5E_END_TRY; + HDfree(config); + HDfree(s); + return EXIT_FAILURE; } |