dejsem.1.5/unix/test.sh
author hh
Wed, 27 Nov 2019 09:50:16 +0100
changeset 0 676905a3b03c
permissions -rwxr-xr-x
--
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
hh
parents:
diff changeset
     1
#!/bin/bash
hh
parents:
diff changeset
     2
base=$(dirname $0)
hh
parents:
diff changeset
     3
P=dejsem
hh
parents:
diff changeset
     4
DEB=${DEB:-4}
hh
parents:
diff changeset
     5
CHAN=${CHAN:-2}
hh
parents:
diff changeset
     6
HOST=${HOST:-racek.hh.cz}
hh
parents:
diff changeset
     7
export DEB CHAN HOST
hh
parents:
diff changeset
     8
xclip="xclip -selection clipboard"
hh
parents:
diff changeset
     9
eta="tplzKrx6tž88ČJGlŘeMf."
hh
parents:
diff changeset
    10
tmp=/tmp/dejsem
hh
parents:
diff changeset
    11
tmpf=$tmp/file
hh
parents:
diff changeset
    12
tmpd=$tmp/dir
hh
parents:
diff changeset
    13
hh
parents:
diff changeset
    14
red="\e[1;31m"
hh
parents:
diff changeset
    15
green="\e[1;32m"
hh
parents:
diff changeset
    16
std="\e[0;39m"
hh
parents:
diff changeset
    17
hh
parents:
diff changeset
    18
help() {
hh
parents:
diff changeset
    19
	n=$(basename $0)
hh
parents:
diff changeset
    20
	echo -e "syntax:"
hh
parents:
diff changeset
    21
	echo -e "\t$n clip { short | long }"
hh
parents:
diff changeset
    22
	echo -e "\t$n hist"
hh
parents:
diff changeset
    23
	echo -e "\t$n srv  { short | long | dir }"
hh
parents:
diff changeset
    24
	echo -e "\t$n peer { short | long | dir }"
hh
parents:
diff changeset
    25
	echo -e "\t$n all"
hh
parents:
diff changeset
    26
	echo 
hh
parents:
diff changeset
    27
	echo ENVIRONMENT:
hh
parents:
diff changeset
    28
	echo DEB=0-5
hh
parents:
diff changeset
    29
	echo HOST="<server>"
hh
parents:
diff changeset
    30
	echo SSL="<path to ssl repository>"
hh
parents:
diff changeset
    31
	exit 1
hh
parents:
diff changeset
    32
}
hh
parents:
diff changeset
    33
hh
parents:
diff changeset
    34
clean() { rm -rf /tmp/dejsem; }
hh
parents:
diff changeset
    35
hh
parents:
diff changeset
    36
