summaryrefslogtreecommitdiffstats
path: root/tools/misc/repart_test.c
blob: 042c858db3816f863038bd9a650f88c4340137ee (plain)
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
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html.  If you do not have     *
 * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

/*
 * Programmer:  Raymond Lu <slu@ncsa.uiuc.edu>
 *              June 1, 2005
 *
 * Purpose:	This program tests family files after being repartitioned 
 *              by h5repart.  It simply tries to reopen the files with
 *              correct family driver and member size.
 */
#include "hdf5.h"

#define KB                      1024
#define FAMILY_H5REPART_SIZE1   20000
#define FAMILY_H5REPART_SIZE2   (5*KB)
#define MAX(a,b) (a>b ? a:b)

const char *FILENAME[] = {      
    "fst_family%05d.h5",
    "scd_family%05d.h5",
    NULL        
};


/*-------------------------------------------------------------------------
 * Function:    test_family_h5repart_opens
 *
 * Purpose:     Tries to reopen family files.
 *
 * Return:      Success:        exit(0)
 *
 *              Failure:        exit(1)
 *
 * Programmer:  Raymond Lu
 *              June 1, 2005
 *
 * Modifications:
 *-------------------------------------------------------------------------
 */
static herr_t
test_family_h5repart_opens(void)
{
    hid_t       file=(-1), fapl=(-1);
    char        filename[1024];

    /* open 1st file(single member file) with correct family size(20000 byte) */
    if ((fapl=H5Pcreate(H5P_FILE_ACCESS))<0)
        goto error;
    
    if(H5Pset_fapl_family(fapl, (hsize_t)FAMILY_H5REPART_SIZE1, H5P_DEFAULT)<0)
        goto error;

    if((file=H5Fopen(FILENAME[0], H5F_ACC_RDWR, fapl))<0)
        goto error;

    if(H5Fclose(file)<0)
        goto error;

    /* open 2nd file(multiple member files) with correct family size(5KB) */
    if(H5Pset_fapl_family(fapl, (hsize_t)FAMILY_H5REPART_SIZE2, H5P_DEFAULT)<0)
        goto error;

    if((file=H5Fopen(FILENAME[1], H5F_ACC_RDWR, fapl))<0)
        goto error;

    if(H5Fclose(file)<0)
        goto error;

    return 0;

error:
    H5E_BEGIN_TRY {
        H5Fclose(file);
    } H5E_END_TRY;
    return -1;
}


/*-------------------------------------------------------------------------
 * Function:    main
 * 
 * Purpose:     Tests h5repart-ed family files 
 * 
 * Return:      Success:        exit(0)
 *              
 *              Failure:        exit(1)
 * 
 * Programmer:  Raymond Lu
 *              June 1, 2005
 * 
 * Modifications:
 *
 *-------------------------------------------------------------------------
 */
int
main(void)
{   
    int                 nerrors=0;
               
    nerrors += test_family_h5repart_opens()<0   ?1:0;

    if (nerrors) goto error;
    
    return 0;

error:
    nerrors = MAX(1, nerrors);
    printf("***** %d FAMILY FILE TEST%s FAILED! *****\n",
            nerrors, 1 == nerrors ? "" : "S");
    return 1;
}