1997-08-10 00:47:25 +08:00
|
|
|
|
/*-------------------------------------------------------------------------
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Copyright (C) 1997 National Center for Supercomputing Applications.
|
1997-08-10 00:47:25 +08:00
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Created: tstab.c
|
|
|
|
|
* Aug 7 1997
|
|
|
|
|
* Robb Matzke <matzke@llnl.gov>
|
1997-08-10 00:47:25 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Purpose:
|
1997-08-10 00:47:25 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Modifications:
|
1997-08-10 00:47:25 +08:00
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
1997-08-16 00:53:11 +08:00
|
|
|
|
#include <testhdf5.h>
|
1997-08-10 00:47:25 +08:00
|
|
|
|
|
1997-08-16 00:53:11 +08:00
|
|
|
|
#include <H5private.h>
|
1998-03-18 06:46:27 +08:00
|
|
|
|
#include <H5Iprivate.h>
|
1997-08-16 00:53:11 +08:00
|
|
|
|
#include <H5ACprivate.h>
|
1998-02-26 03:13:49 +08:00
|
|
|
|
#include <H5Pprivate.h>
|
1998-01-17 06:23:43 +08:00
|
|
|
|
#include <H5Fprivate.h>
|
1997-08-16 00:53:11 +08:00
|
|
|
|
#include <H5Gprivate.h>
|
|
|
|
|
#include <H5Oprivate.h>
|
1997-08-10 00:47:25 +08:00
|
|
|
|
|
1998-07-03 08:57:00 +08:00
|
|
|
|
#define TEST_FILE "tstab2.h5"
|
|
|
|
|
|
1997-09-22 10:09:16 +08:00
|
|
|
|
/*
|
|
|
|
|
* This file needs to access private datatypes from the H5G package.
|
|
|
|
|
*/
|
|
|
|
|
#define H5G_PACKAGE
|
|
|
|
|
#include <H5Gpkg.h>
|
1997-08-10 00:47:25 +08:00
|
|
|
|
|
1997-08-30 00:59:28 +08:00
|
|
|
|
/*-------------------------------------------------------------------------
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Function: test_2
|
1997-08-30 00:59:28 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Purpose: Creates a really large directory.
|
1997-08-30 00:59:28 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Return: void
|
1997-08-30 00:59:28 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* robb@maya.nuance.com
|
|
|
|
|
* Aug 29 1997
|
1997-08-30 00:59:28 +08:00
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static void
|
1998-01-17 06:23:43 +08:00
|
|
|
|
test_2(void)
|
1997-08-10 00:47:25 +08:00
|
|
|
|
{
|
1998-02-20 02:26:49 +08:00
|
|
|
|
hid_t fid, create_plist, access_plist, dir;
|
1998-01-17 06:23:43 +08:00
|
|
|
|
H5F_t *f;
|
|
|
|
|
int i;
|
|
|
|
|
char name[256];
|
|
|
|
|
herr_t status;
|
|
|
|
|
int nsyms = 5000;
|
1997-08-10 00:47:25 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
MESSAGE(2, ("........large directories\n"));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Use larger symbol table data structures to be more efficient, use
|
|
|
|
|
* defaults to bang harder on the library for testing.
|
|
|
|
|
*/
|
1998-02-26 03:13:49 +08:00
|
|
|
|
create_plist = H5Pcreate(H5P_FILE_CREATE);
|
|
|
|
|
H5Pset_sym_k(create_plist, 16, 16);
|
1998-02-20 02:26:49 +08:00
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* File access property list.
|
|
|
|
|
*/
|
1998-02-26 03:13:49 +08:00
|
|
|
|
access_plist = H5Pcreate (H5P_FILE_ACCESS);
|
1998-02-26 04:31:17 +08:00
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
/* Try temporary core files */
|
|
|
|
|
H5Cset_core (access_plist, 3000000);
|
|
|
|
|
#elif 0
|
|
|
|
|
/* Try a default split file but with our own name extensions */
|
|
|
|
|
H5Cset_split (access_plist, ".XX1", H5C_DEFAULT, ".XX2", H5C_DEFAULT);
|
|
|
|
|
#elif 0
|
|
|
|
|
{
|
|
|
|
|
/* Try a split file with an in-core meta data part */
|
|
|
|
|
hid_t meta_access = H5Ccreate (H5C_FILE_ACCESS);
|
|
|
|
|
H5Cset_core (meta_access, 1024*1024);
|
|
|
|
|
H5Cset_split (access_plist, NULL, meta_access, NULL, H5C_DEFAULT);
|
|
|
|
|
}
|
|
|
|
|
#elif 0
|
|
|
|
|
{
|
|
|
|
|
/* Try a split file with an in-core raw data part */
|
|
|
|
|
hid_t raw_access = H5Ccreate (H5C_FILE_ACCESS);
|
|
|
|
|
H5Cset_core (raw_access, 1024*1024);
|
|
|
|
|
H5Cset_split (access_plist, NULL, H5C_DEFAULT, NULL, raw_access);
|
|
|
|
|
}
|
1998-02-20 02:35:14 +08:00
|
|
|
|
#endif
|
1998-01-06 11:07:15 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
/* create the file */
|
1998-07-03 08:57:00 +08:00
|
|
|
|
fid = H5Fcreate(TEST_FILE, H5F_ACC_TRUNC, create_plist, access_plist);
|
1998-01-17 06:23:43 +08:00
|
|
|
|
CHECK(fid, FAIL, "H5Fcreate");
|
1998-03-18 06:46:27 +08:00
|
|
|
|
f = H5I_object(fid);
|
|
|
|
|
CHECK(f, NULL, "H5I_object");
|
1998-01-17 06:23:43 +08:00
|
|
|
|
f->intent |= H5F_ACC_DEBUG;
|
1997-08-10 00:47:25 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
/*
|
|
|
|
|
* Create a directory that has so many entries that the root
|
|
|
|
|
* of the B-tree ends up splitting.
|
|
|
|
|
*/
|
1998-04-07 23:34:16 +08:00
|
|
|
|
dir = H5Gcreate(fid, "/big", (size_t)nsyms*16+2);
|
1998-01-17 06:23:43 +08:00
|
|
|
|
CHECK_I(dir, "H5Gcreate");
|
|
|
|
|
status = H5Gclose(dir);
|
|
|
|
|
CHECK_I(status, "H5Gclose");
|
|
|
|
|
status = H5Gset(fid, "/big");
|
|
|
|
|
CHECK_I(status, "H5Gset");
|
1997-08-30 00:59:28 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
for (i = 0; i < nsyms; i++) {
|
|
|
|
|
sprintf(name, "%05d%05d", rand() % 100000, i);
|
|
|
|
|
MESSAGE(8, ("%s\n", name));
|
|
|
|
|
dir = H5Gcreate(fid, name, 0);
|
|
|
|
|
CHECK_I(dir, "H5Gcreate");
|
|
|
|
|
status = H5Gclose(dir);
|
|
|
|
|
CHECK_I(status, "H5Gclose");
|
|
|
|
|
}
|
1997-08-30 00:59:28 +08:00
|
|
|
|
|
1998-04-29 00:37:17 +08:00
|
|
|
|
/* close the property lists */
|
|
|
|
|
status = H5Pclose(create_plist);
|
|
|
|
|
CHECK_I(status, "H5Pclose");
|
|
|
|
|
status = H5Pclose(access_plist);
|
|
|
|
|
CHECK_I(status, "H5Pclose");
|
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
/* close the file */
|
|
|
|
|
status = H5Fclose(fid);
|
|
|
|
|
CHECK_I(status, "H5Fclose");
|
|
|
|
|
}
|
1997-08-30 00:59:28 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Function: test_stab
|
1997-08-30 00:59:28 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Purpose: Test symbol tables
|
1997-08-30 00:59:28 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Return: void
|
1997-08-30 00:59:28 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* matzke@viper.llnl.gov
|
|
|
|
|
* Aug 7 1997
|
1997-08-30 00:59:28 +08:00
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
void
|
1998-01-17 06:23:43 +08:00
|
|
|
|
test_stab(void)
|
1997-08-30 00:59:28 +08:00
|
|
|
|
{
|
1998-01-17 06:23:43 +08:00
|
|
|
|
test_2();
|
1997-08-10 00:47:25 +08:00
|
|
|
|
}
|
1998-07-03 08:57:00 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: cleanup_stab
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Cleanup temporary test files
|
|
|
|
|
*
|
|
|
|
|
* Return: none
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Albert Cheng
|
|
|
|
|
* July 2, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
void
|
|
|
|
|
cleanup_stab(void)
|
|
|
|
|
{
|
|
|
|
|
remove(TEST_FILE);
|
|
|
|
|
}
|
|
|
|
|
|