etalon() {
hh
parents:
diff changeset
    37
#----------------------------------------
hh
parents:
diff changeset
    38
#	create etalon file of specified size
hh
parents:
diff changeset
    39
#----------------------------------------
hh
parents:
diff changeset
    40
	mkdir -p $tmpf/chk
hh
parents:
diff changeset
    41
	rm -f $tmpf/etalon
hh
parents:
diff changeset
    42
	echo -n $eta >$tmpf/etalon
hh
parents:
diff changeset
    43
	cat $tmpf/etalon >$tmpf/f
hh
parents:
diff changeset
    44
	for i in `seq $1`
hh
parents:
diff changeset
    45
	do	cat $tmpf/etalon >> $tmpf/f
hh
parents:
diff changeset
    46
		cat $tmpf/f >> $tmpf/etalon
hh
parents:
diff changeset
    47
	done
hh
parents:
diff changeset
    48
	[[ $# -gt 1 ]] && echo -n "$2 " | cat - $tmp/f >$tmpf/etalon
hh
parents:
diff changeset
    49
	touch -r /etc $tmpf/etalon
hh
parents:
diff changeset
    50
	( cd $tmpf; ls -l etalon >chk/0.stat; )
hh
parents:
diff changeset
    51
}
hh
parents:
diff changeset
    52
hh
parents:
diff changeset
    53
etadir() {
hh
parents:
diff changeset
    54
#----------------------------------------
hh
parents:
diff changeset
    55
#	create etalon directory
hh
parents:
diff changeset
    56
#----------------------------------------
hh
parents:
diff changeset
    57
	mkdir -p $tmpd/chk
hh
parents:
diff changeset
    58
	rm -rf $tmpd/etalon
hh
parents:
diff changeset
    59
	mkdir -p $tmpd/etalon/d/alev
hh
parents:
diff changeset
    60
	mkdir -p $tmpd/etalon/epol
hh
parents:
diff changeset
    61
	
hh
parents:
diff changeset
    62
	etalon 3
hh
parents:
diff changeset
    63
	cp $tmpf/etalon $tmpd/etalon/f0
hh
parents:
diff changeset
    64
	touch -r /etc $tmpd/etalon/f0
hh
parents:
diff changeset
    65
	cp $tmpf/etalon $tmpd/etalon/d/f1
hh
parents:
diff changeset
    66
	
hh
parents:
diff changeset
    67
	etalon 5
hh
parents:
diff changeset
    68
	cp $tmpf/etalon $tmpd/etalon/epol/f2
hh
parents:
diff changeset
    69
	touch -r /lib $tmpd/etalon/epol/f2
hh
parents:
diff changeset
    70
	cp $tmpf/etalon $tmpd/etalon/d/alev/f3
hh
parents:
diff changeset
    71
	touch -r /usr/lib $tmpd/etalon/d/alev/f3
hh
parents:
diff changeset
    72
	
hh
parents:
diff changeset
    73
	touch -r /home $tmpd/etalon/d/alev
hh
parents:
diff changeset
    74
	touch -r /bin $tmpd/etalon/epol
hh
parents:
diff changeset
    75
	touch -r /usr $tmpd/etalon
hh
parents:
diff changeset
    76
	
hh
parents:
diff changeset
    77
	( 	cd $tmpd		
hh
parents:
diff changeset
    78
		zip -qr chk/0.zip etalon
hh
parents:
diff changeset
    79
		set - $(du -sbx etalon)
hh
parents:
diff changeset
    80
		echo $1 >chk/0.size
hh
parents:
diff changeset
    81
		ls -R etalon >chk/0.list
hh
parents:
diff changeset
    82
		ls -lR etalon >chk/0.stat
hh
parents:
diff changeset
    83
	)
hh
parents:
diff changeset
    84
}
hh
parents:
diff changeset
    85
hh
parents:
diff changeset
    86
say() {
hh
parents:
diff changeset
    87
	echo -e $*
hh
parents:
diff changeset
    88
	echo
hh
parents:
diff changeset
    89
}
hh
parents:
diff changeset
    90
hh
parents:
diff changeset
    91
chkdir() {
hh
parents:
diff changeset
    92
#----------------------------------------
hh
parents:
diff changeset
    93
#	compare sent and received etalon directory
hh
parents:
diff changeset
    94
#----------------------------------------
hh
parents:
diff changeset
    95
(	cd $tmpd/chk
hh
parents:
diff changeset
    96
	zip -qr 1.zip etalon || return 1
hh
parents:
diff changeset
    97
	set - $(du -sbx etalon)
hh
parents:
diff changeset
    98
	echo $1 >1.size
hh
parents:
diff changeset
    99
	ls -R etalon >1.list
hh
parents:
diff changeset
   100
	ls -lR etalon >1.stat
hh
parents:
diff changeset
   101
	
hh
parents:
diff changeset
   102
	if diff 0.list 1.list &>/dev/null
hh
parents:
diff changeset
   103
	then	say file/dir names ${green}OK${std}.
hh
parents:
diff changeset
   104
	else	say original and result file list ${red}differ${std}!!!
hh
parents:
diff changeset
   105
			return 1
hh
parents:
diff changeset
   106
	fi
hh
parents:
diff changeset
   107
	if diff 0.size 1.size &>/dev/null
hh
parents:
diff changeset
   108
	then	say total byte count ${green}OK${std}.
hh
parents:
diff changeset
   109
	else	say original and result byte count ${red}differ${std}!!!
hh
parents:
diff changeset
   110
			return 1
hh
parents:
diff changeset
   111
	fi
hh
parents:
diff changeset
   112
	if diff 0.stat 1.stat &>/dev/null
hh
parents:
diff changeset
   113
	then	say time stamps ${green}OK${std}.
hh
parents:
diff changeset
   114
	else	say original and result time stamps ${red}differ${std}!!!
hh
parents:
diff changeset
   115
			return 1
hh
parents:
diff changeset
   116
	fi
hh
parents:
diff changeset
   117
	if diff 0.zip 1.zip &>/dev/null
hh
parents:
diff changeset
   118
	then	return 0
hh
parents:
diff changeset
   119
	else	say data contents ${red}differ${std}!!!
hh
parents:
diff changeset
   120
			return 1
hh
parents:
diff changeset
   121
	fi		
hh
parents:
diff changeset
   122
)}
hh
parents:
diff changeset
   123
hh
parents:
diff changeset
   124
chkfile() {
hh
parents:
diff changeset
   125
#----------------------------------------
hh
parents:
diff changeset
   126
#	compare sent and received etalon files
hh
parents:
diff changeset
   127
#----------------------------------------
hh
parents:
diff changeset
   128
	if diff $tmpf/etalon $tmpf/chk/etalon
hh
parents:
diff changeset
   129
	then	say content of received file ${green}OK$std.
hh
parents:
diff changeset
   130
	else	say data content ${red}differs${std}!!!
hh
parents:
diff changeset
   131
			return 1
hh
parents:
diff changeset
   132
	fi		
hh
parents:
diff changeset
   133
	( cd $tmpf/chk; ls -l etalon >1.stat; )
hh
parents:
diff changeset
   134
	if diff $tmpf/chk/0.stat $tmpf/chk/1.stat
hh
parents:
diff changeset
   135
	then	say time stamps ${green}OK${std}.
hh
parents:
diff changeset
   136
	else	say original and result time stamps ${red}differ${std}!!!
hh
parents:
diff changeset
   137
			return 1
hh
parents:
diff changeset
   138
	fi
hh
parents:
diff changeset
   139
}
hh
parents:
diff changeset
   140
hh
parents:
diff changeset
   141
clip() {
hh
parents:
diff changeset
   142
#----------------------------------------
hh
parents:
diff changeset
   143
#	test clipboard exchange
hh
parents:
diff changeset
   144
#----------------------------------------
hh
parents:
diff changeset
   145
	[[ $1 ]] || help
hh
parents:
diff changeset
   146
	case $1 in
hh
parents:
diff changeset
   147
		short )	n=2 ;;
hh
parents:
diff changeset
   148
		long )	n=7 ;;
hh
parents:
diff changeset
   149
	esac	
hh
parents:
diff changeset
   150
	etalon $n
hh
parents:
diff changeset
   151
	clf=$tmpf/etalon
hh
parents:
diff changeset
   152
	$xclip -i <$clf
hh
parents:
diff changeset
   153
	$xclip -o >$tmpf/f1
hh
parents:
diff changeset
   154
	cl=$($xclip -o)
hh
parents:
diff changeset
   155
	echo
hh
parents:
diff changeset
   156
	say ">>> clipboard $1: ${#cl} chars >>> $($xclip -o | head -c 66)"
hh
parents:
diff changeset
   157
	$P --push
hh
parents:
diff changeset
   158
	echo
hh
parents:
diff changeset
   159
	read -p ">>> on Android perform pull clipboard "
hh
parents:
diff changeset
   160
	echo
hh
parents:
diff changeset
   161
	echo "" | $xclip -i
hh
parents:
diff changeset
   162
	ssh root@$HOST rm -f "/L/dejsem/$(printf %02d $CHAN)/clipboard"
hh
parents:
diff changeset
   163
	read -p ">>> on Android perform push clipboard "
hh
parents:
diff changeset
   164
	echo
hh
parents:
diff changeset
   165
	$P --pull
hh
parents:
diff changeset
   166
	$xclip -o >$tmpf/f2
hh
parents:
diff changeset
   167
	echo
hh
parents:
diff changeset
   168
    diff $tmpf/f1 $tmpf/f2 && return 0 || return 1
hh
parents:
diff changeset
   169
}
hh
parents:
diff changeset
   170
