mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 23:04:20 +01:00
3a208cebc4
git-svn-id: file:///svn/toku/tokudb@43762 c7de825b-a66e-492c-adef-691d508d4ae1
57 lines
1.7 KiB
C
57 lines
1.7 KiB
C
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
// vim: expandtab:ts=8:sw=4:softtabstop=4:
|
|
// Test quicklz.
|
|
// Compare to compress-test which tests the toku compression (which is a composite of quicklz and zlib).
|
|
#ident "Copyright (c) 2010 Tokutek Inc. All rights reserved."
|
|
#ident "$Id$"
|
|
|
|
#include "test.h"
|
|
#include "compress.h"
|
|
|
|
static void test_compress_buf_method (unsigned char *buf, int i, enum toku_compression_method m) {
|
|
int bound = toku_compress_bound(m, i);
|
|
unsigned char *MALLOC_N(bound, cb);
|
|
uLongf actual_clen = bound;
|
|
toku_compress(m, cb, &actual_clen, buf, i);
|
|
unsigned char *MALLOC_N(i, ubuf);
|
|
toku_decompress(ubuf, i, cb, actual_clen);
|
|
assert(0==memcmp(ubuf, buf, i));
|
|
toku_free(ubuf);
|
|
toku_free(cb);
|
|
}
|
|
|
|
static void test_compress_buf (unsigned char *buf, int i) {
|
|
test_compress_buf_method(buf, i, TOKU_ZLIB_METHOD);
|
|
test_compress_buf_method(buf, i, TOKU_QUICKLZ_METHOD);
|
|
test_compress_buf_method(buf, i, TOKU_LZMA_METHOD);
|
|
}
|
|
|
|
static void test_compress_i (int i) {
|
|
unsigned char *MALLOC_N(i, b);
|
|
for (int j=0; j<i; j++) b[j] = random()%256;
|
|
test_compress_buf (b, i);
|
|
for (int j=0; j<i; j++) b[j] = 0;
|
|
test_compress_buf (b, i);
|
|
for (int j=0; j<i; j++) b[j] = 0xFF;
|
|
test_compress_buf (b, i);
|
|
toku_free(b);
|
|
}
|
|
|
|
static void test_compress (void) {
|
|
// unlike quicklz, we can handle length 0.
|
|
for (int i=0; i<100; i++) {
|
|
test_compress_i(i);
|
|
}
|
|
test_compress_i(1024);
|
|
test_compress_i(1024*1024*4);
|
|
test_compress_i(1024*1024*4 - 123); // just some random lengths
|
|
}
|
|
|
|
int test_main (int argc, const char *argv[]) {
|
|
default_parse_args(argc, argv);
|
|
|
|
test_compress();
|
|
|
|
return 0;
|
|
}
|
|
|