summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/test/utility
diff options
context:
space:
mode:
authorAlex Gorrod <alexander.gorrod@mongodb.com>2017-04-01 07:14:43 +1100
committerAlex Gorrod <alexander.gorrod@mongodb.com>2017-04-01 07:25:11 +1100
commitf6cbdfb8c5c52209f58562ccbe14013c72df3f40 (patch)
tree850ab25ff8e499689bd40ccdad284e629fafec7e /src/third_party/wiredtiger/test/utility
parent08d29c36403608802c45375277f88c7fcaf708e0 (diff)
downloadmongo-f6cbdfb8c5c52209f58562ccbe14013c72df3f40.tar.gz
Import wiredtiger: af735d14a603a6ef6256a6685f09ec13755a5024 from branch mongodb-3.6
ref: cc2f15f595..af735d14a6 for: 3.5.6 SERVER-28168 Cannot start or repair mongodb after unexpected shutdown. SERVER-28194 Missing WiredTiger.turtle file loses data WT-2439 Enhance reconciliation page layout WT-2978 Make WiredTiger python binding pip-compatible WT-2990 Fix a new bug where checkpoint load live_open failed WT-3136 bug fix: WiredTiger doesn't check sprintf calls for error return WT-3155 Remove WT_CONN_SERVER_RUN flag WT-3182 Switch make-check to run the short test suite by default WT-3190 Enhance eviction thread auto-tuning algorithm WT-3191 Fix lint complaints WT-3193 Close a race between verify opening a handle and eviction visiting it WT-3196 Race with LSM and eviction when switching chunks WT-3199 bug: eviction assertion failure WT-3202 wtperf report an error on in_memory=true mode : No such file or directory WT-3203 bulk-load state changes can race WT-3204 eviction changes cost LSM performance WT-3206 bug: core dump on NULL page index WT-3207 Drops with checkpoint_wait=false should not wait for checkpoints WT-3208 test format hung with 9mb cache WT-3211 WT_CURSOR.remove cannot always retain its position. WT-3212 'wt dump' crashes when given table with unknown collator WT-3213 generated test/format CONFIG invalid on next run WT-3216 add support for clang-tidy WT-3218 unexpected checkpoint ordering failures WT-3224 LSM assertion failure pindex->entries == 1 WT-3225 WiredTiger won't build with clang on CentOS 7.3.1611 WT-3227 Python test suite inserts unnecessary whitespace in error output. WT-3228 Remove with overwrite shouldn't return WT_NOTFOUND WT-3234 Update WiredTiger build for clang 4.0. WT-3238 Java: Cursor.compare and Cursor.equals throw Exceptions for valid return values WT-3240 Coverity reports WT-3243 Reorder log slot release so joins don't wait on IO WT-3244 Metadata operations failing in in-memory configurations when the cache is full WT-98 Update the current cursor value without a search
Diffstat (limited to 'src/third_party/wiredtiger/test/utility')
-rw-r--r--src/third_party/wiredtiger/test/utility/misc.c40
-rw-r--r--src/third_party/wiredtiger/test/utility/parse_opts.c11
-rw-r--r--src/third_party/wiredtiger/test/utility/test_util.h7
-rw-r--r--src/third_party/wiredtiger/test/utility/thread.c7
4 files changed, 45 insertions, 20 deletions
diff --git a/src/third_party/wiredtiger/test/utility/misc.c b/src/third_party/wiredtiger/test/utility/misc.c
index 1ba08ddd77f..934dac86a7b 100644
--- a/src/third_party/wiredtiger/test/utility/misc.c
+++ b/src/third_party/wiredtiger/test/utility/misc.c
@@ -28,6 +28,7 @@
#include "test_util.h"
void (*custom_die)(void) = NULL;
+const char *progname = "program name not set";
/*
* die --
@@ -42,7 +43,9 @@ testutil_die(int e, const char *fmt, ...)
if (custom_die != NULL)
(*custom_die)();
+ fprintf(stderr, "%s: FAILED", progname);
if (fmt != NULL) {
+ fprintf(stderr, ": ");
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
va_end(ap);
@@ -55,6 +58,20 @@ testutil_die(int e, const char *fmt, ...)
}
/*
+ * testutil_set_progname --
+ * Set the global program name for error handling.
+ */
+const char *
+testutil_set_progname(char * const *argv)
+{
+ if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
+ progname = argv[0];
+ else
+ ++progname;
+ return (progname);
+}
+
+/*
* testutil_work_dir_from_path --
* Takes a buffer, its size and the intended work directory.
* Creates the full intended work directory in buffer.
@@ -91,14 +108,14 @@ testutil_clean_work_dir(const char *dir)
if ((buf = malloc(len)) == NULL)
testutil_die(ENOMEM, "Failed to allocate memory");
- snprintf(buf, len, "%s %s %s %s", DIR_EXISTS_COMMAND, dir,
- RM_COMMAND, dir);
+ testutil_check(__wt_snprintf(
+ buf, len, "%s %s %s %s", DIR_EXISTS_COMMAND, dir, RM_COMMAND, dir));
#else
len = strlen(dir) + strlen(RM_COMMAND) + 1;
if ((buf = malloc(len)) == NULL)
testutil_die(ENOMEM, "Failed to allocate memory");
- snprintf(buf, len, "%s%s", RM_COMMAND, dir);
+ testutil_check(__wt_snprintf(buf, len, "%s%s", RM_COMMAND, dir));
#endif
if ((ret = system(buf)) != 0 && ret != ENOENT)
@@ -125,7 +142,7 @@ testutil_make_work_dir(char *dir)
testutil_die(ENOMEM, "Failed to allocate memory");
/* mkdir shares syntax between Windows and Linux */
- snprintf(buf, len, "%s%s", MKDIR_COMMAND, dir);
+ testutil_check(__wt_snprintf(buf, len, "%s%s", MKDIR_COMMAND, dir));
if ((ret = system(buf)) != 0)
testutil_die(ret, "%s", buf);
free(buf);
@@ -149,20 +166,25 @@ testutil_cleanup(TEST_OPTS *opts)
}
/*
- * testutil_disable_long_tests --
- * Return if TESTUTIL_DISABLE_LONG_TESTS is set.
+ * testutil_enable_long_tests --
+ * Return if TESTUTIL_ENABLE_LONG_TESTS is set.
*/
bool
-testutil_disable_long_tests(void)
+testutil_enable_long_tests(void)
{
const char *res;
+ bool enable_long_tests;
if (__wt_getenv(NULL,
- "TESTUTIL_DISABLE_LONG_TESTS", &res) == WT_NOTFOUND)
+ "TESTUTIL_ENABLE_LONG_TESTS", &res) == WT_NOTFOUND)
return (false);
+ /* Accept anything other than "TESTUTIL_ENABLE_LONG_TESTS=0". */
+ enable_long_tests = res[0] != '0';
+
free((void *)res);
- return (true);
+
+ return (enable_long_tests);
}
/*
diff --git a/src/third_party/wiredtiger/test/utility/parse_opts.c b/src/third_party/wiredtiger/test/utility/parse_opts.c
index 74a1c021d5d..c3eff3360de 100644
--- a/src/third_party/wiredtiger/test/utility/parse_opts.c
+++ b/src/third_party/wiredtiger/test/utility/parse_opts.c
@@ -43,10 +43,7 @@ testutil_parse_opts(int argc, char * const *argv, TEST_OPTS *opts)
opts->running = true;
opts->verbose = false;
- if ((opts->progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- opts->progname = argv[0];
- else
- ++opts->progname;
+ opts->progname = testutil_set_progname(argv);
while ((ch = __wt_getopt(opts->progname,
argc, argv, "A:h:n:o:pR:T:t:vW:")) != EOF)
@@ -118,13 +115,15 @@ testutil_parse_opts(int argc, char * const *argv, TEST_OPTS *opts)
if (opts->home == NULL) {
len = strlen("WT_TEST.") + strlen(opts->progname) + 10;
opts->home = dmalloc(len);
- snprintf(opts->home, len, "WT_TEST.%s", opts->progname);
+ testutil_check(__wt_snprintf(
+ opts->home, len, "WT_TEST.%s", opts->progname));
}
/* Setup the default URI string */
len = strlen("table:") + strlen(opts->progname) + 10;
opts->uri = dmalloc(len);
- snprintf(opts->uri, len, "table:%s", opts->progname);
+ testutil_check(__wt_snprintf(
+ opts->uri, len, "table:%s", opts->progname));
return (0);
}
diff --git a/src/third_party/wiredtiger/test/utility/test_util.h b/src/third_party/wiredtiger/test/utility/test_util.h
index 489bbe18d87..406ed2c4961 100644
--- a/src/third_party/wiredtiger/test/utility/test_util.h
+++ b/src/third_party/wiredtiger/test/utility/test_util.h
@@ -48,7 +48,7 @@
/* Generic option parsing structure shared by all test cases. */
typedef struct {
char *home;
- char *progname;
+ const char *progname;
enum { TABLE_COL=1, /* Fixed-length column store */
TABLE_FIX=2, /* Variable-length column store */
TABLE_ROW=3 /* Row-store */
@@ -185,10 +185,13 @@ void *dstrdup(const void *);
void *dstrndup(const char *, size_t);
void testutil_clean_work_dir(const char *);
void testutil_cleanup(TEST_OPTS *);
-bool testutil_disable_long_tests(void);
+bool testutil_enable_long_tests(void);
void testutil_make_work_dir(char *);
int testutil_parse_opts(int, char * const *, TEST_OPTS *);
void testutil_work_dir_from_path(char *, size_t, const char *);
void *thread_append(void *);
void *thread_insert_append(void *);
void *thread_prev(void *);
+
+extern const char *progname;
+const char *testutil_set_progname(char * const *);
diff --git a/src/third_party/wiredtiger/test/utility/thread.c b/src/third_party/wiredtiger/test/utility/thread.c
index 38465b2f02b..122ad554442 100644
--- a/src/third_party/wiredtiger/test/utility/thread.c
+++ b/src/third_party/wiredtiger/test/utility/thread.c
@@ -57,8 +57,8 @@ thread_append(void *arg)
if (opts->table_type == TABLE_FIX)
cursor->set_value(cursor, buf[0]);
else {
- snprintf(buf, sizeof(buf),
- "%" PRIu64 " VALUE ------", recno);
+ testutil_check(__wt_snprintf(buf, sizeof(buf),
+ "%" PRIu64 " VALUE ------", recno));
cursor->set_value(cursor, buf);
}
testutil_check(cursor->insert(cursor));
@@ -94,7 +94,8 @@ thread_insert_append(void *arg)
session, opts->uri, NULL, NULL, &cursor));
for (i = 0; i < opts->nrecords; ++i) {
- snprintf(kbuf, sizeof(kbuf), "%010d KEY------", (int)i);
+ testutil_check(__wt_snprintf(
+ kbuf, sizeof(kbuf), "%010d KEY------", (int)i));
cursor->set_key(cursor, kbuf);
cursor->set_value(cursor, "========== VALUE =======");
testutil_check(cursor->insert(cursor));