diff options
author | Yann Collet <Cyan4973@users.noreply.github.com> | 2017-08-25 18:23:30 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-25 18:23:30 (GMT) |
commit | 2fa660bb06f67179d11249eb13bb4f6c705d75c0 (patch) | |
tree | 0b08a261a0432bf9da822fd6e6cc7afb2fc580da | |
parent | 4db65c1d99280a757823914efaa96d2e87f41844 (diff) | |
parent | a261f51ee31bbbb18d0df9401a7f93bafd49b14c (diff) | |
download | lz4-2fa660bb06f67179d11249eb13bb4f6c705d75c0.zip lz4-2fa660bb06f67179d11249eb13bb4f6c705d75c0.tar.gz lz4-2fa660bb06f67179d11249eb13bb4f6c705d75c0.tar.bz2 |
Merge pull request #386 from lz4/parallelMake
`make test` compatible with parallel execution (`-j#`)
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | circle.yml | 1 | ||||
-rw-r--r-- | programs/Makefile | 11 | ||||
-rw-r--r-- | tests/Makefile | 278 | ||||
-rw-r--r-- | tests/fasttest.c | 131 |
6 files changed, 139 insertions, 285 deletions
diff --git a/.travis.yml b/.travis.yml index dc61505..2724e92 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ matrix: # Container-based 12.04 LTS Server Edition 64 bit (doesn't support 32-bit includes) - os: linux sudo: false - env: Ubu=12.04cont Cmd='make -C tests test-lz4 test-lz4c test-fasttest test-fullbench' COMPILER=cc + env: Ubu=12.04cont Cmd='make -C tests test-lz4 test-lz4c test-fullbench' COMPILER=cc - os: linux sudo: false @@ -82,6 +82,7 @@ make install # this command may require root access LZ4's `Makefile` supports standard [Makefile conventions], including [staged installs], [redirection], or [command redefinition]. +It is compatible with parallel builds (`'-j#'`). [Makefile conventions]: https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html [staged installs]: https://www.gnu.org/prep/standards/html_node/DESTDIR.html @@ -19,7 +19,6 @@ test: - make cmake && make clean - make -C tests test-lz4 - make -C tests test-lz4c - - make -C tests test-fasttest - make -C tests test-frametest - make -C tests test-fullbench - make -C tests test-fuzzer && make clean diff --git a/programs/Makefile b/programs/Makefile index 71b18b9..29408f1 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -1,6 +1,6 @@ # ########################################################################## # LZ4 programs - Makefile -# Copyright (C) Yann Collet 2011-2016 +# Copyright (C) Yann Collet 2011-2017 # # This Makefile is validated for Linux, macOS, *BSD, Hurd, Solaris, MSYS2 targets # @@ -42,7 +42,8 @@ LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT)) LIBVER := $(shell echo $(LIBVER_SCRIPT)) SRCFILES := $(wildcard $(LZ4DIR)/*.c) $(wildcard *.c) -OBJFILES := $(patsubst %.c,%.o,$(SRCFILES)) +#OBJFILES := $(patsubst %.c,%.o,$(SRCFILES)) +OBJFILES := $(SRCFILES:.c=.o) CPPFLAGS += -I$(LZ4DIR) -DXXH_NAMESPACE=LZ4_ CFLAGS ?= -O3 @@ -81,13 +82,13 @@ lz4: $(OBJFILES) lz4-release: DEBUGFLAGS= lz4-release: lz4 +lz4c: lz4 + ln -s lz4 lz4c + lz4c32: CFLAGS += -m32 lz4c32 : $(SRCFILES) $(CC) $(FLAGS) $^ -o $@$(EXT) -lz4c: lz4 - ln -s lz4 lz4c - lz4.1: lz4.1.md cat $^ | $(MD2ROFF) $(MD2ROFF_FLAGS) | sed -n '/^\.\\\".*/!p' > $@ diff --git a/tests/Makefile b/tests/Makefile index f00778f..e870fcf 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,6 +1,6 @@ # ########################################################################## # LZ4 programs - Makefile -# Copyright (C) Yann Collet 2011-2016 +# Copyright (C) Yann Collet 2011-2017 # # This Makefile is validated for Linux, macOS, *BSD, Hurd, Solaris, MSYS2 targets # @@ -30,19 +30,14 @@ # datagen : generates synthetic data samples for tests & benchmarks # ########################################################################## -DESTDIR ?= -PREFIX ?= /usr/local -BINDIR := $(PREFIX)/bin -MANDIR := $(PREFIX)/share/man/man1 LZ4DIR := ../lib PRGDIR := ../programs -VOID := /dev/null TESTDIR := versionsTest PYTHON ?= python3 CFLAGS ?= -O3 # can select custom optimization flags. For example : CFLAGS=-O2 make -CFLAGS += -g -Wall -Wextra -Wundef -Wcast-qual -Wcast-align -Wshadow -Wswitch-enum \ - -Wdeclaration-after-statement -Wstrict-prototypes \ +CFLAGS += -g -Wall -Wextra -Wundef -Wcast-qual -Wcast-align -Wshadow \ + -Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes \ -Wpointer-arith -Wstrict-aliasing=1 CFLAGS += $(MOREFLAGS) CPPFLAGS:= -I$(LZ4DIR) -I$(PRGDIR) -DXXH_NAMESPACE=LZ4_ @@ -51,9 +46,11 @@ FLAGS = $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) # Define *.exe as extension for Windows systems ifneq (,$(filter Windows%,$(OS))) -EXT =.exe +EXT =.exe +VOID = nul else -EXT = +EXT = +VOID = /dev/null endif LZ4 := $(PRGDIR)/lz4$(EXT) @@ -66,20 +63,19 @@ NB_LOOPS ?= -i1 default: all -all: fullbench fuzzer frametest datagen fasttest +all: fullbench fuzzer frametest datagen all32: CFLAGS+=-m32 all32: all lz4: - $(MAKE) -C $(PRGDIR) clean $@ CFLAGS="$(CFLAGS)" + $(MAKE) -C $(PRGDIR) $@ CFLAGS="$(CFLAGS)" -lz4c: - $(MAKE) -C $(PRGDIR) clean $@ CFLAGS="$(CFLAGS)" +lz4c unlz4 lz4cat: lz4 + ln -sf $(LZ4) $(PRGDIR)/$@ lz4c32: # create a 32-bits version for 32/64 interop tests - $(MAKE) -C $(PRGDIR) clean $@ CFLAGS="-m32 $(CFLAGS)" - cp $(LZ4) $(LZ4)c32 + $(MAKE) -C $(PRGDIR) $@ CFLAGS="-m32 $(CFLAGS)" fullbench : $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/lz4frame.o $(LZ4DIR)/xxhash.o fullbench.c $(CC) $(FLAGS) $^ -o $@$(EXT) @@ -98,9 +94,6 @@ fuzzer : $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/xxhash.o fuzzer.c frametest: $(LZ4DIR)/lz4frame.o $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/xxhash.o frametest.c $(CC) $(FLAGS) $^ -o $@$(EXT) -fasttest: $(LZ4DIR)/lz4.o fasttest.c - $(CC) $(FLAGS) $^ -o $@$(EXT) - datagen : $(PRGDIR)/datagen.c datagencli.c $(CC) $(FLAGS) -I$(PRGDIR) $^ -o $@$(EXT) @@ -122,7 +115,7 @@ versionsTest: #----------------------------------------------------------------------------- -# make install is validated only for Linux, OSX, BSD, Hurd and Solaris targets +# validated only for Linux, OSX, BSD, Hurd and Solaris targets #----------------------------------------------------------------------------- ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS)) @@ -137,159 +130,152 @@ DIFF:=gdiff endif -test: test-lz4 test-lz4c test-fasttest test-frametest test-fullbench test-fuzzer +test: test-lz4 test-lz4c test-frametest test-fullbench test-fuzzer test32: CFLAGS+=-m32 test32: test test-lz4-sparse: lz4 datagen @echo "\n ---- test sparse file support ----" - ./datagen -g5M -P100 > tmpSrc - $(LZ4) -B4D tmpSrc | $(LZ4) -dv --sparse > tmpB4 - $(DIFF) -s tmpSrc tmpB4 - $(LZ4) -B5D tmpSrc | $(LZ4) -dv --sparse > tmpB5 - $(DIFF) -s tmpSrc tmpB5 - $(LZ4) -B6D tmpSrc | $(LZ4) -dv --sparse > tmpB6 - $(DIFF) -s tmpSrc tmpB6 - $(LZ4) -B7D tmpSrc | $(LZ4) -dv --sparse > tmpB7 - $(DIFF) -s tmpSrc tmpB7 - $(LZ4) tmpSrc | $(LZ4) -dv --no-sparse > tmpNoSparse - $(DIFF) -s tmpSrc tmpNoSparse - ls -ls tmp* - ./datagen -s1 -g1200007 -P100 | $(LZ4) | $(LZ4) -dv --sparse > tmpOdd # Odd size file (to generate non-full last block) - ./datagen -s1 -g1200007 -P100 | $(DIFF) -s - tmpOdd - ls -ls tmpOdd - @$(RM) tmp* + ./datagen -g5M -P100 > tmplsdg5M + $(LZ4) -B4D tmplsdg5M | $(LZ4) -dv --sparse > tmplscB4 + $(DIFF) -s tmplsdg5M tmplscB4 + $(LZ4) -B5D tmplsdg5M | $(LZ4) -dv --sparse > tmplscB5 + $(DIFF) -s tmplsdg5M tmplscB5 + $(LZ4) -B6D tmplsdg5M | $(LZ4) -dv --sparse > tmplscB6 + $(DIFF) -s tmplsdg5M tmplscB6 + $(LZ4) -B7D tmplsdg5M | $(LZ4) -dv --sparse > tmplscB7 + $(DIFF) -s tmplsdg5M tmplscB7 + $(LZ4) tmplsdg5M | $(LZ4) -dv --no-sparse > tmplsnosparse + $(DIFF) -s tmplsdg5M tmplsnosparse + ls -ls tmpls* + ./datagen -s1 -g1200007 -P100 | $(LZ4) | $(LZ4) -dv --sparse > tmplsodd # Odd size file (to generate non-full last block) + ./datagen -s1 -g1200007 -P100 | $(DIFF) -s - tmplsodd + ls -ls tmplsodd + @$(RM) tmpls* @echo "\n Compatibility with Console :" echo "Hello World 1 !" | $(LZ4) | $(LZ4) -d -c echo "Hello World 2 !" | $(LZ4) | $(LZ4) -d | cat echo "Hello World 3 !" | $(LZ4) --no-frame-crc | $(LZ4) -d -c @echo "\n Compatibility with Append :" - ./datagen -P100 -g1M > tmp1M - cat tmp1M tmp1M > tmp2M - $(LZ4) -B5 -v tmp1M tmpC - $(LZ4) -d -v tmpC tmpR - $(LZ4) -d -v tmpC >> tmpR + ./datagen -P100 -g1M > tmplsdg1M + cat tmplsdg1M tmplsdg1M > tmpls2M + $(LZ4) -B5 -v tmplsdg1M tmplsc + $(LZ4) -d -v tmplsc tmplsr + $(LZ4) -d -v tmplsc >> tmplsr ls -ls tmp* - $(DIFF) tmp2M tmpR - @$(RM) tmp* + $(DIFF) tmpls2M tmplsr + @$(RM) tmpls* test-lz4-contentSize: lz4 datagen @echo "\n ---- test original size support ----" - ./datagen -g15M > tmp - $(LZ4) -v tmp | $(LZ4) -t - $(LZ4) -v --content-size tmp | $(LZ4) -d > tmp2 - $(DIFF) -s tmp tmp2 + ./datagen -g15M > tmplc1 + $(LZ4) -v tmplc1 | $(LZ4) -t + $(LZ4) -v --content-size tmplc1 | $(LZ4) -d > tmplc2 + $(DIFF) -s tmplc1 tmplc2 # test large size [2-4] GB - @./datagen -g3G -P100 | $(LZ4) -vv | $(LZ4) --decompress --force --sparse - tmp - @ls -ls tmp - @./datagen -g3G -P100 | $(LZ4) --quiet --content-size | $(LZ4) --verbose --decompress --force --sparse - tmp2 - @ls -ls tmp2 - $(DIFF) -s tmp tmp2 - @$(RM) tmp* + @./datagen -g3G -P100 | $(LZ4) -vv | $(LZ4) --decompress --force --sparse - tmplc1 + @ls -ls tmplc1 + @./datagen -g3G -P100 | $(LZ4) --quiet --content-size | $(LZ4) --verbose --decompress --force --sparse - tmplc2 + @ls -ls tmplc2 + $(DIFF) -s tmplc1 tmplc2 + @$(RM) tmplc* test-lz4-frame-concatenation: lz4 datagen @echo "\n ---- test frame concatenation ----" - @echo -n > empty.test - @echo hi > nonempty.test - cat nonempty.test empty.test nonempty.test > orig.test - @$(LZ4) -zq empty.test > empty.lz4.test - @$(LZ4) -zq nonempty.test > nonempty.lz4.test - cat nonempty.lz4.test empty.lz4.test nonempty.lz4.test > concat.lz4.test - $(LZ4) -d concat.lz4.test > result.test - sdiff orig.test result.test - @$(RM) *.test + @echo -n > tmp-lfc-empty + @echo hi > tmp-lfc-nonempty + cat tmp-lfc-nonempty tmp-lfc-empty tmp-lfc-nonempty > tmp-lfc-src + @$(LZ4) -zq tmp-lfc-empty > tmp-lfc-empty.lz4 + @$(LZ4) -zq tmp-lfc-nonempty > tmp-lfc-nonempty.lz4 + cat tmp-lfc-nonempty.lz4 tmp-lfc-empty.lz4 tmp-lfc-nonempty.lz4 > tmp-lfc-concat.lz4 + $(LZ4) -d tmp-lfc-concat.lz4 > tmp-lfc-result + sdiff tmp-lfc-src tmp-lfc-result + @$(RM) tmp-lfc-* @echo frame concatenation test completed test-lz4-multiple: lz4 datagen @echo "\n ---- test multiple files ----" - @./datagen -s1 > tmp1 2> $(VOID) - @./datagen -s2 -g100K > tmp2 2> $(VOID) - @./datagen -s3 -g1M > tmp3 2> $(VOID) - $(LZ4) -f -m tmp* - ls -ls tmp* - @$(RM) tmp1 tmp2 tmp3 - $(LZ4) -df -m *.lz4 - ls -ls tmp* - $(LZ4) -f -m tmp1 notHere tmp2; echo $$? - @$(RM) tmp* - -unlz4: - @$(MAKE) -C $(PRGDIR) $@ CFLAGS="$(CFLAGS)" - -lz4cat: - @$(MAKE) -C $(PRGDIR) $@ CFLAGS="$(CFLAGS)" + @./datagen -s1 > tmp-tlm1 2> $(VOID) + @./datagen -s2 -g100K > tmp-tlm2 2> $(VOID) + @./datagen -s3 -g1M > tmp-tlm3 2> $(VOID) + $(LZ4) -f -m tmp-tlm* + ls -ls tmp-tlm* + @$(RM) tmp-tlm1 tmp-tlm2 tmp-tlm3 + $(LZ4) -df -m tmp-tlm*.lz4 + ls -ls tmp-tlm* + $(LZ4) -f -m tmp-tlm1 notHere tmp-tlm2; echo $$? + @$(RM) tmp-tlm* test-lz4-basic: lz4 datagen unlz4 lz4cat @echo "\n ---- test lz4 basic compression/decompression ----" - ./datagen -g0 | $(LZ4) -v | $(LZ4) -t - ./datagen -g16KB | $(LZ4) -9 | $(LZ4) -t - ./datagen -g20KB > tmpSrc - $(LZ4) < tmpSrc | $(LZ4) -d > tmpRes - $(DIFF) -q tmpSrc tmpRes - $(LZ4) --no-frame-crc < tmpSrc | $(LZ4) -d > tmpRes - $(DIFF) -q tmpSrc tmpRes - ./datagen | $(LZ4) | $(LZ4) -t - ./datagen -g6M -P99 | $(LZ4) -9BD | $(LZ4) -t - ./datagen -g17M | $(LZ4) -9v | $(LZ4) -qt - ./datagen -g33M | $(LZ4) --no-frame-crc | $(LZ4) -t - ./datagen -g256MB | $(LZ4) -vqB4D | $(LZ4) -t - @echo "hello world" > tmp - $(LZ4) --rm -f tmp tmp.lz4 - test ! -f tmp # must fail (--rm) - test -f tmp.lz4 - $(PRGDIR)/lz4cat tmp.lz4 # must display hello world - test -f tmp.lz4 - $(PRGDIR)/unlz4 --rm tmp.lz4 tmp - test -f tmp - test ! -f tmp.lz4 # must fail (--rm) - test ! -f tmp.lz4.lz4 # must fail (unlz4) - $(PRGDIR)/lz4cat tmp # pass-through mode - test -f tmp - test ! -f tmp.lz4 # must fail (lz4cat) - $(LZ4) tmp tmp.lz4 # creates tmp.lz4 - $(PRGDIR)/lz4cat < tmp.lz4 > tmp3 # checks lz4cat works with stdin (#285) - $(DIFF) -q tmp tmp3 - $(PRGDIR)/lz4cat < tmp > tmp2 # checks lz4cat works with stdin (#285) - $(DIFF) -q tmp tmp2 - cp tmp ./-d - $(LZ4) --rm -- -d -d.lz4 # compresses ./d into ./-d.lz4 + ./datagen -g0 | $(LZ4) -v | $(LZ4) -t + ./datagen -g16KB | $(LZ4) -9 | $(LZ4) -t + ./datagen -g20KB > tmp-tlb-dg20k + $(LZ4) < tmp-tlb-dg20k | $(LZ4) -d > tmp-tlb-dec + $(DIFF) -q tmp-tlb-dg20k tmp-tlb-dec + $(LZ4) --no-frame-crc < tmp-tlb-dg20k | $(LZ4) -d > tmp-tlb-dec + $(DIFF) -q tmp-tlb-dg20k tmp-tlb-dec + ./datagen | $(LZ4) | $(LZ4) -t + ./datagen -g6M -P99 | $(LZ4) -9BD | $(LZ4) -t + ./datagen -g17M | $(LZ4) -9v | $(LZ4) -qt + ./datagen -g33M | $(LZ4) --no-frame-crc | $(LZ4) -t + ./datagen -g256MB | $(LZ4) -vqB4D | $(LZ4) -t + @echo "hello world" > tmp-tlb-hw + $(LZ4) --rm -f tmp-tlb-hw tmp-tlb-hw.lz4 + test ! -f tmp-tlb-hw # must fail (--rm) + test -f tmp-tlb-hw.lz4 + $(PRGDIR)/lz4cat tmp-tlb-hw.lz4 # must display hello world + test -f tmp-tlb-hw.lz4 + $(PRGDIR)/unlz4 --rm tmp-tlb-hw.lz4 tmp-tlb-hw + test -f tmp-tlb-hw + test ! -f tmp-tlb-hw.lz4 # must fail (--rm) + test ! -f tmp-tlb-hw.lz4.lz4 # must fail (unlz4) + $(PRGDIR)/lz4cat tmp-tlb-hw # pass-through mode + test -f tmp-tlb-hw + test ! -f tmp-tlb-hw.lz4 # must fail (lz4cat) + $(LZ4) tmp-tlb-hw tmp-tlb-hw.lz4 # creates tmp-tlb-hw.lz4 + $(PRGDIR)/lz4cat < tmp-tlb-hw.lz4 > tmp-tlb3 # checks lz4cat works with stdin (#285) + $(DIFF) -q tmp-tlb-hw tmp-tlb3 + $(PRGDIR)/lz4cat < tmp-tlb-hw > tmp-tlb2 # checks lz4cat works in pass-through mode + $(DIFF) -q tmp-tlb-hw tmp-tlb2 + cp tmp-tlb-hw ./-d + $(LZ4) --rm -- -d -d.lz4 # compresses ./d into ./-d.lz4 test -f ./-d.lz4 test ! -f ./-d mv ./-d.lz4 ./-z - $(LZ4) -d --rm -- -z tmp4 # uncompresses ./-z into tmp4 + $(LZ4) -d --rm -- -z tmp-tlb4 # uncompresses ./-z into tmp-tlb4 test ! -f ./-z - $(DIFF) -q tmp tmp4 - $(LZ4) -f tmp - cat tmp >> tmp.lz4 - $(LZ4) -f tmp.lz4 # uncompress valid frame followed by invalid data - $(LZ4) -BX tmp -c -q | $(LZ4) -tv # test block checksum - @$(RM) tmp* + $(DIFF) -q tmp-tlb-hw tmp-tlb4 + $(LZ4) -f tmp-tlb-hw + cat tmp-tlb-hw >> tmp-tlb-hw.lz4 + $(LZ4) -f tmp-tlb-hw.lz4 # uncompress valid frame followed by invalid data + $(LZ4) -BX tmp-tlb-hw -c -q | $(LZ4) -tv # test block checksum + @$(RM) tmp-tlb* test-lz4-hugefile: lz4 datagen @echo "\n ---- test huge files compression/decompression ----" ./datagen -g6GB | $(LZ4) -vB5D | $(LZ4) -qt ./datagen -g6GB | $(LZ4) -v5BD | $(LZ4) -qt - @$(RM) tmp* test-lz4-testmode: lz4 datagen @echo "\n ---- bench mode ----" - $(LZ4) -bi1 + $(LZ4) -bi1 @echo "\n ---- test mode ----" ! ./datagen | $(LZ4) -t ! ./datagen | $(LZ4) -tf @echo "\n ---- pass-through mode ----" ! ./datagen | $(LZ4) -d > $(VOID) - ./datagen | $(LZ4) -df > $(VOID) - @echo "Hello World !" > tmp1 - $(LZ4) -dcf tmp1 - @echo "from underground..." > tmp2 - $(LZ4) -dcfm tmp1 tmp2 - @echo "\n ---- test cli ----" + ./datagen | $(LZ4) -df > $(VOID) + @echo "Hello World !" > tmp-tlt1 + $(LZ4) -dcf tmp-tlt1 + @echo "from underground..." > tmp-tlt2 + $(LZ4) -dcfm tmp-tlt1 tmp-tlt2 + @echo "\n ---- non-existing source ----" ! $(LZ4) file-does-not-exist ! $(LZ4) -f file-does-not-exist ! $(LZ4) -fm file1-dne file2-dne - ! $(LZ4) -fm file1-dne file2-dne + @$(RM) tmp-tlt test-lz4-opt-parser: lz4 datagen @echo "\n ---- test opt-parser ----" @@ -304,12 +290,13 @@ test-lz4-opt-parser: lz4 datagen ./datagen -g16M -P90 | $(LZ4) -11B5 | $(LZ4) -t ./datagen -g32M -P10 | $(LZ4) -11B5D | $(LZ4) -t -test-lz4: lz4 datagen test-lz4-opt-parser test-lz4-basic test-lz4-multiple test-lz4-sparse \ - test-lz4-frame-concatenation test-lz4-testmode test-lz4-contentSize \ - test-lz4-hugefile +test-lz4: lz4 datagen test-lz4-basic test-lz4-opt-parser test-lz4-multiple \ + test-lz4-sparse test-lz4-frame-concatenation test-lz4-testmode \ + test-lz4-contentSize test-lz4-hugefile + @$(RM) tmp* test-lz4c: lz4c datagen - @echo "\n ---- test lz4c version ----" + @echo "\n ---- test lz4c variant ----" ./datagen -g256MB | $(LZ4)c -l -v | $(LZ4)c -t test-lz4c32: CFLAGS+=-m32 @@ -359,25 +346,22 @@ test-frametest: frametest test-frametest32: CFLAGS += -m32 test-frametest32: test-frametest -test-fasttest: fasttest - ./fasttest - test-mem: lz4 datagen fuzzer frametest fullbench @echo "\n ---- valgrind tests : memory analyzer ----" valgrind --leak-check=yes --error-exitcode=1 ./datagen -g50M > $(VOID) - ./datagen -g16KB > tmp - valgrind --leak-check=yes --error-exitcode=1 $(LZ4) -9 -BD -f tmp $(VOID) - ./datagen -g16KB -s2 > tmp2 - ./datagen -g16KB -s3 > tmp3 - valgrind --leak-check=yes --error-exitcode=1 $(LZ4) --force --multiple tmp tmp2 tmp3 - ./datagen -g16MB > tmp - valgrind --leak-check=yes --error-exitcode=1 $(LZ4) -9 -B5D -f tmp tmp2 - valgrind --leak-check=yes --error-exitcode=1 $(LZ4) -t tmp2 - valgrind --leak-check=yes --error-exitcode=1 $(LZ4) -bi1 tmp - valgrind --leak-check=yes --error-exitcode=1 ./fullbench -i1 tmp tmp2 - ./datagen -g256MB > tmp - valgrind --leak-check=yes --error-exitcode=1 $(LZ4) -B4D -f -vq tmp $(VOID) - $(RM) tmp* + ./datagen -g16KB > ftmdg16K + valgrind --leak-check=yes --error-exitcode=1 $(LZ4) -9 -BD -f ftmdg16K $(VOID) + ./datagen -g16KB -s2 > ftmdg16K2 + ./datagen -g16KB -s3 > ftmdg16K3 + valgrind --leak-check=yes --error-exitcode=1 $(LZ4) --force --multiple ftmdg16K ftmdg16K2 ftmdg16K3 + ./datagen -g16MB > ftmdg16M + valgrind --leak-check=yes --error-exitcode=1 $(LZ4) -9 -B5D -f ftmdg16M ftmdg16K2 + valgrind --leak-check=yes --error-exitcode=1 $(LZ4) -t ftmdg16K2 + valgrind --leak-check=yes --error-exitcode=1 $(LZ4) -bi1 ftmdg16M + valgrind --leak-check=yes --error-exitcode=1 ./fullbench -i1 ftmdg16M ftmdg16K2 + ./datagen -g256MB > ftmdg256M + valgrind --leak-check=yes --error-exitcode=1 $(LZ4) -B4D -f -vq ftmdg256M $(VOID) + $(RM) ftm* valgrind --leak-check=yes --error-exitcode=1 ./fuzzer -i64 -t1 valgrind --leak-check=yes --error-exitcode=1 ./frametest -i256 diff --git a/tests/fasttest.c b/tests/fasttest.c deleted file mode 100644 index a165293..0000000 --- a/tests/fasttest.c +++ /dev/null @@ -1,131 +0,0 @@ -/************************************** - * Compiler Options - **************************************/ -#ifdef _MSC_VER /* Visual Studio */ -# define _CRT_SECURE_NO_WARNINGS // for MSVC -# define snprintf sprintf_s -#endif -#ifdef __GNUC__ -# pragma GCC diagnostic ignored "-Wmissing-braces" /* GCC bug 53119 : doesn't accept { 0 } as initializer (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119) */ -#endif - - -/************************************** - * Includes - **************************************/ -#include <stdio.h> -#include <stdint.h> -#include <stdlib.h> -#include <string.h> -#include "lz4.h" - - -/* Returns non-zero on failure. */ -int test_compress(const char *input, int inSize, char *output, int outSize) -{ - LZ4_stream_t lz4Stream_body = { 0 }; - LZ4_stream_t* lz4Stream = &lz4Stream_body; - - int inOffset = 0; - int outOffset = 0; - - if (inSize & 3) return -1; - - while (inOffset < inSize) { - const int length = inSize >> 2; - if (inSize > 1024) return -2; - if (outSize - (outOffset + 8) < LZ4_compressBound(length)) return -3; - { - const int outBytes = LZ4_compress_fast_continue( - lz4Stream, input + inOffset, output + outOffset + 8, length, outSize-outOffset, 1); - if(outBytes <= 0) return -4; - memcpy(output + outOffset, &length, 4); /* input length */ - memcpy(output + outOffset + 4, &outBytes, 4); /* output length */ - inOffset += length; - outOffset += outBytes + 8; - } - } - if (outOffset + 8 > outSize) return -5; - memset(output + outOffset, 0, 4); - memset(output + outOffset + 4, 0, 4); - return 0; -} - -/* Returns non-zero on failure. Not a safe function. */ -int test_decompress(const char *uncompressed, const char *compressed) -{ - char outBufferA[1024]; - char spacing; /* So prefixEnd != dest */ - char outBufferB[1024]; - char *output = outBufferA; - char *lastOutput = outBufferB; - LZ4_streamDecode_t lz4StreamDecode_body = { 0 }; - LZ4_streamDecode_t* lz4StreamDecode = &lz4StreamDecode_body; - int offset = 0; - int unOffset = 0; - int lastBytes = 0; - - (void)spacing; - - for(;;) { - int32_t bytes; - int32_t unBytes; - /* Read uncompressed size and compressed size */ - memcpy(&unBytes, compressed + offset, 4); - memcpy(&bytes, compressed + offset + 4, 4); - offset += 8; - /* Check if we reached end of stream or error */ - if(bytes == 0 && unBytes == 0) return 0; - if(bytes <= 0 || unBytes <= 0 || unBytes > 1024) return 1; - - /* Put the last output in the dictionary */ - LZ4_setStreamDecode(lz4StreamDecode, lastOutput, lastBytes); - /* Decompress */ - bytes = LZ4_decompress_fast_continue( - lz4StreamDecode, compressed + offset, output, unBytes); - if(bytes <= 0) return 2; - /* Check result */ - { int const r = memcmp(uncompressed + unOffset, output, unBytes); - if (r) return 3; - } - { char* const tmp = output; output = lastOutput; lastOutput = tmp; } - offset += bytes; - unOffset += unBytes; - lastBytes = unBytes; - } -} - - -int main(int argc, char **argv) -{ - char input[] = - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello!" - "Hello Hello Hello Hello Hello Hello Hello Hello"; - char output[LZ4_COMPRESSBOUND(4096)]; - int r; - - (void)argc; - (void)argv; - - if ((r = test_compress(input, sizeof(input), output, sizeof(output)))) { - return r; - } - if ((r = test_decompress(input, output))) { - return r; - } - return 0; -} |