From 2b3b747d4cfb9cefc9f3bd3183e1b11237441dca Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 31 Jul 2009 15:11:07 -0500 Subject: [PATCH] [svn-r17289] Added test targeted for bug 1520, which was fixed last week. The test generates an array datatype of ints larger than the display buffer. The bug was exposed when the buffer was reallocated. Tested: linux --- tools/h5dump/h5dumpgentest.c | 89 +++++++++++++++++++++------------- tools/h5dump/testh5dump.sh.in | 1 + tools/testfiles/tarray8.ddl | 14 ++++++ tools/testfiles/tarray8.h5 | Bin 0 -> 6148 bytes 4 files changed, 69 insertions(+), 35 deletions(-) create mode 100644 tools/testfiles/tarray8.ddl create mode 100644 tools/testfiles/tarray8.h5 diff --git a/tools/h5dump/h5dumpgentest.c b/tools/h5dump/h5dumpgentest.c index 75d9b60b9b..2d4a620c30 100644 --- a/tools/h5dump/h5dumpgentest.c +++ b/tools/h5dump/h5dumpgentest.c @@ -236,6 +236,13 @@ typedef struct s1_t { /* "File 51" macros */ #define F51_MAX_NAME_LEN ((64*1024)+1024) +/* "File 64" macros */ +#define F64_FILE "tarray8.h5" +#define F64_DATASET "DS1" +#define F64_DIM0 1 +#define F64_ARRAY_BUF_LEN (4*1024) +#define F64_DIM1 (F64_ARRAY_BUF_LEN / sizeof(int) + 1) + static void gent_group(void) { @@ -2813,48 +2820,59 @@ static void gent_array7(void) assert(ret >= 0); } +/* Test the boundary of the display output buffer at the reallocation event */ static void gent_array8(void) { - int *buf; /* information to write */ - hid_t fid; /* HDF5 File ID */ - hid_t did; /* dataset ID */ - hid_t sid; /* dataspace ID */ - hid_t tid; /* datatype ID */ - size_t size; - hsize_t sdims[] = {1}; - hsize_t tdims[] = {H5TOOLS_BUFSIZE / sizeof(int) + 1}; - int i; - herr_t ret; + hid_t file = -1; /* Handles */ + hid_t filetype = -1; /* Handles */ + hid_t space = -1; /* Handles */ + hid_t dset = -1; /* Handles */ + herr_t status = -1; + hsize_t sdims[] = {F64_DIM0}; + hsize_t tdims[] = {F64_DIM1}; + int wdata[(F64_DIM1) * sizeof(int)]; /* Write buffer */ + int ndims; + int i; - size = ( H5TOOLS_BUFSIZE / sizeof(int) + 1 ) * sizeof(int); - buf = malloc( size ); + /* + * Initialize data. i is the element in the dataspace, j and k the + * elements within the array datatype. + */ + for (i=0; i= 0); + /* + * Create dataspace. Setting maximum size to NULL sets the maximum + * size to be the current size. + */ + space = H5Screate_simple (1, sdims, NULL); - - /* close */ - ret = H5Dclose(did); - assert(ret >= 0); - ret = H5Tclose(tid); - assert(ret >= 0); - ret = H5Sclose(sid); - assert(ret >= 0); - - ret = H5Fclose(fid); - assert(ret >= 0); - free( buf ); + /* + * Create the dataset and write the array data to it. + */ + if(file>=0 && filetype>=0 && space>=0) { + dset = H5Dcreate (file, F64_DATASET, filetype, space, H5P_DEFAULT, H5P_DEFAULT, + H5P_DEFAULT); + if(dset>=0) + status = H5Dwrite (dset, filetype, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); + } + /* + * Close and release resources. + */ + status = H5Dclose (dset); + status = H5Sclose (space); + status = H5Tclose (filetype); + status = H5Fclose (file); } static void gent_empty(void) @@ -6348,6 +6366,7 @@ int main(void) gent_array5(); gent_array6(); gent_array7(); + gent_array8(); gent_empty(); gent_group_comments(); gent_split_file(); diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in index 748b1658b4..5bf7f75bcd 100644 --- a/tools/h5dump/testh5dump.sh.in +++ b/tools/h5dump/testh5dump.sh.in @@ -300,6 +300,7 @@ TOOLTEST tarray4.ddl tarray4.h5 TOOLTEST tarray5.ddl tarray5.h5 TOOLTEST tarray6.ddl tarray6.h5 TOOLTEST tarray7.ddl tarray7.h5 +TOOLTEST tarray8.ddl tarray8.h5 # test for files with empty data TOOLTEST tempty.ddl tempty.h5 diff --git a/tools/testfiles/tarray8.ddl b/tools/testfiles/tarray8.ddl new file mode 100644 index 0000000000..cf9ebc3237 --- /dev/null +++ b/tools/testfiles/tarray8.ddl @@ -0,0 +1,14 @@ +############################# +Expected output for 'h5dump tarray8.h5' +############################# +HDF5 "tarray8.h5" { +GROUP "/" { + DATASET "DS1" { + DATATYPE H5T_ARRAY { [1025] H5T_STD_I32LE } + DATASPACE SIMPLE { ( 1 ) / ( 1 ) } + DATA { + (0): [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024 ] + } + } +} +} diff --git a/tools/testfiles/tarray8.h5 b/tools/testfiles/tarray8.h5 new file mode 100644 index 0000000000000000000000000000000000000000..88022c38b186c30e72569071494feebeb7ba2299 GIT binary patch literal 6148 zcmeI!WzbdC8UWx!cS|FZ0s>Of(%p@qAYDp#Bi-F4C@2k5f`HQ9Ehycgpmg8o!1s+a z_vf8EbAMd+nP;!}>{xs4HEXZ+4lP~0WQ?duq6UInwX z4hOHVP`pFgK%nbCC;tagwThLB2fygh?=VHU|3M?(KJsl3yzPPiS`P&0mf$oR{FH<9 zRRkguiQso0gczMlz9^56MDSf-`=0a_|v3$whARke7Vq=VJ;`kU|uu2t_GIaU>#vl9Zw} zWiasu%2A#QRHPD>sX|q%QJospH!(R5Wp937^5QjO!QI2t(6P)B%PH~#w z_?S|UKlqb7+~qI+<{tNXz(XGKm?u2t8P9paOI{I7 zK7u((Fq@Hs1i}-6h(sbXQHV-3q7#Fd#3D9vh)X=)AwCI6NFoxGgrp?nU6S)2DM(2w zQj>uHnNk0kH|?ba+8O=HQ-FdLqA*1$N--oiffAIY z6s0LcS;|qK3RI*Lm8n8is!^R9)Z`OtQJYWsj5^fibLvr_1~jA*jcGztn$esVe8HEr zq!q1cLtEO>o(^=R6P@WoSGv)i9`vLaz3IbO^ravD8NfgWF_<9?Wf;R5!AM3inlX%J z9OIe5L?$trDNJP=)0x3czGfD)`G#+q!(6`Od*(5p1uSF{i&?@_mhl72S;0zHv6>%Q z!&-h~9qZY^&-}thHnEv4Y-JnU*}+bBv70^YWgq)Fz(Edim?IqJ7{@umNq*%Nr}>TF zIm21bah?lYKe@wQ{^D=$ai0e~|Y(vX(- zNk@7z@BtagL}orD3t7oVc5?6$ImtzC@{pH&@0trU*qTMsZ3|l2VkW3}q=t zc`8tmN>ru_RjEdGYEY9;s6}l)3LY-a~M*~M=5u$O)8=Ku#e#9@wblw%y{1Sk2GQ=H~Ee&-BlImdY} zaFI(~<_cH2#&vFRlUv;85B}s1clnFIxyOAT@Q_D5<_S-E#&cfql2-(i{xF0k9N~#T zL?RKHC`2V1(TPD!ViB7-#3df@5T67jBoT>8LQ<0PF3EY16r>~-sYydx-X|UD$-oC> zBomqWkSt^+8`;UhN8}_IxyeIb@{ym9DL_FAQJ5kWr5MF2K}kwcnlhB79ObD%MJiF5 zDpaK!)u};EKA{%1`IOJ7LtQ?n9`$KJLmJVTCN!lP&1u0Gd`U}M(V8~2r5)|*Ku0>! znJ#pt8{O$aPkPatK72)A`q7^O3}g_48NyJ8F`N;MWE7(r!&t^Ko(W835|f$2RHiYV z8O-EsW-*&@_?9`$|__a*~4D;v7ZAR$y!A)*)n?LxIJKW_j{^lO{dB8&+@t7w(