summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2017-03-14 04:30:37 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2017-03-14 04:30:37 (GMT)
commit0313cbb91d974b153dbe8747d193ac3c619eea3b (patch)
treeaf6c4a631d5753685ee0033a6a8415a25fc97672 /java
parent847d675f2743ec420ef6c9efdd6e52ae93b4fe44 (diff)
downloadhdf5-0313cbb91d974b153dbe8747d193ac3c619eea3b.zip
hdf5-0313cbb91d974b153dbe8747d193ac3c619eea3b.tar.gz
hdf5-0313cbb91d974b153dbe8747d193ac3c619eea3b.tar.bz2
Final merge of page buffering branch to develop
Diffstat (limited to 'java')
-rw-r--r--java/src/hdf/hdf5lib/H5.java121
-rw-r--r--java/src/hdf/hdf5lib/HDF5Constants.java24
-rw-r--r--java/src/jni/h5Constants.c12
-rw-r--r--java/src/jni/h5pImp.c115
-rw-r--r--java/src/jni/h5pImp.h51
-rw-r--r--java/test/JUnit-interface.txt5
-rw-r--r--java/test/TestH5P.java41
7 files changed, 271 insertions, 98 deletions
diff --git a/java/src/hdf/hdf5lib/H5.java b/java/src/hdf/hdf5lib/H5.java
index 02d35ba..5b35d17 100644
--- a/java/src/hdf/hdf5lib/H5.java
+++ b/java/src/hdf/hdf5lib/H5.java
@@ -5356,39 +5356,24 @@ public class H5 implements java.io.Serializable {
throws HDF5LibraryException, IllegalArgumentException;
/**
- * H5Pset_file_space sets the file space management strategy for the file associated with fcpl_id to strategy.
+ * H5Pset_file_space_strategy sets the file space management strategy for the file associated with fcpl_id to strategy.
* There are four strategies that applications can select and they are described in the Parameters section.
*
* @param fcpl_id
* IN: File creation property list identifier
* @param strategy
* IN: The strategy for file space management.
- * Passing a value of zero (0) indicates that the value of strategy is not to be modified.
- * H5F_FILE_SPACE_ALL_PERSIST
- * With this strategy, the free-space managers track the free space that results from the
- * manipulation of HDF5 objects in the HDF5 file. The free space information is saved when the
- * file is closed, and reloaded when the file is reopened. When space is needed for file metadata
- * or raw data, the HDF5 library first requests space from the library's free-space managers.
- * If the request is not satisfied, the library requests space from the aggregators. If the request
- * is still not satisfied, the library requests space from the virtual file driver. That is, the
- * library will use all of the mechanisms for allocating space.
- * H5F_FILE_SPACE_ALL (Default file space management strategy)
- * With this strategy, the free-space managers track the free space that results from the manipulation
- * of HDF5 objects in the HDF5 file. The free space information is NOT saved when the file is closed
- * and the free space that exists upon file closing becomes unaccounted space in the file.
- * Like the previous strategy, the library will try all of the mechanisms for allocating space. When
- * space is needed for file metadata or raw data, the library first requests space from the free-space
- * managers. If the request is not satisfied, the library requests space from the aggregators. If the
- * request is still not satisfied, the library requests space from the virtual file driver.
- * H5F_FILE_SPACE_AGGR_VFD
- * With this strategy, the library does not track free space that results from the manipulation of HDF5
- * obejcts in the HDF5 file and the free space becomes unaccounted space in the file.
- * When space is needed for file metadata or raw data, the library first requests space from the
- * aggregators. If the request is not satisfied, the library requests space from the virtual file driver.
- * H5F_FILE_SPACE_VFD
- * With this strategy, the library does not track free space that results from the manipulation of HDF5
- * obejcts in the HDF5 file and the free space becomes unaccounted space in the file.
- * When space is needed for file metadata or raw data, the library requests space from the virtual file driver.
+ * H5F_FSPACE_STRATEGY_FSM_AGGR
+ * Mechanisms: free-space managers, aggregators, and virtual file drivers
+ * This is the library default when not set.
+ * H5F_FSPACE_STRATEGY_PAGE
+ * Mechanisms: free-space managers with embedded paged aggregation and virtual file drivers
+ * H5F_FSPACE_STRATEGY_AGGR
+ * Mechanisms: aggregators and virtual file drivers
+ * H5F_FSPACE_STRATEGY_NONE
+ * Mechanisms: virtual file drivers
+ * @param persist
+ * IN: True to persist free-space.
* @param threshold
* IN: The free-space section threshold. The library default is 1, which is to track all free-space sections.
* Passing a value of zero (0) indicates that the value of threshold is not to be modified.
@@ -5399,28 +5384,100 @@ public class H5 implements java.io.Serializable {
* - Invalid values of max_list and min_btree.
*
**/
- public synchronized static native void H5Pset_file_space(long fcpl_id, int strategy, long threshold)
+ public synchronized static native void H5Pset_file_space_strategy(long fcpl_id, int strategy, boolean persist, long threshold)
throws HDF5LibraryException, IllegalArgumentException;
/**
- * H5Pget_file_space provides the means for applications to manage the HDF5 file's file space for their specific needs.
+ * H5Pget_file_space_strategy provides the means for applications to manage the HDF5 file's file space strategy for their specific needs.
*
* @param fcpl_id
* IN: File creation property list identifier
- * @param strategy
- * IN/OUT: The current file space management strategy in use for the file. NULL, strategy not queried.
+ * @param persist
+ * IN/OUT: The current free-space persistence. NULL, persist not queried.
* @param threshold
* IN/OUT: The current free-space section threshold. NULL, threshold not queried.
*
+ * @return the current free-space strategy.
+ *
+ * @exception HDF5LibraryException
+ * - Error from the HDF-5 Library.
+ * @exception IllegalArgumentException
+ * - Invalid values of max_list and min_btree.
+ *
+ **/
+ public synchronized static native int H5Pget_file_space_strategy(long fcpl_id, boolean[] persist, long[] threshold)
+ throws HDF5LibraryException, IllegalArgumentException;
+
+ /**
+ * H5Pget_file_space_strategy_persist provides the means for applications to manage the HDF5 file's file space strategy for their specific needs.
+ *
+ * @param fcpl_id
+ * IN: File creation property list identifier
+ *
+ * @return the current free-space persistence.
+ *
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
* @exception IllegalArgumentException
* - Invalid values of max_list and min_btree.
*
**/
- public synchronized static native void H5Pget_file_space(long fcpl_id, int[] strategy, long[] threshold)
+ public synchronized static native boolean H5Pget_file_space_strategy_persist(long fcpl_id)
throws HDF5LibraryException, IllegalArgumentException;
+ /**
+ * H5Pget_file_space_strategy_threshold provides the means for applications to manage the HDF5 file's file space strategy for their specific needs.
+ *
+ * @param fcpl_id
+ * IN: File creation property list identifier
+ *
+ * @return the current free-space section threshold.
+ *
+ * @exception HDF5LibraryException
+ * - Error from the HDF-5 Library.
+ * @exception IllegalArgumentException
+ * - Invalid values of max_list and min_btree.
+ *
+ **/
+ public synchronized static native long H5Pget_file_space_strategy_threshold(long fcpl_id)
+ throws HDF5LibraryException, IllegalArgumentException;
+
+ /**
+ * H5Pset_file_space_page_size retrieves the file space page size for aggregating small metadata or raw data.
+ *
+ * @param fcpl_id
+ * IN: File creation property list identifier
+ * @param page_size
+ * IN: the file space page size.
+ *
+ *
+ * @exception HDF5LibraryException
+ * - Error from the HDF-5 Library.
+ * @exception IllegalArgumentException
+ * - Invalid values of max_list and min_btree.
+ *
+ **/
+ public synchronized static native void H5Pset_file_space_page_size(long fcpl_id, long page_size)
+ throws HDF5LibraryException, IllegalArgumentException;
+
+ /**
+ * H5Pget_file_space_page_size Sets the file space page size for paged aggregation.
+ *
+ * @param fcpl_id
+ * IN: File creation property list identifier
+ *
+ * @return the current file space page size.
+ *
+ * @exception HDF5LibraryException
+ * - Error from the HDF-5 Library.
+ * @exception IllegalArgumentException
+ * - Invalid values of max_list and min_btree.
+ *
+ **/
+ public synchronized static native long H5Pget_file_space_page_size(long fcpl_id)
+ throws HDF5LibraryException, IllegalArgumentException;
+
+
// File access property list (FAPL) routines
/**
diff --git a/java/src/hdf/hdf5lib/HDF5Constants.java b/java/src/hdf/hdf5lib/HDF5Constants.java
index acd3eb5..9773100 100644
--- a/java/src/hdf/hdf5lib/HDF5Constants.java
+++ b/java/src/hdf/hdf5lib/HDF5Constants.java
@@ -219,12 +219,12 @@ public class HDF5Constants {
public static final int H5F_SCOPE_GLOBAL = H5F_SCOPE_GLOBAL();
public static final int H5F_SCOPE_LOCAL = H5F_SCOPE_LOCAL();
public static final int H5F_UNLIMITED = H5F_UNLIMITED();
- public static final int H5F_FILE_SPACE_DEFAULT = H5F_FILE_SPACE_DEFAULT();
- public static final int H5F_FILE_SPACE_ALL_PERSIST = H5F_FILE_SPACE_ALL_PERSIST();
- public static final int H5F_FILE_SPACE_ALL = H5F_FILE_SPACE_ALL();
- public static final int H5F_FILE_SPACE_AGGR_VFD = H5F_FILE_SPACE_AGGR_VFD();
- public static final int H5F_FILE_SPACE_VFD = H5F_FILE_SPACE_VFD();
- public static final int H5F_FILE_SPACE_NTYPES = H5F_FILE_SPACE_NTYPES();
+
+ public static final int H5F_FSPACE_STRATEGY_FSM_AGGR = H5F_FSPACE_STRATEGY_FSM_AGGR();
+ public static final int H5F_FSPACE_STRATEGY_AGGR = H5F_FSPACE_STRATEGY_AGGR();
+ public static final int H5F_FSPACE_STRATEGY_PAGE = H5F_FSPACE_STRATEGY_PAGE();
+ public static final int H5F_FSPACE_STRATEGY_NONE = H5F_FSPACE_STRATEGY_NONE();
+ public static final int H5F_FSPACE_STRATEGY_NTYPES = H5F_FSPACE_STRATEGY_NTYPES();
public static final long H5FD_CORE = H5FD_CORE();
public static final long H5FD_DIRECT = H5FD_DIRECT();
@@ -1024,17 +1024,15 @@ public class HDF5Constants {
private static native final int H5F_UNLIMITED();
- private static native final int H5F_FILE_SPACE_DEFAULT();
-
- private static native final int H5F_FILE_SPACE_ALL_PERSIST();
+ private static native final int H5F_FSPACE_STRATEGY_FSM_AGGR();
- private static native final int H5F_FILE_SPACE_ALL();
+ private static native final int H5F_FSPACE_STRATEGY_AGGR();
- private static native final int H5F_FILE_SPACE_AGGR_VFD();
+ private static native final int H5F_FSPACE_STRATEGY_PAGE();
- private static native final int H5F_FILE_SPACE_VFD();
+ private static native final int H5F_FSPACE_STRATEGY_NONE();
- private static native final int H5F_FILE_SPACE_NTYPES();
+ private static native final int H5F_FSPACE_STRATEGY_NTYPES();
private static native final long H5FD_CORE();
diff --git a/java/src/jni/h5Constants.c b/java/src/jni/h5Constants.c
index ccd0b91..c6aa16c 100644
--- a/java/src/jni/h5Constants.c
+++ b/java/src/jni/h5Constants.c
@@ -403,17 +403,15 @@ JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5F_1UNLIMITED(JNIEnv *env, jclass cls) { return (jint)H5F_UNLIMITED; }
JNIEXPORT jint JNICALL
-Java_hdf_hdf5lib_HDF5Constants_H5F_1FILE_1SPACE_1DEFAULT(JNIEnv *env, jclass cls) { return H5F_FILE_SPACE_DEFAULT; }
+Java_hdf_hdf5lib_HDF5Constants_H5F_1FSPACE_1STRATEGY_1FSM_1AGGR(JNIEnv *env, jclass cls) { return H5F_FSPACE_STRATEGY_FSM_AGGR; }
JNIEXPORT jint JNICALL
-Java_hdf_hdf5lib_HDF5Constants_H5F_1FILE_1SPACE_1ALL_1PERSIST(JNIEnv *env, jclass cls) { return H5F_FILE_SPACE_ALL_PERSIST; }
+Java_hdf_hdf5lib_HDF5Constants_H5F_1FSPACE_1STRATEGY_1AGGR(JNIEnv *env, jclass cls) { return H5F_FSPACE_STRATEGY_AGGR; }
JNIEXPORT jint JNICALL
-Java_hdf_hdf5lib_HDF5Constants_H5F_1FILE_1SPACE_1ALL(JNIEnv *env, jclass cls) { return H5F_FILE_SPACE_ALL; }
+Java_hdf_hdf5lib_HDF5Constants_H5F_1FSPACE_1STRATEGY_1PAGE(JNIEnv *env, jclass cls) { return H5F_FSPACE_STRATEGY_PAGE; }
JNIEXPORT jint JNICALL
-Java_hdf_hdf5lib_HDF5Constants_H5F_1FILE_1SPACE_1AGGR_1VFD(JNIEnv *env, jclass cls) { return H5F_FILE_SPACE_AGGR_VFD; }
+Java_hdf_hdf5lib_HDF5Constants_H5F_1FSPACE_1STRATEGY_1NONE(JNIEnv *env, jclass cls) { return H5F_FSPACE_STRATEGY_NONE; }
JNIEXPORT jint JNICALL
-Java_hdf_hdf5lib_HDF5Constants_H5F_1FILE_1SPACE_1VFD(JNIEnv *env, jclass cls) { return H5F_FILE_SPACE_VFD; }
-JNIEXPORT jint JNICALL
-Java_hdf_hdf5lib_HDF5Constants_H5F_1FILE_1SPACE_1NTYPES(JNIEnv *env, jclass cls) { return H5F_FILE_SPACE_NTYPES; }
+Java_hdf_hdf5lib_HDF5Constants_H5F_1FSPACE_1STRATEGY_1NTYPES(JNIEnv *env, jclass cls) { return H5F_FSPACE_STRATEGY_NTYPES; }
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5FD_1CORE(JNIEnv *env, jclass cls) { return H5FD_CORE; }
diff --git a/java/src/jni/h5pImp.c b/java/src/jni/h5pImp.c
index 1368139..f39f0e6 100644
--- a/java/src/jni/h5pImp.c
+++ b/java/src/jni/h5pImp.c
@@ -4883,61 +4883,130 @@ Java_hdf_hdf5lib_H5_H5Pset_1virtual_1printf_1gap
/*
* Class: hdf_hdf5lib_H5
- * Method: H5Pget_file_space
- * Signature: (J[I[J)V
+ * Method: H5Pget_file_space_strategy
+ * Signature: (J[Z[J)I
*/
-JNIEXPORT void JNICALL
-Java_hdf_hdf5lib_H5_H5Pget_1file_1space
- (JNIEnv *env, jclass clss, jlong fcpl_id, jintArray strategy, jlongArray threshold)
+JNIEXPORT jint JNICALL
+Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1strategy
+ (JNIEnv *env, jclass clss, jlong fcpl_id, jbooleanArray persist, jlongArray threshold)
{
herr_t status = -1;
- jint *thestrategyArray = NULL;
+ H5F_fspace_strategy_t thestrategy = H5F_FSPACE_STRATEGY_FSM_AGGR; /* Library default */
jlong *thethresholdArray = NULL;
+ jboolean *thepersistArray = NULL;
jboolean isCopy;
- if (strategy) {
- thestrategyArray = (jint*)ENVPTR->GetIntArrayElements(ENVPAR strategy, &isCopy);
- if (thestrategyArray == NULL) {
- h5JNIFatalError(env, "H5Pget_file_space: strategy not pinned");
- return;
+ if (persist) {
+ thepersistArray = (jboolean*)ENVPTR->GetBooleanArrayElements(ENVPAR persist, &isCopy);
+ if (thepersistArray == NULL) {
+ h5JNIFatalError(env, "H5Pget_file_space: persist not pinned");
+ return -1;
}
}
if (threshold) {
thethresholdArray = (jlong*)ENVPTR->GetLongArrayElements(ENVPAR threshold, &isCopy);
if (thethresholdArray == NULL) {
- if (strategy) ENVPTR->ReleaseIntArrayElements(ENVPAR strategy, thestrategyArray, JNI_ABORT);
+ if (persist) ENVPTR->ReleaseBooleanArrayElements(ENVPAR persist, thepersistArray, JNI_ABORT);
h5JNIFatalError(env, "H5Pget_file_space: threshold not pinned");
- return;
+ return -1;
} /* end if */
} /* end if */
- status = H5Pget_file_space((hid_t)fcpl_id, (H5F_file_space_type_t*)thestrategyArray, (hsize_t*)thethresholdArray);
+ status = H5Pget_file_space_strategy((hid_t)fcpl_id, &thestrategy, (hbool_t*)thepersistArray, (hsize_t*)thethresholdArray);
if (status < 0) {
- if (strategy) ENVPTR->ReleaseIntArrayElements(ENVPAR strategy, thestrategyArray, JNI_ABORT);
+ if (persist) ENVPTR->ReleaseBooleanArrayElements(ENVPAR persist, thepersistArray, JNI_ABORT);
if (threshold) ENVPTR->ReleaseLongArrayElements(ENVPAR threshold, thethresholdArray, JNI_ABORT);
h5libraryError(env);
} /* end if */
else {
- if (strategy) ENVPTR->ReleaseIntArrayElements(ENVPAR strategy, thestrategyArray, 0);
+ if (persist) ENVPTR->ReleaseBooleanArrayElements(ENVPAR persist, thepersistArray, 0);
if (threshold) ENVPTR->ReleaseLongArrayElements(ENVPAR threshold, thethresholdArray, 0);
} /* end else */
-} /* end Java_hdf_hdf5lib_H5_H5Pget_1file_1space */
+ return (jint)thestrategy;
+} /* end Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1strategy */
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5Pget_file_space_strategy_persist
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL
+Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1strategy_1persist
+ (JNIEnv *env, jclass clss, jlong fcpl_id)
+{
+ herr_t status = -1;
+ hbool_t thepersist = FALSE;
+
+ status = H5Pget_file_space_strategy((hid_t)fcpl_id, NULL, &thepersist, NULL);
+
+ if (status < 0)
+ h5libraryError(env);
+
+ return (jboolean)thepersist;
+} /* end Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1strategy_1persist */
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5Pget_file_space_strategy_threshold
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL
+Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1strategy_1threshold
+ (JNIEnv *env, jclass clss, jlong fcpl_id)
+{
+ herr_t status = -1;
+ hsize_t thethreshold;
+
+ status = H5Pget_file_space_strategy((hid_t)fcpl_id, NULL, NULL, &thethreshold);
+
+ if (status < 0)
+ h5libraryError(env);
+
+ return (jlong)thethreshold;
+} /* end Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1threshold */
/*
* Class: hdf_hdf5lib_H5
- * Method: H5Pset_file_space
- * Signature: (JIJ)V
+ * Method: H5Pset_file_space_strategy
+ * Signature: (JIZJ)V
*/
JNIEXPORT void JNICALL
-Java_hdf_hdf5lib_H5_H5Pset_1file_1space
- (JNIEnv *env, jclass clss, jlong fcpl_id, jint strategy, jlong threshold)
+Java_hdf_hdf5lib_H5_H5Pset_1file_1space_1strategy
+ (JNIEnv *env, jclass clss, jlong fcpl_id, jint strategy, jboolean persist, jlong threshold)
{
- if (H5Pset_file_space((hid_t)fcpl_id, (H5F_file_space_type_t)strategy, (hsize_t)threshold) < 0)
+ if (H5Pset_file_space_strategy((hid_t)fcpl_id, (H5F_fspace_strategy_t)strategy, (hbool_t)persist, (hsize_t)threshold) < 0)
h5libraryError(env);
-} /* end Java_hdf_hdf5lib_H5_H5Pset_1file_1space */
+} /* end Java_hdf_hdf5lib_H5_H5Pset_file_space_strategy */
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5Pset_file_space_page_size
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL
+Java_hdf_hdf5lib_H5_H5Pset_1file_1space_1page_1size
+ (JNIEnv *env, jclass clss, jlong fcpl_id, jlong fsp_size)
+{
+ if (H5Pset_file_space_page_size((hid_t)fcpl_id, (hsize_t)fsp_size) < 0)
+ h5libraryError(env);
+}
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5Pget_file_space_page_size
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL
+Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1page_1size
+ (JNIEnv *env, jclass clss, jlong fcpl_id)
+{
+ hsize_t fsp_size = 0;
+ if (H5Pget_file_space_page_size((hid_t)fcpl_id, &fsp_size) < 0)
+ h5libraryError(env);
+ return (jlong)fsp_size;
+}
static herr_t
H5P_cls_create_cb
diff --git a/java/src/jni/h5pImp.h b/java/src/jni/h5pImp.h
index 927501e..03b0e03 100644
--- a/java/src/jni/h5pImp.h
+++ b/java/src/jni/h5pImp.h
@@ -1385,22 +1385,57 @@ Java_hdf_hdf5lib_H5_H5Pset_1virtual_1printf_1gap
/*
* Class: hdf_hdf5lib_H5
- * Method: H5Pget_file_space
- * Signature: (J[I[J)V
+ * Method: H5Pget_file_space_strategy
+ * Signature: (J[Z[J)I
+ */
+JNIEXPORT jint JNICALL
+Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1strategy
+(JNIEnv *, jclass, jlong, jbooleanArray, jlongArray);
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5Pget_file_space_strategy_persist
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL
+Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1strategy_1persist
+(JNIEnv *, jclass, jlong);
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5Pget_file_space_strategy_threshold
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL
+Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1strategy_1threshold
+(JNIEnv *, jclass, jlong);
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5Pset_file_space_strategy
+ * Signature: (JIZJ)V
*/
JNIEXPORT void JNICALL
-Java_hdf_hdf5lib_H5_H5Pget_1file_1space
-(JNIEnv *, jclass, jlong, jintArray, jlongArray);
+Java_hdf_hdf5lib_H5_H5Pset_1file_1space_1strategy
+(JNIEnv *, jclass, jlong, jint, jboolean, jlong);
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5Pget_file_space_page_size
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL
+Java_hdf_hdf5lib_H5_H5Pget_1file_1space_1page_1size
+(JNIEnv *, jclass, jlong);
/*
* Class: hdf_hdf5lib_H5
- * Method: H5Pset_file_space
- * Signature: (JIJ)V
+ * Method: H5Pset_file_space_page_size
+ * Signature: (JJ)V
*/
JNIEXPORT void JNICALL
-Java_hdf_hdf5lib_H5_H5Pset_1file_1space
-(JNIEnv *, jclass, jlong, jint, jlong);
+Java_hdf_hdf5lib_H5_H5Pset_1file_1space_1page_1size
+(JNIEnv *, jclass, jlong, jlong);
/*
* Class: hdf_hdf5lib_H5
diff --git a/java/test/JUnit-interface.txt b/java/test/JUnit-interface.txt
index 34ec02a..cae8cef 100644
--- a/java/test/JUnit-interface.txt
+++ b/java/test/JUnit-interface.txt
@@ -416,6 +416,7 @@ JUnit version 4.11
.testH5P_layout
.testH5Pget_link_creation_order
.testH5Pset_shared_mesg_nindexes_InvalidHIGHnindexes
+.testH5P_file_space_page_size
.testH5Pget_shared_mesg_index_Invalid_indexnum
.testH5Pset_data_transform_NullExpression
.testH5Pset_elink_prefix_null
@@ -438,9 +439,9 @@ JUnit version 4.11
.testH5Pset_shared_mesg_index
.testH5Pset_copy_object
.testH5Pset_link_creation_order_trackedPLUSindexed
+.testH5P_file_space_strategy
.testH5Pset_copy_object_invalidobject
.testH5Pset_est_link_info_InvalidValues
-.testH5P_file_space
.testH5Pset_local_heap_size_hint
.testH5Pget_est_link_info
.testH5Pset_scaleoffset
@@ -638,7 +639,7 @@ JUnit version 4.11
Time: XXXX
-OK (636 tests)
+OK (637 tests)
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
#000: (file name) line (number) in H5Fopen(): can't set access and transfer property lists
diff --git a/java/test/TestH5P.java b/java/test/TestH5P.java
index b8a4376..fa8b525 100644
--- a/java/test/TestH5P.java
+++ b/java/test/TestH5P.java
@@ -1198,25 +1198,40 @@ public class TestH5P {
}
@Test
- public void testH5P_file_space() {
+ public void testH5P_file_space_strategy() {
long[] threshold = {0};
- int[] strategy = {0};
+ boolean[] persist = {false};
+ int strategy = 0;
try {
- H5.H5Pget_file_space(fcpl_id, strategy, threshold);
- assertTrue("strategy: "+strategy[0], strategy[0] == HDF5Constants.H5F_FILE_SPACE_ALL);
+ strategy = H5.H5Pget_file_space_strategy(fcpl_id, persist, threshold);
+ assertTrue("strategy(default): "+strategy, strategy == HDF5Constants.H5F_FSPACE_STRATEGY_FSM_AGGR);
+ assertTrue("persist(default): "+persist[0], persist[0] == false);
+ assertTrue("theshold(default): "+threshold[0], threshold[0] == 1);
+ H5.H5Pset_file_space_strategy(fcpl_id, HDF5Constants.H5F_FSPACE_STRATEGY_PAGE, true, 1);
+ strategy = H5.H5Pget_file_space_strategy(fcpl_id, persist, threshold);
+ assertTrue("strategy: "+strategy, strategy == HDF5Constants.H5F_FSPACE_STRATEGY_PAGE);
+ assertTrue("persist: "+persist[0], persist[0] == true);
assertTrue("theshold: "+threshold[0], threshold[0] == 1);
- H5.H5Pset_file_space(fcpl_id, HDF5Constants.H5F_FILE_SPACE_ALL_PERSIST, 10);
- H5.H5Pget_file_space(fcpl_id, strategy, threshold);
- assertTrue("strategy: "+strategy[0], strategy[0] == HDF5Constants.H5F_FILE_SPACE_ALL_PERSIST);
- assertTrue("theshold: "+threshold[0], threshold[0] == 10);
- H5.H5Pset_file_space(fcpl_id, HDF5Constants.H5F_FILE_SPACE_VFD, 0);
- H5.H5Pget_file_space(fcpl_id, strategy, threshold);
- assertTrue("strategy: "+strategy[0], strategy[0] == HDF5Constants.H5F_FILE_SPACE_VFD);
- assertTrue("theshold: "+threshold[0], threshold[0] == 10);
}
catch (Throwable err) {
err.printStackTrace();
- fail("testH5P_file_space: " + err);
+ fail("testH5P_file_space_strategy: " + err);
+ }
+ }
+
+ @Test
+ public void testH5P_file_space_page_size() {
+ long page_size = 0;
+ try {
+ page_size = H5.H5Pget_file_space_page_size(fcpl_id);
+ assertTrue("page_size(default): "+page_size, page_size == 4096);
+ H5.H5Pset_file_space_page_size(fcpl_id, 512);
+ page_size = H5.H5Pget_file_space_page_size(fcpl_id);
+ assertTrue("page_size: "+page_size, page_size == 512);
+ }
+ catch (Throwable err) {
+ err.printStackTrace();
+ fail("testH5P_file_space_page_size: " + err);
}
}
}