1*27162e4eSAndroid Build Coastguard Worker#!/bin/sh 2*27162e4eSAndroid Build Coastguard Worker 3*27162e4eSAndroid Build Coastguard WorkerFPREFIX="tmp-tlb" 4*27162e4eSAndroid Build Coastguard Worker 5*27162e4eSAndroid Build Coastguard Workerset -e 6*27162e4eSAndroid Build Coastguard Worker 7*27162e4eSAndroid Build Coastguard Workerremove () { 8*27162e4eSAndroid Build Coastguard Worker rm -rf $FPREFIX* 9*27162e4eSAndroid Build Coastguard Worker} 10*27162e4eSAndroid Build Coastguard Worker 11*27162e4eSAndroid Build Coastguard Workertrap remove EXIT 12*27162e4eSAndroid Build Coastguard Worker 13*27162e4eSAndroid Build Coastguard Workerset -x 14*27162e4eSAndroid Build Coastguard Worker 15*27162e4eSAndroid Build Coastguard Workerdatagen -g0 | lz4 -v | lz4 -t 16*27162e4eSAndroid Build Coastguard Workerdatagen -g16KB | lz4 -9 | lz4 -t 17*27162e4eSAndroid Build Coastguard Workerdatagen -g20KB > $FPREFIX-dg20k 18*27162e4eSAndroid Build Coastguard Workerlz4 < $FPREFIX-dg20k | lz4 -d > $FPREFIX-dec 19*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-dg20k $FPREFIX-dec 20*27162e4eSAndroid Build Coastguard Workerlz4 --no-frame-crc < $FPREFIX-dg20k | lz4 -d > $FPREFIX-dec 21*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-dg20k $FPREFIX-dec 22*27162e4eSAndroid Build Coastguard Workerdatagen | lz4 -BI | lz4 -t 23*27162e4eSAndroid Build Coastguard Workerdatagen | lz4 --no-crc | lz4 -t 24*27162e4eSAndroid Build Coastguard Workerdatagen -g6M -P99 | lz4 -9BD | lz4 -t 25*27162e4eSAndroid Build Coastguard Workerdatagen -g17M | lz4 -9v | lz4 -qt 26*27162e4eSAndroid Build Coastguard Workerdatagen -g33M | lz4 --no-frame-crc | lz4 -t 27*27162e4eSAndroid Build Coastguard Workerdatagen -g256MB | lz4 -vqB4D | lz4 -t --no-crc 28*27162e4eSAndroid Build Coastguard Workerecho "hello world" > $FPREFIX-hw 29*27162e4eSAndroid Build Coastguard Workerlz4 --rm -f $FPREFIX-hw $FPREFIX-hw.lz4 30*27162e4eSAndroid Build Coastguard Workertest ! -f $FPREFIX-hw # must fail (--rm) 31*27162e4eSAndroid Build Coastguard Workertest -f $FPREFIX-hw.lz4 32*27162e4eSAndroid Build Coastguard Workerlz4 -d --rm -f $FPREFIX-hw.lz4 33*27162e4eSAndroid Build Coastguard Workertest ! -f $FPREFIX-hw.lz4 34*27162e4eSAndroid Build Coastguard Workerlz4 --rm -f $FPREFIX-hw > /dev/null 35*27162e4eSAndroid Build Coastguard Workertest -f $FPREFIX-hw.lz4 # no more implicit stdout 36*27162e4eSAndroid Build Coastguard Workerlz4cat $FPREFIX-hw.lz4 | grep "hello world" 37*27162e4eSAndroid Build Coastguard Workerunlz4 --rm $FPREFIX-hw.lz4 $FPREFIX-hw 38*27162e4eSAndroid Build Coastguard Workertest -f $FPREFIX-hw 39*27162e4eSAndroid Build Coastguard Workertest ! -f $FPREFIX-hw.lz4 # must fail (--rm) 40*27162e4eSAndroid Build Coastguard Workertest ! -f $FPREFIX-hw.lz4.lz4 # must fail (unlz4) 41*27162e4eSAndroid Build Coastguard Workerlz4cat $FPREFIX-hw # pass-through mode 42*27162e4eSAndroid Build Coastguard Workertest -f $FPREFIX-hw 43*27162e4eSAndroid Build Coastguard Workertest ! -f $FPREFIX-hw.lz4 # must fail (lz4cat) 44*27162e4eSAndroid Build Coastguard Workerlz4 $FPREFIX-hw $FPREFIX-hw.lz4 # creates $FPREFIX-hw.lz4 45*27162e4eSAndroid Build Coastguard Workerlz4cat < $FPREFIX-hw.lz4 > ${FPREFIX}3 # checks lz4cat works with stdin (#285) 46*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-hw ${FPREFIX}3 47*27162e4eSAndroid Build Coastguard Workerlz4cat < $FPREFIX-hw > ${FPREFIX}2 # checks lz4cat works in pass-through mode 48*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-hw ${FPREFIX}2 49*27162e4eSAndroid Build Coastguard Workercp $FPREFIX-hw ./-d 50*27162e4eSAndroid Build Coastguard Workerlz4 --rm -- -d -d.lz4 # compresses ./d into ./-d.lz4 51*27162e4eSAndroid Build Coastguard Workertest -f ./-d.lz4 52*27162e4eSAndroid Build Coastguard Workertest ! -f ./-d 53*27162e4eSAndroid Build Coastguard Workermv ./-d.lz4 ./-z 54*27162e4eSAndroid Build Coastguard Workerlz4 -d --rm -- -z ${FPREFIX}4 # uncompresses ./-z into $FPREFIX4 55*27162e4eSAndroid Build Coastguard Workertest ! -f ./-z 56*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-hw ${FPREFIX}4 57*27162e4eSAndroid Build Coastguard Workerlz4 ${FPREFIX}2 ${FPREFIX}3 ${FPREFIX}4 && exit 1 # must fail: refuse to handle 3+ file names 58*27162e4eSAndroid Build Coastguard Workermkdir -p ${FPREFIX}-dir 59*27162e4eSAndroid Build Coastguard Workerlz4 ${FPREFIX}-dir && exit 1 # must fail: refuse to compress directory 60*27162e4eSAndroid Build Coastguard Workertest ! -f ${FPREFIX}-dir.lz4 # must not create artifact (#1211) 61*27162e4eSAndroid Build Coastguard Workerlz4 -f $FPREFIX-hw # create $FPREFIX-hw.lz4, for next tests 62*27162e4eSAndroid Build Coastguard Workerlz4 --list $FPREFIX-hw.lz4 # test --list on valid single-frame file 63*27162e4eSAndroid Build Coastguard Workerlz4 --list < $FPREFIX-hw.lz4 # test --list from stdin (file only) 64*27162e4eSAndroid Build Coastguard Workercat $FPREFIX-hw >> $FPREFIX-hw.lz4 65*27162e4eSAndroid Build Coastguard Workerlz4 -f $FPREFIX-hw.lz4 && exit 1 # uncompress valid frame followed by invalid data (must fail now) 66*27162e4eSAndroid Build Coastguard Workerlz4 -BX $FPREFIX-hw -c -q | lz4 -tv # test block checksum 67*27162e4eSAndroid Build Coastguard Worker# datagen -g20KB generates the same file every single time 68*27162e4eSAndroid Build Coastguard Worker# cannot save output of datagen -g20KB as input file to lz4 because the following shell commands are run before datagen -g20KB 69*27162e4eSAndroid Build Coastguard Workertest "$(datagen -g20KB | lz4 -c --fast | wc -c)" -lt "$(datagen -g20KB | lz4 -c --fast=9 | wc -c)" # -1 vs -9 70*27162e4eSAndroid Build Coastguard Workertest "$(datagen -g20KB | lz4 -c -1 | wc -c)" -lt "$(datagen -g20KB| lz4 -c --fast=1 | wc -c)" # 1 vs -1 71*27162e4eSAndroid Build Coastguard Workertest "$(datagen -g20KB | lz4 -c --fast=1 | wc -c)" -eq "$(datagen -g20KB| lz4 -c --fast| wc -c)" # checks default fast compression is -1 72*27162e4eSAndroid Build Coastguard Workerlz4 -c --fast=0 $FPREFIX-dg20K && exit 1 # lz4 should fail when fast=0 73*27162e4eSAndroid Build Coastguard Workerlz4 -c --fast=-1 $FPREFIX-dg20K && exit 1 # lz4 should fail when fast=-1 74*27162e4eSAndroid Build Coastguard Worker# Multithreading commands 75*27162e4eSAndroid Build Coastguard Workerdatagen -g16M | lz4 -T2 | lz4 -t 76*27162e4eSAndroid Build Coastguard Workerdatagen -g16M | lz4 --threads=2 | lz4 -t 77*27162e4eSAndroid Build Coastguard Worker# High --fast values can result in out-of-bound dereferences #876 78*27162e4eSAndroid Build Coastguard Workerdatagen -g1M | lz4 -c --fast=999999999 > $FPREFIX-trash 79*27162e4eSAndroid Build Coastguard Worker# Test for #596 80*27162e4eSAndroid Build Coastguard Workerecho "TEST" > $FPREFIX-test 81*27162e4eSAndroid Build Coastguard Workerlz4 -m $FPREFIX-test 82*27162e4eSAndroid Build Coastguard Workerlz4 $FPREFIX-test.lz4 $FPREFIX-test2 83*27162e4eSAndroid Build Coastguard Workerdiff -q $FPREFIX-test $FPREFIX-test2 84*27162e4eSAndroid Build Coastguard Worker# bug #1374 85*27162e4eSAndroid Build Coastguard Workerdatagen -g4194302 | lz4 -B4 -c > $FPREFIX-test3 86