commit 166aa8d7416989aa0f5e3169a0f08a1d1bea619d Author: Nick Mathewson nickm@torproject.org Date: Thu Apr 27 10:25:52 2017 -0400
Have a separate entry point for each compresion test --- src/test/test_buffers.c | 47 +++++++++++++++++++++++++++-------------------- src/test/test_util.c | 42 +++++++++++++++++++++++------------------- 2 files changed, 50 insertions(+), 39 deletions(-)
diff --git a/src/test/test_buffers.c b/src/test/test_buffers.c index bb24e7c..ce5ac97 100644 --- a/src/test/test_buffers.c +++ b/src/test/test_buffers.c @@ -689,13 +689,15 @@ test_buffers_compress_impl(compress_method_t method, static void test_buffers_compress(void *arg) { - (void) arg; - compress_method_t methods[] = { - GZIP_METHOD, - ZLIB_METHOD, - LZMA_METHOD, - ZSTD_METHOD - }; + const char *methodname = arg; + tt_assert(methodname); + + compress_method_t method = compression_method_get_by_name(methodname); + tt_int_op(method, OP_NE, UNKNOWN_METHOD); + + if (! tor_compress_supports_method(method)) { + tt_skip(); + }
compression_level_t levels[] = { BEST_COMPRESSION, @@ -704,20 +706,16 @@ test_buffers_compress(void *arg) LOW_COMPRESSION };
- for (unsigned m = 0; m < ARRAY_LENGTH(methods); ++m) { - compress_method_t method = methods[m]; - - if (! tor_compress_supports_method(method)) - continue; + for (unsigned l = 0; l < ARRAY_LENGTH(levels); ++l) { + compression_level_t level = levels[l];
- for (unsigned l = 0; l < ARRAY_LENGTH(levels); ++l) { - compression_level_t level = levels[l]; - - test_buffers_compress_impl(method, level, 0); - test_buffers_compress_impl(method, level, 1); - test_buffers_compress_fin_at_chunk_end_impl(method, level); - } + test_buffers_compress_impl(method, level, 0); + test_buffers_compress_impl(method, level, 1); + test_buffers_compress_fin_at_chunk_end_impl(method, level); } + + done: + ; }
static const uint8_t *tls_read_ptr; @@ -844,11 +842,20 @@ struct testcase_t buffer_tests[] = { { "allocation_tracking", test_buffer_allocation_tracking, TT_FORK, NULL, NULL }, { "time_tracking", test_buffer_time_tracking, TT_FORK, NULL, NULL }, - { "compress", test_buffers_compress, TT_FORK, NULL, NULL }, { "tls_read_mocked", test_buffers_tls_read_mocked, 0, NULL, NULL }, { "chunk_size", test_buffers_chunk_size, 0, NULL, NULL }, { "find_contentlen", test_buffers_find_contentlen, 0, NULL, NULL }, + + { "compress/zlib", test_buffers_compress, TT_FORK, + &passthrough_setup, (char*)"deflate" }, + { "compress/gzip", test_buffers_compress, TT_FORK, + &passthrough_setup, (char*)"gzip" }, + { "compress/zstd", test_buffers_compress, TT_FORK, + &passthrough_setup, (char*)"x-zstd" }, + { "compress/lzma", test_buffers_compress, TT_FORK, + &passthrough_setup, (char*)"x-lzma" }, + END_OF_TESTCASES };
diff --git a/src/test/test_util.c b/src/test/test_util.c index 920766f..1ac1e29 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -2351,13 +2351,15 @@ test_util_compress_stream_impl(compress_method_t method, static void test_util_compress(void *arg) { - (void) arg; - compress_method_t methods[] = { - GZIP_METHOD, - ZLIB_METHOD, - LZMA_METHOD, - ZSTD_METHOD - }; + const char *methodname = arg; + tt_assert(methodname); + + compress_method_t method = compression_method_get_by_name(methodname); + tt_int_op(method, OP_NE, UNKNOWN_METHOD); + + if (! tor_compress_supports_method(method)) { + tt_skip(); + }
compression_level_t levels[] = { BEST_COMPRESSION, @@ -2366,19 +2368,14 @@ test_util_compress(void *arg) LOW_COMPRESSION };
- for (unsigned m = 0; m < ARRAY_LENGTH(methods); ++m) { - compress_method_t method = methods[m]; + test_util_compress_impl(method);
- if (! tor_compress_supports_method(method)) - continue; - - test_util_compress_impl(method); - - for (unsigned l = 0; l < ARRAY_LENGTH(levels); ++l) { - compression_level_t level = levels[l]; - test_util_compress_stream_impl(method, level); - } + for (unsigned l = 0; l < ARRAY_LENGTH(levels); ++l) { + compression_level_t level = levels[l]; + test_util_compress_stream_impl(method, level); } + done: + ; }
static void @@ -5720,6 +5717,10 @@ test_util_htonll(void *arg) #define UTIL_TEST(name, flags) \ { #name, test_util_ ## name, flags, NULL, NULL }
+#define COMPRESS(name, identifier) \ + { "compress/" #name, test_util_compress, 0, &passthrough_setup, \ + (char*)(identifier) } + #ifdef _WIN32 #define UTIL_TEST_NO_WIN(n, f) { #n, NULL, TT_SKIP, NULL, NULL } #define UTIL_TEST_WIN_ONLY(n, f) UTIL_TEST(n, (f)) @@ -5744,7 +5745,10 @@ struct testcase_t util_tests[] = { UTIL_LEGACY(strmisc), UTIL_TEST(parse_integer, 0), UTIL_LEGACY(pow2), - UTIL_LEGACY(compress), + COMPRESS(zlib, "deflate"), + COMPRESS(gzip, "gzip"), + COMPRESS(lzma, "x-lzma"), + COMPRESS(zstd, "x-zstd"), UTIL_TEST(gzip_compression_bomb, TT_FORK), UTIL_LEGACY(datadir), UTIL_LEGACY(memarea),
tor-commits@lists.torproject.org