Skip to content

Commit

Permalink
Skip vlen IO API test for cache VOL (HDFGroup#4135)
Browse files Browse the repository at this point in the history
* Fix cache VOL segfault in vlen io test
* Skip vlen IO API test
  • Loading branch information
mattjala authored and lrknox committed Mar 21, 2024
1 parent 33a75a8 commit 05641d6
Showing 1 changed file with 57 additions and 52 deletions.
109 changes: 57 additions & 52 deletions test/API/H5_api_dataset_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -9868,6 +9868,10 @@ test_dataset_vlen_io(void)
return 0;
}

/* Skipped for now due to segfault with the Cache VOL */
SKIPPED();
return 0;

TESTING_2("test setup");

if ((file_id = H5Fopen(H5_api_test_filename, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) {
Expand Down Expand Up @@ -9955,9 +9959,6 @@ test_dataset_vlen_io(void)

dset_string = H5I_INVALID_HID;

memset(wbuf, 0, sizeof(hvl_t) * DATASET_VLEN_IO_DSET_DIMS);
memset(rbuf, 0, sizeof(hvl_t) * DATASET_VLEN_IO_DSET_DIMS);

PASSED();

BEGIN_MULTIPART
Expand Down Expand Up @@ -9985,6 +9986,9 @@ test_dataset_vlen_io(void)
if ((H5Dwrite(dset_int, vlen_int, space_id, H5S_ALL, H5P_DEFAULT, (const void *)wbuf)) < 0)
PART_TEST_ERROR(rw_all_int);

if (H5Dflush(dset_int) < 0)
PART_TEST_ERROR(rw_hyperslab_selection);

/* Close and reopen file objects to flush cache */
if (H5Dclose(dset_int) < 0)
PART_TEST_ERROR(rw_all_int);
Expand Down Expand Up @@ -10014,6 +10018,11 @@ test_dataset_vlen_io(void)
if ((H5Dread(dset_int, vlen_int, space_id, H5S_ALL, H5P_DEFAULT, (void *)rbuf)) < 0)
PART_TEST_ERROR(rw_all_int);

/* Close to finalize read */
if (H5Dclose(dset_int) < 0)
PART_TEST_ERROR(rw_all_int);
dset_int = H5I_INVALID_HID;

/* Verify data */
for (size_t i = 0; i < DATASET_VLEN_IO_DSET_DIMS; i++) {
if (!rbuf[i].p)
Expand All @@ -10027,12 +10036,6 @@ test_dataset_vlen_io(void)
PART_TEST_ERROR(rw_all_int);
}

/* Close before use in selection tests */
if (H5Dclose(dset_int) < 0)
PART_TEST_ERROR(rw_all_int);

dset_int = H5I_INVALID_HID;

/* Reset buffers */
if (H5Treclaim(vlen_int, space_id, H5P_DEFAULT, rbuf) < 0)
PART_TEST_ERROR(rw_all_int);
Expand Down Expand Up @@ -10069,6 +10072,9 @@ test_dataset_vlen_io(void)
if ((H5Dwrite(dset_float, vlen_float, space_id, H5S_ALL, H5P_DEFAULT, (const void *)wbuf)) < 0)
PART_TEST_ERROR(rw_all_float);

if (H5Dflush(dset_float) < 0)
PART_TEST_ERROR(rw_hyperslab_selection);

/* Close and reopen file objects to flush cache */
if (H5Dclose(dset_float) < 0)
PART_TEST_ERROR(rw_all_float);
Expand Down Expand Up @@ -10098,6 +10104,11 @@ test_dataset_vlen_io(void)
if ((H5Dread(dset_float, vlen_float, space_id, H5S_ALL, H5P_DEFAULT, (void *)rbuf)) < 0)
PART_TEST_ERROR(rw_all_float);

/* Close to finalize read */
if (H5Dclose(dset_float) < 0)
PART_TEST_ERROR(rw_all_float);
dset_float = H5I_INVALID_HID;

/* Verify data */
for (size_t i = 0; i < DATASET_VLEN_IO_DSET_DIMS; i++) {
if (!rbuf[i].p)
Expand All @@ -10116,7 +10127,6 @@ test_dataset_vlen_io(void)
}

/* Reset buffers */

if (H5Treclaim(vlen_float, space_id, H5P_DEFAULT, rbuf) < 0)
PART_TEST_ERROR(rw_all_float);

Expand Down Expand Up @@ -10155,6 +10165,9 @@ test_dataset_vlen_io(void)
if ((H5Dwrite(dset_string, vlen_string, space_id, H5S_ALL, H5P_DEFAULT, (const void *)wbuf)) < 0)
PART_TEST_ERROR(rw_all_string);

if (H5Dflush(dset_string) < 0)
PART_TEST_ERROR(rw_hyperslab_selection);

/* Close and reopen file objects to flush cache */
if (H5Dclose(dset_string) < 0)
PART_TEST_ERROR(rw_all_string);
Expand Down Expand Up @@ -10185,6 +10198,11 @@ test_dataset_vlen_io(void)
if ((H5Dread(dset_string, vlen_string, space_id, H5S_ALL, H5P_DEFAULT, (void *)rbuf)) < 0)
PART_TEST_ERROR(rw_all_string);

/* Close to finalize read */
if (H5Dclose(dset_string) < 0)
PART_TEST_ERROR(rw_all_string);
dset_string = H5I_INVALID_HID;

/* Verify data */
for (size_t i = 0; i < DATASET_VLEN_IO_DSET_DIMS; i++) {
if (!rbuf[i].p)
Expand All @@ -10205,7 +10223,6 @@ test_dataset_vlen_io(void)
}

/* Reset buffers */

if (H5Treclaim(vlen_string, space_id, H5P_DEFAULT, rbuf) < 0)
PART_TEST_ERROR(rw_all_string);

Expand Down Expand Up @@ -10251,6 +10268,9 @@ test_dataset_vlen_io(void)
if ((H5Dwrite(dset_int, vlen_int, space_id, space_id, H5P_DEFAULT, (const void *)wbuf)) < 0)
PART_TEST_ERROR(rw_point_selection);

if (H5Dflush(dset_int) < 0)
PART_TEST_ERROR(rw_hyperslab_selection);

/* Close and reopen file objects to flush cache */
if (H5Dclose(dset_int) < 0)
PART_TEST_ERROR(rw_point_selection);
Expand All @@ -10277,6 +10297,11 @@ test_dataset_vlen_io(void)
if ((H5Dread(dset_int, vlen_int, space_id, space_id, H5P_DEFAULT, (void *)rbuf)) < 0)
PART_TEST_ERROR(rw_point_selection);

/* Close to finalize read */
if (H5Dclose(dset_int) < 0)
PART_TEST_ERROR(rw_point_selection);
dset_int = H5I_INVALID_HID;

/* Verify data */
for (size_t i = 0; i < DATASET_VLEN_IO_DSET_DIMS; i++) {
if (i % 2 == 0) {
Expand All @@ -10299,10 +10324,6 @@ test_dataset_vlen_io(void)
}
}

if (H5Dclose(dset_int) < 0)
PART_TEST_ERROR(rw_point_selection);
dset_int = H5I_INVALID_HID;

/* Reset buffers */
if (H5Treclaim(vlen_int, space_id, H5P_DEFAULT, rbuf) < 0)
PART_TEST_ERROR(rw_point_selection);
Expand Down Expand Up @@ -10349,6 +10370,9 @@ test_dataset_vlen_io(void)
if ((H5Dwrite(dset_int, vlen_int, space_id, space_id, H5P_DEFAULT, (const void *)wbuf)) < 0)
PART_TEST_ERROR(rw_hyperslab_selection);

if (H5Dflush(dset_int) < 0)
PART_TEST_ERROR(rw_hyperslab_selection);

/* Close and reopen file objects to flush cache */
if (H5Dclose(dset_int) < 0)
PART_TEST_ERROR(rw_hyperslab_selection);
Expand All @@ -10375,6 +10399,11 @@ test_dataset_vlen_io(void)
if ((H5Dread(dset_int, vlen_int, space_id, space_id, H5P_DEFAULT, (void *)rbuf)) < 0)
PART_TEST_ERROR(rw_hyperslab_selection);

/* Close to finalize read */
if (H5Dclose(dset_int) < 0)
PART_TEST_ERROR(rw_hyperslab_selection);
dset_int = H5I_INVALID_HID;

/* Verify data */
for (size_t i = 0; i < DATASET_VLEN_IO_DSET_DIMS; i++) {
if (i % stride[0] == 0) {
Expand Down Expand Up @@ -10415,57 +10444,30 @@ test_dataset_vlen_io(void)

TESTING_2("test cleanup");

if (H5Fclose(file_id) < 0)
TEST_ERROR;
if (H5Gclose(container_group) < 0)
TEST_ERROR;
if (H5Dclose(dset_int) < 0)
TEST_ERROR;
if (H5Dclose(dset_float) < 0)
TEST_ERROR;
if (H5Dclose(dset_string) < 0)
TEST_ERROR;
if (H5Sclose(space_id) < 0)
TEST_ERROR;

/* In case of memory allocation error, not all hvl_t buffers in array may be allocated.
* Free one-by-one */
for (size_t i = 0; i < DATASET_VLEN_IO_DSET_DIMS; i++) {
if (wbuf[i].p) {
free(wbuf[i].p);
wbuf[i].p = NULL;
}
}

for (size_t i = 0; i < DATASET_VLEN_IO_DSET_DIMS; i++) {
if (rbuf[i].p) {
free(rbuf[i].p);
rbuf[i].p = NULL;
}
}

if (H5Tclose(vlen_int) < 0)
TEST_ERROR;
if (H5Tclose(vlen_float) < 0)
TEST_ERROR;
if (H5Tclose(vlen_string) < 0)
TEST_ERROR;

if (H5Gclose(container_group) < 0)
TEST_ERROR;
if (H5Fclose(file_id) < 0)
TEST_ERROR;
PASSED();
return 0;
error:

H5E_BEGIN_TRY
{
H5Fclose(file_id);
H5Gclose(container_group);
if (dset_int != H5I_INVALID_HID)
H5Dclose(dset_int);
if (dset_float != H5I_INVALID_HID)
H5Dclose(dset_float);
if (dset_string != H5I_INVALID_HID)
H5Dclose(dset_string);
H5Dclose(dset_int);
H5Dclose(dset_float);
H5Dclose(dset_string);
H5Sclose(space_id);
/* In case of memory allocation error, not all hvl_t buffers in array may be allocated.
* Free one-by-one */
for (size_t i = 0; i < DATASET_VLEN_IO_DSET_DIMS; i++) {
if (wbuf[i].p) {
free(wbuf[i].p);
Expand All @@ -10482,6 +10484,8 @@ test_dataset_vlen_io(void)
H5Tclose(vlen_int);
H5Tclose(vlen_float);
H5Tclose(vlen_string);
H5Gclose(container_group);
H5Fclose(file_id);
}
H5E_END_TRY

Expand Down Expand Up @@ -10513,7 +10517,8 @@ test_dataset_set_extent_chunked_unlimited(void)

/* Make sure the connector supports the API functions being tested */
if (!(vol_cap_flags_g & H5VL_CAP_FLAG_FILE_BASIC) || !(vol_cap_flags_g & H5VL_CAP_FLAG_GROUP_BASIC) ||
!(vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_BASIC) || !(vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_MORE)) {
!(vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_BASIC) || !(vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_MORE) ||
!(vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_MORE)) {
SKIPPED();
printf(" API functions for basic file, group, basic or more dataset aren't supported with this "
"connector\n");
Expand Down

0 comments on commit 05641d6

Please sign in to comment.