summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKeith Bostic <keith.bostic@mongodb.com>2016-09-08 02:46:05 -0400
committerMichael Cahill <michael.cahill@mongodb.com>2016-09-08 16:46:05 +1000
commit881a37eea1668d47c5d5fb38001a2850ca117495 (patch)
tree898db838171a0920fc0b29ac900ecdcf7ec6ee6a /test
parent5f07ab685f2b1e978cfda354dd52a5fc52f8f8ab (diff)
downloadmongo-881a37eea1668d47c5d5fb38001a2850ca117495.tar.gz
WT-2873 Refactor CRC32 code (#3000)
* Add --enable-crc32-hardware configuration option (configured on by default), which allows CRC32 hardware support to be turned off. * Move the CRC32 implementation in software from the x86-specific code to software/checksum.c, leave the x86-specific code in x86/crc32-x86.c. * Move the pointer to the checksum function from a file static to the WT_PROCESS.cksum field, change the __wt_cksum_init() function to set that field. * WT-2882 Create CRC32 Hardware implementation for ARM8 * Change "cksum" to "checksum" everywhere (hopefully) no semantic changes.
Diffstat (limited to 'test')
-rw-r--r--test/csuite/Makefile.am5
-rw-r--r--test/csuite/wt2695_checksum/main.c45
-rw-r--r--test/csuite/wt2695_checksum/sw.c49
-rw-r--r--test/salvage/salvage.c4
4 files changed, 30 insertions, 73 deletions
diff --git a/test/csuite/Makefile.am b/test/csuite/Makefile.am
index b8a62b69612..15db2fbcf46 100644
--- a/test/csuite/Makefile.am
+++ b/test/csuite/Makefile.am
@@ -1,6 +1,5 @@
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)/src/include \
- -I$(top_srcdir)/test/utility \
- -DCRC_PATH="\"$(top_srcdir)/src/checksum/x86/checksum.c\""
+ -I$(top_srcdir)/test/utility
LDADD = $(top_builddir)/test/utility/libtest_util.la \
$(top_builddir)/libwiredtiger.la
AM_LDFLAGS = -static
@@ -20,7 +19,7 @@ noinst_PROGRAMS += test_wt2535_insert_race
test_wt2447_join_main_table_SOURCES = wt2447_join_main_table/main.c
noinst_PROGRAMS += test_wt2447_join_main_table
-test_wt2695_checksum_SOURCES = wt2695_checksum/main.c wt2695_checksum/sw.c
+test_wt2695_checksum_SOURCES = wt2695_checksum/main.c
noinst_PROGRAMS += test_wt2695_checksum
test_wt2592_join_schema_SOURCES = wt2592_join_schema/main.c
diff --git a/test/csuite/wt2695_checksum/main.c b/test/csuite/wt2695_checksum/main.c
index dc6f5b5cd87..df6f562f719 100644
--- a/test/csuite/wt2695_checksum/main.c
+++ b/test/csuite/wt2695_checksum/main.c
@@ -34,8 +34,6 @@
void (*custom_die)(void) = NULL;
-uint32_t cksum_sw(const void *, size_t);
-
static inline void
check(uint32_t hw, uint32_t sw, size_t len, const char *msg)
{
@@ -61,57 +59,66 @@ main(void)
testutil_check(__wt_random_init_seed(NULL, &rnd));
/* Initialize the WiredTiger library checksum functions. */
- __wt_cksum_init();
+ __wt_checksum_init();
/*
* Some simple known checksums.
*/
len = 1;
- hw = __wt_cksum(data, len);
+ hw = __wt_checksum(data, len);
check(hw, (uint32_t)0x527d5351, len, "nul x1: hardware");
- sw = cksum_sw(data, len);
+ sw = __wt_checksum_sw(data, len);
check(sw, (uint32_t)0x527d5351, len, "nul x1: software");
len = 2;
- hw = __wt_cksum(data, len);
+ hw = __wt_checksum(data, len);
check(hw, (uint32_t)0xf16177d2, len, "nul x2: hardware");
- sw = cksum_sw(data, len);
+ sw = __wt_checksum_sw(data, len);
check(sw, (uint32_t)0xf16177d2, len, "nul x2: software");
len = 3;
- hw = __wt_cksum(data, len);
+ hw = __wt_checksum(data, len);
check(hw, (uint32_t)0x6064a37a, len, "nul x3: hardware");
- sw = cksum_sw(data, len);
+ sw = __wt_checksum_sw(data, len);
check(sw, (uint32_t)0x6064a37a, len, "nul x3: software");
len = 4;
- hw = __wt_cksum(data, len);
+ hw = __wt_checksum(data, len);
check(hw, (uint32_t)0x48674bc7, len, "nul x4: hardware");
- sw = cksum_sw(data, len);
+ sw = __wt_checksum_sw(data, len);
check(sw, (uint32_t)0x48674bc7, len, "nul x4: software");
len = strlen("123456789");
memcpy(data, "123456789", len);
- hw = __wt_cksum(data, len);
+ hw = __wt_checksum(data, len);
check(hw, (uint32_t)0xe3069283, len, "known string #1: hardware");
- sw = cksum_sw(data, len);
+ sw = __wt_checksum_sw(data, len);
check(sw, (uint32_t)0xe3069283, len, "known string #1: software");
len = strlen("The quick brown fox jumps over the lazy dog");
memcpy(data, "The quick brown fox jumps over the lazy dog", len);
- hw = __wt_cksum(data, len);
+ hw = __wt_checksum(data, len);
check(hw, (uint32_t)0x22620404, len, "known string #2: hardware");
- sw = cksum_sw(data, len);
+ sw = __wt_checksum_sw(data, len);
check(sw, (uint32_t)0x22620404, len, "known string #2: software");
/*
+ * Offset the string by 1 to ensure the hardware code handles unaligned
+ * reads.
+ */
+ hw = __wt_checksum(data + 1, len - 1);
+ check(hw, (uint32_t)0xae11f7f5, len, "known string #2: hardware");
+ sw = __wt_checksum_sw(data + 1, len - 1);
+ check(sw, (uint32_t)0xae11f7f5, len, "known string #2: software");
+
+ /*
* Checksums of power-of-two data chunks.
*/
for (i = 0, len = 512; i < 1000; ++i) {
for (j = 0; j < len; ++j)
data[j] = __wt_random(&rnd) & 0xff;
- hw = __wt_cksum(data, len);
- sw = cksum_sw(data, len);
+ hw = __wt_checksum(data, len);
+ sw = __wt_checksum_sw(data, len);
check(hw, sw, len, "random power-of-two");
len *= 2;
@@ -126,8 +133,8 @@ main(void)
len = __wt_random(&rnd) % DATASIZE;
for (j = 0; j < len; ++j)
data[j] = __wt_random(&rnd) & 0xff;
- hw = __wt_cksum(data, len);
- sw = cksum_sw(data, len);
+ hw = __wt_checksum(data, len);
+ sw = __wt_checksum_sw(data, len);
check(hw, sw, len, "random");
}
diff --git a/test/csuite/wt2695_checksum/sw.c b/test/csuite/wt2695_checksum/sw.c
deleted file mode 100644
index 892d9480bf3..00000000000
--- a/test/csuite/wt2695_checksum/sw.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * Public Domain 2014-2016 MongoDB, Inc.
- * Public Domain 2008-2014 WiredTiger, Inc.
- *
- * This is free and unencumbered software released into the public domain.
- *
- * Anyone is free to copy, modify, publish, use, compile, sell, or
- * distribute this software, either in source code form or as a compiled
- * binary, for any purpose, commercial or non-commercial, and by any
- * means.
- *
- * In jurisdictions that recognize copyright laws, the author or authors
- * of this software dedicate any and all copyright interest in the
- * software to the public domain. We make this dedication for the benefit
- * of the public at large and to the detriment of our heirs and
- * successors. We intend this dedication to be an overt act of
- * relinquishment in perpetuity of all present and future rights to this
- * software under copyright law.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-#include "test_util.h"
-
-/*
- * Build the software version of the CRC code.
- */
-#define __wt_cksum __wt_cksum_notused
-uint32_t __wt_cksum_notused(const void *, size_t);
-#define __wt_cksum_init __wt_cksum_init_notused
-void __wt_cksum_init_notused(void);
-
-#include CRC_PATH
-
-/*
- * cksum_sw --
- * Checksum in software.
- */
-uint32_t cksum_sw(const void *, size_t);
-uint32_t
-cksum_sw(const void *chunk, size_t len)
-{
- return (__wt_cksum_sw(chunk, len));
-}
diff --git a/test/salvage/salvage.c b/test/salvage/salvage.c
index c3349188623..bad0167ca8e 100644
--- a/test/salvage/salvage.c
+++ b/test/salvage/salvage.c
@@ -602,8 +602,8 @@ copy(u_int gen, u_int recno)
dsk->recno = recno;
dsk->write_gen = gen;
blk = WT_BLOCK_HEADER_REF(buf);
- blk->cksum = 0;
- blk->cksum = __wt_cksum(dsk, PSIZE);
+ blk->checksum = 0;
+ blk->checksum = __wt_checksum(dsk, PSIZE);
CHECK(fwrite(buf, 1, PSIZE, ofp) == PSIZE);
}