hh
parents:
diff changeset
   171
hist() {
hh
parents:
diff changeset
   172
#----------------------------------------
hh
parents:
diff changeset
   173
#	test clipboard history
hh
parents:
diff changeset
   174
#----------------------------------------
hh
parents:
diff changeset
   175
	ssh root@$HOST rm -rf "/L/dejsem/$(printf %02d $CHAN)/history"
hh
parents:
diff changeset
   176
	etalon 1
hh
parents:
diff changeset
   177
	echo 1111 entry 1, $(<$tmpf/etalon) | $xclip -i
hh
parents:
diff changeset
   178
	$P --push
hh
parents:
diff changeset
   179
	etalon 3
hh
parents:
diff changeset
   180
	echo 2222 long entry 2, $(<$tmpf/etalon) >$tmpf/chk/0.entry
hh
parents:
diff changeset
   181
	$xclip -i $tmpf/chk/0.entry
hh
parents:
diff changeset
   182
	$P --push
hh
parents:
diff changeset
   183
	etalon 1
hh
parents:
diff changeset
   184
	echo 3333 entry 3, $(<$tmpf/etalon) | $xclip -i
hh
parents:
diff changeset
   185
	$P --push
hh
parents:
diff changeset
   186
	rm -rf ~/.local/share/dejsem/history
hh
parents:
diff changeset
   187
	echo
hh
parents:
diff changeset
   188
	read -p ">>> pulling clipboard history to local host - it should contain 3 entries, hit ENTER "
hh
parents:
diff changeset
   189
	echo
hh
parents:
diff changeset
   190
	$P --pullhist
hh
parents:
diff changeset
   191
	echo
hh
parents:
diff changeset
   192
	read -p ">>> on Android go to clipboard  history and choose \"2222 long entry 2\" "
hh
parents:
diff changeset
   193
	echo
hh
parents:
diff changeset
   194
	read -p ">>> on Android push clipboard "
hh
parents:
diff changeset
   195
	$P --pull
hh
parents:
diff changeset
   196
	$xclip -o >$tmpf/chk/1.entry
hh
parents:
diff changeset
   197
	echo
hh
parents:
diff changeset
   198
    diff $tmpf/chk/0.entry $tmpf/chk/1.entry && return 0 || return 1
hh
parents:
diff changeset
   199
}
hh
parents:
diff changeset
   200
