diff -r 000000000000 -r 676905a3b03c dejsem.1.5/unix/test.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dejsem.1.5/unix/test.sh Wed Nov 27 09:50:16 2019 +0100 @@ -0,0 +1,330 @@ +#!/bin/bash +base=$(dirname $0) +P=dejsem +DEB=${DEB:-4} +CHAN=${CHAN:-2} +HOST=${HOST:-racek.hh.cz} +export DEB CHAN HOST +xclip="xclip -selection clipboard" +eta="tplzKrx6tž88ČJGlŘeMf." +tmp=/tmp/dejsem +tmpf=$tmp/file +tmpd=$tmp/dir + +red="\e[1;31m" +green="\e[1;32m" +std="\e[0;39m" + +help() { + n=$(basename $0) + echo -e "syntax:" + echo -e "\t$n clip { short | long }" + echo -e "\t$n hist" + echo -e "\t$n srv { short | long | dir }" + echo -e "\t$n peer { short | long | dir }" + echo -e "\t$n all" + echo + echo ENVIRONMENT: + echo DEB=0-5 + echo HOST="" + echo SSL="" + exit 1 +} + +clean() { rm -rf /tmp/dejsem; } + +etalon() { +#---------------------------------------- +# create etalon file of specified size +#---------------------------------------- + mkdir -p $tmpf/chk + rm -f $tmpf/etalon + echo -n $eta >$tmpf/etalon + cat $tmpf/etalon >$tmpf/f + for i in `seq $1` + do cat $tmpf/etalon >> $tmpf/f + cat $tmpf/f >> $tmpf/etalon + done + [[ $# -gt 1 ]] && echo -n "$2 " | cat - $tmp/f >$tmpf/etalon + touch -r /etc $tmpf/etalon + ( cd $tmpf; ls -l etalon >chk/0.stat; ) +} + +etadir() { +#---------------------------------------- +# create etalon directory +#---------------------------------------- + mkdir -p $tmpd/chk + rm -rf $tmpd/etalon + mkdir -p $tmpd/etalon/d/alev + mkdir -p $tmpd/etalon/epol + + etalon 3 + cp $tmpf/etalon $tmpd/etalon/f0 + touch -r /etc $tmpd/etalon/f0 + cp $tmpf/etalon $tmpd/etalon/d/f1 + + etalon 5 + cp $tmpf/etalon $tmpd/etalon/epol/f2 + touch -r /lib $tmpd/etalon/epol/f2 + cp $tmpf/etalon $tmpd/etalon/d/alev/f3 + touch -r /usr/lib $tmpd/etalon/d/alev/f3 + + touch -r /home $tmpd/etalon/d/alev + touch -r /bin $tmpd/etalon/epol + touch -r /usr $tmpd/etalon + + ( cd $tmpd + zip -qr chk/0.zip etalon + set - $(du -sbx etalon) + echo $1 >chk/0.size + ls -R etalon >chk/0.list + ls -lR etalon >chk/0.stat + ) +} + +say() { + echo -e $* + echo +} + +chkdir() { +#---------------------------------------- +# compare sent and received etalon directory +#---------------------------------------- +( cd $tmpd/chk + zip -qr 1.zip etalon || return 1 + set - $(du -sbx etalon) + echo $1 >1.size + ls -R etalon >1.list + ls -lR etalon >1.stat + + if diff 0.list 1.list &>/dev/null + then say file/dir names ${green}OK${std}. + else say original and result file list ${red}differ${std}!!! + return 1 + fi + if diff 0.size 1.size &>/dev/null + then say total byte count ${green}OK${std}. + else say original and result byte count ${red}differ${std}!!! + return 1 + fi + if diff 0.stat 1.stat &>/dev/null + then say time stamps ${green}OK${std}. + else say original and result time stamps ${red}differ${std}!!! + return 1 + fi + if diff 0.zip 1.zip &>/dev/null + then return 0 + else say data contents ${red}differ${std}!!! + return 1 + fi +)} + +chkfile() { +#---------------------------------------- +# compare sent and received etalon files +#---------------------------------------- + if diff $tmpf/etalon $tmpf/chk/etalon + then say content of received file ${green}OK$std. + else say data content ${red}differs${std}!!! + return 1 + fi + ( cd $tmpf/chk; ls -l etalon >1.stat; ) + if diff $tmpf/chk/0.stat $tmpf/chk/1.stat + then say time stamps ${green}OK${std}. + else say original and result time stamps ${red}differ${std}!!! + return 1 + fi +} + +clip() { +#---------------------------------------- +# test clipboard exchange +#---------------------------------------- + [[ $1 ]] || help + case $1 in + short ) n=2 ;; + long ) n=7 ;; + esac + etalon $n + clf=$tmpf/etalon + $xclip -i <$clf + $xclip -o >$tmpf/f1 + cl=$($xclip -o) + echo + say ">>> clipboard $1: ${#cl} chars >>> $($xclip -o | head -c 66)" + $P --push + echo + read -p ">>> on Android perform pull clipboard " + echo + echo "" | $xclip -i + ssh root@$HOST rm -f "/L/dejsem/$(printf %02d $CHAN)/clipboard" + read -p ">>> on Android perform push clipboard " + echo + $P --pull + $xclip -o >$tmpf/f2 + echo + diff $tmpf/f1 $tmpf/f2 && return 0 || return 1 +} + +hist() { +#---------------------------------------- +# test clipboard history +#---------------------------------------- + ssh root@$HOST rm -rf "/L/dejsem/$(printf %02d $CHAN)/history" + etalon 1 + echo 1111 entry 1, $(<$tmpf/etalon) | $xclip -i + $P --push + etalon 3 + echo 2222 long entry 2, $(<$tmpf/etalon) >$tmpf/chk/0.entry + $xclip -i $tmpf/chk/0.entry + $P --push + etalon 1 + echo 3333 entry 3, $(<$tmpf/etalon) | $xclip -i + $P --push + rm -rf ~/.local/share/dejsem/history + echo + read -p ">>> pulling clipboard history to local host - it should contain 3 entries, hit ENTER " + echo + $P --pullhist + echo + read -p ">>> on Android go to clipboard history and choose \"2222 long entry 2\" " + echo + read -p ">>> on Android push clipboard " + $P --pull + $xclip -o >$tmpf/chk/1.entry + echo + diff $tmpf/chk/0.entry $tmpf/chk/1.entry && return 0 || return 1 +} + +srv() { +#---------------------------------------- +# test file exchange with server +#---------------------------------------- + [[ $1 ]] || help + if [[ $1 == dir ]] + then + etadir + fp=$tmpd/etalon + ssh root@$HOST rm -rf "/L/dejsem/$(printf %02d $CHAN)/files/etalon" + say ">>> uploading directory etalon..." + $P --pushfile $fp + echo + read -p ">>> on Android refresh / on server and download directory etalon " + echo + ssh root@$HOST rm -rf "/L/dejsem/$(printf %02d $CHAN)/files/etalon" + echo + read -p ">>> on Android upload directory etalon to / on server " + echo + rm -rf $tmpd/chk/etalon + $P --pullfile etalon $tmpd/chk + echo + chkdir + else + case $1 in + short ) n=3 ;; + long ) n=8 ;; + esac + etalon $n + fp=$tmpf/etalon + ssh root@$HOST rm -rf "/L/dejsem/$(printf %02d $CHAN)/files/etalon" + say ">>> uploading file etalon: $(set -- $(ls -lh $fp); echo $5) bytes" + $P --pushfile $fp + echo + read -p ">>> refresh Android server-list and dowload file etalon " + ssh root@$HOST rm -rf "/L/dejsem/$(printf %02d $CHAN)/files/etalon" + echo + read -p ">>> on Android upload file etalon " + echo + say ">>> downloading file etalon: $(set -- $(ls -lh $fp); echo $5) bytes" + rm -rf $tmpf/chk/etalon + $P --pullfile etalon $tmpf/chk + echo + chkfile + fi +} + +peer() { +#---------------------------------------- +# test file exchange with peer +#---------------------------------------- + [[ $1 ]] || help + if [[ $1 == dir ]] + then + etadir + fp=$tmpd/etalon + echo + read -p ">>> on Android start pull from peer " + echo + $P --pushpeer $fp + say ">>> on Android copy directory etalon to peer (${red}1 minute TIMEOUT!${std})" + rm -rf $tmpd/chk/etalon + $P --pullpeer $tmpd/chk + echo + chkdir + else + case $1 in + short ) n=3 ;; + long ) n=13 ;; + esac + etalon $n + read -p ">>> on Android start pull from peer " + echo + $P --pushpeer $tmpd/etalon + echo + say ">>> on Android copy file etalon to peer (${red}1 minute TIMEOUT${std})" + rm -rf $tmpf/chk/etalon + $P --pullpeer $tmpf/chk + echo + chkfile + fi +} + +tst() { +#---------------------------------------- +# run specified test +#---------------------------------------- + x=y + while [[ $x == y ]]; do + echo + echo "*----------------------------------------" + echo "* $*" + echo "*----------------------------------------" + echo + $* && say "${green}>>> OK${std}" || say "${red}>>> orig & result don't compare !!!${std}" + read -p ">>> repaeat the test? y/N " x + done +} + +all() { +#---------------------------------------- +# run all tests +#---------------------------------------- + tst clip short + tst srv dir + tst clip long + tst srv short + tst srv long + tst peer short + tst peer long + tst peer dir +} + +trap clean exit +clean +mkdir -p $tmp + +[[ $1 == all ]] && { + all + exit + } + +(($#)) && { + [[ $# -lt 1 ]] && help + tst $* + exit +0 } + +help +10 \ No newline at end of file