From f64e2a3b0b701249b02adf2b389bae8576a3441b Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sun, 9 May 2021 14:40:35 +0200 Subject: Add a test case for XZ stream concatenation A modified version of the libfstream XZ stream uncompress test case is added that deliberately chops the compressed data up into two independend XZ streams to test the behaviour where the decompressor has to read across stream boundaries, like those resulting from parallel compression. Signed-off-by: David Oberhollenzer --- tests/libfstream/Makemodule.am | 9 ++++-- tests/libfstream/uncompress.c | 65 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 71 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/libfstream/Makemodule.am b/tests/libfstream/Makemodule.am index 9303a8a..d943686 100644 --- a/tests/libfstream/Makemodule.am +++ b/tests/libfstream/Makemodule.am @@ -13,6 +13,11 @@ test_xfrm_xz_LDADD = libfstream.a libcompat.a $(BZIP2_LIBS) $(ZLIB_LIBS) test_xfrm_xz_LDADD += $(XZ_LIBS) $(ZSTD_LIBS) test_xfrm_xz_CPPFLAGS = $(AM_CPPFLAGS) -DTEST_XZ=1 +test_xfrm_xz2_SOURCES = tests/libfstream/uncompress.c tests/test.h +test_xfrm_xz2_LDADD = libfstream.a libcompat.a $(BZIP2_LIBS) $(ZLIB_LIBS) +test_xfrm_xz2_LDADD += $(XZ_LIBS) $(ZSTD_LIBS) +test_xfrm_xz2_CPPFLAGS = $(AM_CPPFLAGS) -DTEST_XZ=2 + test_xfrm_gzip_SOURCES = tests/libfstream/uncompress.c tests/test.h test_xfrm_gzip_LDADD = libfstream.a libcompat.a $(BZIP2_LIBS) $(ZLIB_LIBS) test_xfrm_gzip_LDADD += $(XZ_LIBS) $(ZSTD_LIBS) @@ -40,8 +45,8 @@ TESTS += test_xfrm_bzip2 endif if WITH_XZ -check_PROGRAMS += test_xfrm_xz -TESTS += test_xfrm_xz +check_PROGRAMS += test_xfrm_xz test_xfrm_xz2 +TESTS += test_xfrm_xz test_xfrm_xz2 endif if WITH_GZIP diff --git a/tests/libfstream/uncompress.c b/tests/libfstream/uncompress.c index bd7df46..385af29 100644 --- a/tests/libfstream/uncompress.c +++ b/tests/libfstream/uncompress.c @@ -97,6 +97,69 @@ static sqfs_u8 data_in[] = { 0xbe, 0x03, 0x00, 0x00, 0xda, 0x2c, 0x45, 0x49, 0xa8, 0x00, 0x0a, 0xfc, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x5a +#elif defined(TEST_XZ2) + 0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00, 0x00, 0x04, + 0xe6, 0xd6, 0xb4, 0x46, 0x02, 0x00, 0x21, 0x01, + 0x16, 0x00, 0x00, 0x00, 0x74, 0x2f, 0xe5, 0xa3, + 0xe0, 0x00, 0xdc, 0x00, 0xb3, 0x5d, 0x00, 0x26, + 0x1b, 0xca, 0x46, 0x67, 0x5a, 0xf2, 0x77, 0xb8, + 0x7d, 0x86, 0xd8, 0x41, 0xdb, 0x05, 0x35, 0xcd, + 0x83, 0xa5, 0x7c, 0x12, 0xa5, 0x05, 0xdb, 0x90, + 0xbd, 0x2f, 0x14, 0xd3, 0x71, 0x72, 0x96, 0xa8, + 0x8a, 0x7d, 0x84, 0x56, 0x71, 0x8d, 0x6a, 0x22, + 0x98, 0xab, 0x9e, 0x3d, 0xc3, 0x55, 0xef, 0xcc, + 0xa5, 0xc3, 0xdd, 0x5b, 0x8e, 0xbf, 0x03, 0x81, + 0x21, 0x40, 0xd6, 0x26, 0x91, 0x02, 0x45, 0x4e, + 0x20, 0x91, 0xcf, 0x8c, 0x51, 0x22, 0x02, 0x70, + 0xba, 0x05, 0x6b, 0x83, 0xef, 0x3f, 0x8e, 0x09, + 0xef, 0x88, 0xf5, 0x37, 0x1b, 0x89, 0x8d, 0xff, + 0x1e, 0xee, 0xe8, 0xb0, 0xac, 0xf2, 0x6e, 0xd4, + 0x3e, 0x25, 0xaf, 0xa0, 0x6d, 0x2e, 0xc0, 0x7f, + 0xb5, 0xa0, 0xcb, 0x90, 0x1f, 0x08, 0x1a, 0xe2, + 0x90, 0x20, 0x19, 0x71, 0x0c, 0xe8, 0x3f, 0xe5, + 0x39, 0xeb, 0x9a, 0x62, 0x4f, 0x06, 0xda, 0x3c, + 0x32, 0x59, 0xcc, 0x83, 0xe3, 0x83, 0x0f, 0x38, + 0x7d, 0x43, 0x37, 0x6c, 0x0b, 0x05, 0x65, 0x98, + 0x25, 0xdb, 0xf2, 0xc0, 0x2d, 0x39, 0x36, 0x5d, + 0xd4, 0xb6, 0xc2, 0x79, 0x73, 0x3e, 0xc2, 0x6e, + 0x54, 0xec, 0x78, 0x2b, 0x5d, 0xf1, 0xd1, 0xb4, + 0xb3, 0xcd, 0xf3, 0x89, 0xf5, 0x80, 0x79, 0x46, + 0xc0, 0x00, 0x00, 0x00, 0xc4, 0xf5, 0x1d, 0x08, + 0xf0, 0x34, 0x3a, 0x59, 0x00, 0x01, 0xcf, 0x01, + 0xdd, 0x01, 0x00, 0x00, 0x7f, 0x5a, 0x77, 0xcb, + 0xb1, 0xc4, 0x67, 0xfb, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x59, 0x5a, + 0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00, 0x00, 0x04, + 0xe6, 0xd6, 0xb4, 0x46, 0x02, 0x00, 0x21, 0x01, + 0x16, 0x00, 0x00, 0x00, 0x74, 0x2f, 0xe5, 0xa3, + 0xe0, 0x00, 0xe0, 0x00, 0xb7, 0x5d, 0x00, 0x31, + 0x9b, 0xca, 0x19, 0xc5, 0x54, 0xec, 0xb6, 0x54, + 0xe7, 0xb1, 0x7d, 0xc4, 0x57, 0x9e, 0x6c, 0x89, + 0xad, 0x4a, 0x6d, 0x16, 0xd8, 0x3c, 0x05, 0x94, + 0x10, 0x16, 0x99, 0x38, 0x21, 0xa3, 0xb9, 0xc5, + 0x80, 0xff, 0xfc, 0xee, 0xd4, 0xd5, 0x3f, 0xdd, + 0x8c, 0xd7, 0x3d, 0x8f, 0x76, 0xec, 0x96, 0x9d, + 0x20, 0xac, 0xcb, 0x18, 0xf5, 0xb2, 0x9c, 0x12, + 0xf6, 0x7c, 0x33, 0xdc, 0x4f, 0x9a, 0xe5, 0x2d, + 0x63, 0x68, 0xa4, 0x2b, 0x1d, 0x0a, 0x1e, 0xf0, + 0xfe, 0x73, 0xf2, 0x5f, 0x7b, 0xb4, 0xea, 0x54, + 0xad, 0x27, 0xd1, 0xff, 0xb6, 0x50, 0x06, 0x7b, + 0x51, 0x3f, 0x25, 0x8a, 0xcf, 0x4c, 0x03, 0x3e, + 0xc3, 0xad, 0x47, 0x34, 0xcf, 0xba, 0x45, 0x79, + 0xd0, 0x7b, 0xf6, 0x66, 0x63, 0xc0, 0xc6, 0x69, + 0xa7, 0x51, 0x84, 0xa8, 0xa0, 0x0b, 0xbc, 0x6f, + 0x13, 0x89, 0xd6, 0x5e, 0xac, 0xca, 0x2f, 0xd2, + 0xe7, 0xe1, 0x1e, 0x78, 0x22, 0x3a, 0x59, 0x6c, + 0x9c, 0x8c, 0x65, 0xf1, 0x5b, 0xf4, 0xbf, 0xd5, + 0xdc, 0x05, 0xeb, 0x70, 0x10, 0xb8, 0x6c, 0xf2, + 0x13, 0x20, 0xb0, 0xdd, 0x3e, 0xb2, 0x92, 0x5b, + 0xa3, 0xf7, 0x94, 0xa1, 0xa1, 0x74, 0x36, 0x9a, + 0xf1, 0xd8, 0xc2, 0xf0, 0xc6, 0x29, 0x7e, 0x85, + 0x28, 0xf5, 0xf2, 0x21, 0x00, 0x00, 0x00, 0x00, + 0xc8, 0x80, 0x67, 0x40, 0xc3, 0xaa, 0x17, 0x57, + 0x00, 0x01, 0xd3, 0x01, 0xe1, 0x01, 0x00, 0x00, + 0x86, 0xdf, 0x9e, 0x05, 0xb1, 0xc4, 0x67, 0xfb, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x59, 0x5a #elif defined(TEST_GZIP) 0x1f, 0x8b, 0x08, 0x08, 0x82, 0xd4, 0x97, 0x60, 0x00, 0x03, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x74, @@ -187,7 +250,7 @@ static const char orig[] = #if defined(TEST_BZIP2) #define COMP_NAME "bzip2" #define COMP_ID FSTREAM_COMPRESSOR_BZIP2 -#elif defined(TEST_XZ) +#elif defined(TEST_XZ) || defined(TEST_XZ2) #define COMP_NAME "xz" #define COMP_ID FSTREAM_COMPRESSOR_XZ #elif defined(TEST_GZIP) -- cgit v1.2.3