hh
parents:
diff changeset
   201
srv() {
hh
parents:
diff changeset
   202
#----------------------------------------
hh
parents:
diff changeset
   203
#	test file exchange with server
hh
parents:
diff changeset
   204
#----------------------------------------
hh
parents:
diff changeset
   205
	[[ $1 ]] || help
hh
parents:
diff changeset
   206
	if [[ $1 == dir ]]
hh
parents:
diff changeset
   207
	then
hh
parents:
diff changeset
   208
		etadir
hh
parents:
diff changeset
   209
		fp=$tmpd/etalon
hh
parents:
diff changeset
   210
		ssh root@$HOST rm -rf "/L/dejsem/$(printf %02d $CHAN)/files/etalon"
hh
parents:
diff changeset
   211
		say ">>> uploading directory etalon..."
hh
parents:
diff changeset
   212
		$P --pushfile $fp
hh
parents:
diff changeset
   213
		echo
hh
parents:
diff changeset
   214
		read -p ">>> on Android refresh / on server and download directory etalon "
hh
parents:
diff changeset
   215
		echo
hh
parents:
diff changeset
   216
		ssh root@$HOST rm -rf "/L/dejsem/$(printf %02d $CHAN)/files/etalon"
hh
parents:
diff changeset
   217
		echo
hh
parents:
diff changeset
   218
		read -p ">>> on Android upload directory etalon to / on server "
hh
parents:
diff changeset
   219
		echo
hh
parents:
diff changeset
   220
		rm -rf $tmpd/chk/etalon
hh
parents:
diff changeset
   221
		$P --pullfile etalon $tmpd/chk
hh
parents:
diff changeset
   222
		echo
hh
parents:
diff changeset
   223
		chkdir	
hh
parents:
diff changeset
   224
	else
hh
parents:
diff changeset
   225
		case $1 in
hh
parents:
diff changeset
   226
			short )		n=3 ;;
