summaryrefslogtreecommitdiffstats
path: root/test/mtime.c
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-07-30 16:38:21 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-07-30 16:38:21 (GMT)
commitc7b935a9acd629929296c1ccdd05214cc5c01e5d (patch)
tree07d051649f88b4d65f98316182e6191b038fc4c7 /test/mtime.c
parenta34534c9b8321f4de9fadd836be926497f7461d4 (diff)
downloadhdf5-c7b935a9acd629929296c1ccdd05214cc5c01e5d.zip
hdf5-c7b935a9acd629929296c1ccdd05214cc5c01e5d.tar.gz
hdf5-c7b935a9acd629929296c1ccdd05214cc5c01e5d.tar.bz2
[svn-r547] Changes since 19980729
---------------------- ./MANIFEST ./test/Makefile.in ./test/mtime.c [NEW] Test for the modification time message. ./src/H5AC.c ./src/H5Fistore.c Turned off printing of statistics on H5close() if H5AC_DEBUG isn't defined.
Diffstat (limited to 'test/mtime.c')
-rw-r--r--test/mtime.c149
1 files changed, 149 insertions, 0 deletions
diff --git a/test/mtime.c b/test/mtime.c
new file mode 100644
index 0000000..cd78cc1
--- /dev/null
+++ b/test/mtime.c
@@ -0,0 +1,149 @@
+/*
+ * Copyright © 1998 NCSA
+ * All rights reserved.
+ *
+ * Programmer: Robb Matzke <matzke@llnl.gov>
+ * Thursday, July 30, 1998
+ *
+ * Purpose: Determines if the modification time message is working
+ * properly. Specifically, the code in H5O_mtime_decode() is
+ * very OS-dependent and this test tries to figure out if it's
+ * working properly.
+ */
+#include <assert.h>
+#include <hdf5.h>
+#include <math.h>
+#include <sys/time.h>
+#include <time.h>
+
+#define FALSE 0
+#define TRUE 1
+#define FILE_NAME_1 "mtime.h5"
+
+#include <H5config.h>
+#ifndef HAVE_ATTRIBUTE
+# undef __attribute__
+# define __attribute__(X) /*void*/
+# define __unused__ /*void*/
+#else
+# define __unused__ __attribute__((unused))
+#endif
+
+
+/*-------------------------------------------------------------------------
+ * Function: display_error_cb
+ *
+ * Purpose: Displays the error stack after printing "*FAILED*".
+ *
+ * Return: Success: 0
+ *
+ * Failure: -1
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, March 4, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+display_error_cb (void __unused__ *client_data)
+{
+ puts ("*FAILED*");
+ H5Eprint (stdout);
+ return 0;
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: cleanup
+ *
+ * Purpose: Removes test files
+ *
+ * Return: void
+ *
+ * Programmer: Robb Matzke
+ * Thursday, June 4, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static void
+cleanup (void)
+{
+ if (!getenv ("HDF5_NOCLEANUP")) {
+ remove (FILE_NAME_1);
+ }
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: main
+ *
+ * Purpose: H5O_mtime_decode() test.
+ *
+ * Return: Success:
+ *
+ * Failure:
+ *
+ * Programmer: Robb Matzke
+ * Thursday, July 30, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+main(void)
+{
+ hid_t file, space, dset;
+ hsize_t size[1] = {2};
+ time_t now;
+ struct tm *tm;
+ H5G_stat_t sb;
+ char buf1[32], buf2[32];
+
+ H5Eset_auto(display_error_cb, NULL);
+ printf("%-70s", "Testing modification time messages");
+
+ /* Create the file, create a dataset, then close the file */
+ file = H5Fcreate(FILE_NAME_1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+ if (file<0) return 1;
+ if ((space = H5Screate_simple(1, size, NULL))<0) return 1;
+ dset = H5Dcreate(file, "dset", H5T_NATIVE_CHAR, space, H5P_DEFAULT);
+ if (dset<0) return 1;
+ now = time(NULL);
+ if (H5Dclose(dset)<0) return 1;
+ if (H5Sclose(space)<0) return 1;
+ if (H5Fclose(file)<0) return 1;
+
+ /* Open the file and get the modification time */
+ if ((file = H5Fopen(FILE_NAME_1, H5F_ACC_RDONLY, H5P_DEFAULT))<0) return 1;
+ if (H5Gstat(file, "dset", TRUE, &sb)<0) return 1;
+ if (H5Fclose(file)<0) return 1;
+
+ /* Compare times -- they must be within 60 seconds of one another */
+ if (0==sb.mtime) {
+ puts("--SKIP--");
+ puts(" The modification time could not be decoded on this OS.");
+ puts(" Modification times will be mantained in the file bug cannot");
+ puts(" be queried on this system. See H5O_mtime_decode().");
+ return 1;
+ } else if (fabs(difftime(now, sb.mtime))>60.0) {
+ puts("*FAILED*");
+ tm = localtime(&(sb.mtime));
+ strftime(buf1, sizeof buf1, "%Y-%m-%d %H:%M:%S", tm);
+ tm = localtime(&now);
+ strftime(buf2, sizeof buf2, "%Y-%m-%d %H:%M:%S", tm);
+ printf(" Got %s instead of %s\n", buf1, buf2);
+ return 1;
+ }
+
+ /* All looks good */
+ puts(" PASSED");
+ cleanup();
+ return 0;
+}
+
+