hh
parents:
diff changeset
   227
			long )		n=8 ;;
hh
parents:
diff changeset
   228
		esac	
hh
parents:
diff changeset
   229
		etalon $n
hh
parents:
diff changeset
   230
		fp=$tmpf/etalon
hh
parents:
diff changeset
   231
		ssh root@$HOST rm -rf "/L/dejsem/$(printf %02d $CHAN)/files/etalon"
hh
parents:
diff changeset
   232
		say ">>> uploading file etalon: $(set -- $(ls -lh $fp); echo $5) bytes"
hh
parents:
diff changeset
   233
		$P --pushfile $fp
hh
parents:
diff changeset
   234
		echo
hh
parents:
diff changeset
   235
		read -p ">>> refresh Android server-list and dowload file etalon "
hh
parents:
diff changeset
   236
		ssh root@$HOST rm -rf "/L/dejsem/$(printf %02d $CHAN)/files/etalon"
hh
parents:
diff changeset
   237
		echo
hh
parents:
diff changeset
   238
		read -p ">>> on Android upload file etalon "
hh
parents:
diff changeset
   239
		echo
hh
parents:
diff changeset
   240
		say ">>> downloading file etalon: $(set -- $(ls -lh $fp); echo $5) bytes"
hh
parents:
diff changeset
   241
		rm -rf $tmpf/chk/etalon
hh
parents:
diff changeset
   242
		$P --pullfile etalon $tmpf/chk
hh
parents:
diff changeset
   243
		echo
hh
parents:
diff changeset
   244
		chkfile
hh
parents:
diff changeset
   245
	fi
hh
parents:
diff changeset
   246
}
hh
parents:
diff changeset
   247
hh
parents:
diff changeset
   248
peer() {
hh
parents:
diff changeset
   249
#----------------------------------------
hh
parents:
diff changeset
   250
#	test file exchange with peer
hh
parents:
diff changeset
   251
#----------------------------------------
hh
parents:
diff changeset
   252
	[[ $1 ]] || help
hh
parents:
diff changeset
   253
	if [[ $1 == dir ]]
hh
parents:
diff changeset
   254
	then
hh
parents:
diff changeset
   255
		etadir
hh
parents:
diff changeset
   256
		fp=$tmpd/etalon
hh
parents:
diff changeset
   257
		echo
hh
parents:
diff changeset
   258
		read -p ">>> on Android start pull from peer "
hh
parents:
diff changeset
   259
		echo
hh
parents:
diff changeset
   260
		$P --pushpeer $fp
hh
parents:
diff changeset
   261
		say ">>> on Android copy directory etalon to peer (${red}1 minute TIMEOUT!${std})"
hh
parents:
diff changeset
   262
		rm -rf $tmpd/chk/etalon
hh
parents:
diff changeset
   263
		$P --pullpeer $tmpd/chk
hh
parents:
diff changeset
   264
		echo
hh
parents:
diff changeset
   265
		chkdir
hh
parents:
diff changeset
   266
	else
hh
parents:
diff changeset
   267
		case $1 in
hh
parents:
diff changeset
   268
			short )		n=3 ;;
hh
parents:
diff changeset
   269
			long )		n=13 ;;
hh
parents:
diff changeset
   270
		esac	
hh
parents:
diff changeset
   271
		etalon $n
hh
parents:
diff changeset
   272
		read -p ">>> on Android start pull from peer "
hh
parents:
diff changeset
   273
		echo
hh
parents:
diff changeset
   274
		$P --pushpeer $tmpd/etalon
hh
parents:
diff changeset
   275
		echo
hh
parents:
diff changeset
   276
		say ">>> on Android copy file etalon to peer (${red}1 minute TIMEOUT${std})"
hh
parents:
diff changeset
   277
		rm -rf $tmpf/chk/etalon
hh
parents:
diff changeset
   278
		$P --pullpeer $tmpf/chk
hh
parents:
diff changeset
   279
		echo
hh
parents:
diff changeset
   280
		chkfile
hh
parents:
diff changeset
   281
	fi
hh
parents:
diff changeset
   282
}
hh
parents:
diff changeset
   283
hh
parents:
diff changeset
   284
tst() {
hh
parents:
diff changeset
   285
#----------------------------------------
hh
parents:
diff changeset
   286
#	run specified test
hh
parents:
diff changeset
   287
#----------------------------------------
hh
parents:
diff changeset
   288
	x=y 
hh
parents:
diff changeset
   289
	while [[ $x == y ]]; do
hh
parents:
diff changeset
   290
		echo
hh
parents:
diff changeset
   291
		echo "*----------------------------------------"
hh
parents:
diff changeset
   292
		echo "* $*"
hh
parents:
diff changeset
   293
		echo "*----------------------------------------"
hh
parents:
diff changeset
   294
		echo
hh
parents:
diff changeset
   295
		$* &&  say "${green}>>> OK${std}" || say "${red}>>> orig & result don't compare !!!${std}"
hh
parents:
diff changeset
   296
		read -p  ">>> repaeat the test? y/N " x
hh
parents:
diff changeset
   297
	done	
hh
parents:
diff changeset
   298
}
hh
parents:
diff changeset
   299
hh
parents:
diff changeset
   300
all() {
hh
parents:
diff changeset
   301
#----------------------------------------
hh
parents:
diff changeset
   302
#	run all tests
hh
parents:
diff changeset
   303
#----------------------------------------
hh
parents:
diff changeset
   304
	tst clip short
hh
parents:
diff changeset
   305
	tst srv dir
hh
parents:
diff changeset
   306
	tst clip long
hh
parents:
diff changeset
   307
	tst srv short
hh
parents:
diff changeset
   308
	tst srv long
hh
parents:
diff changeset
   309
	tst peer short
hh
parents:
diff changeset
   310
	tst peer long
hh
parents:
diff changeset
   311
	tst peer dir
hh
parents:
diff changeset
   312
}
hh
parents:
diff changeset
   313
hh
parents:
diff changeset
   314
trap clean exit
hh
parents:
diff changeset
   315
clean
hh
parents:
diff changeset
   316
mkdir -p $tmp
hh
parents:
diff changeset
   317
hh
parents:
diff changeset
   318
[[ $1 == all ]] && {
hh
parents:
diff changeset
   319
	all
hh
parents:
diff changeset
   320
	exit
hh
parents:
diff changeset
   321
	}
hh
parents:
diff changeset
   322
	
hh
parents:
diff changeset
   323
(($#)) && {
hh
parents:
diff changeset
   324
	[[ $# -lt 1 ]] && help
hh
parents:
diff changeset
   325
	tst $*
hh
parents:
diff changeset
   326
	exit
hh
parents:
diff changeset
   327
0	}
hh
parents:
diff changeset
   328
hh
parents:
diff changeset
   329
help
hh
parents:
diff changeset
   330
10