diff options
Diffstat (limited to 'release/src/router/busybox/shell/hush_test/hush-z_slow')
12 files changed, 417 insertions, 0 deletions
diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all1.right b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all1.right new file mode 100644 index 00000000..c6f0334f --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all1.right @@ -0,0 +1,3 @@ +Warm up +Measuring memory leak... +Ok diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all1.tests b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all1.tests new file mode 100755 index 00000000..21fdb0d1 --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all1.tests @@ -0,0 +1,145 @@ +# "Check many leaks" test #1 +# Cramming all kinds of weird commands in here. +# As you find leaks, please create separate, small test +# for each leak. +# Narrowing down the leak using this large test may be difficult. +# It is intended to be a blanket "is everything ok?" test + +echo "Warm up" +i=1 +l=1 +t=1 +export t +while test $i != 99; do + t=value1_$i; t=value2_$i true; t=value3_$i /bin/true; t=value4_$i exec 1>&1 + { t=value3_$i /bin/true; } </dev/null + if true; t=valueA_$i false >>/dev/null; true; then + : << HERE >/dev/null; true <<HERE +Hello builtin : +HERE +Hello $i true +HERE + elif false; then + true; echo Doesnt run + else + { true; }; echo Doesnt run too >>/foo/bar + fi + { : /bin/*; } + unset var + echo >/dev/null ${var#} + echo >/dev/null ${var##} + echo >/dev/null ${var#*} + echo >/dev/null ${var##*} + echo >/dev/null ${var%} + echo >/dev/null ${var%%} + echo >/dev/null ${var%*} + echo >/dev/null ${var%%*} + var= + echo >/dev/null ${var#} + echo >/dev/null ${var##} + echo >/dev/null ${var#*} + echo >/dev/null ${var##*} + echo >/dev/null ${var%} + echo >/dev/null ${var%%} + echo >/dev/null ${var%*} + echo >/dev/null ${var%%*} + var=ababcdcd + echo >/dev/null ${var#ab} + echo >/dev/null ${var##ab} + echo >/dev/null ${var#a*b} + echo >/dev/null ${var##a*b} + echo >/dev/null ${var#?} + echo >/dev/null ${var##?} + echo >/dev/null ${var#*} + echo >/dev/null ${var##*} + echo >/dev/null ${var%cd} + echo >/dev/null ${var%%cd} + echo >/dev/null ${var%c*d} + echo >/dev/null ${var%%c*d} + echo >/dev/null ${var%?} + echo >/dev/null ${var%%?} + echo >/dev/null ${var%*} + echo >/dev/null ${var%%*} + set -- par1_$i par2_$i par3_$i par4_$i + trap "echo trap$i" WINCH + f() { true; true; true; true; true; true; true; true; } + f() { true; true; true; true; true; true; true; true; echo $1; } + f >/dev/null + : $((i++)) +done + +memleak + +echo "Measuring memory leak..." +# Please copy the entire block from above verbatim +i=1 +l=1 +t=1 +export t +while test $i != 99; do + t=value1_$i; t=value2_$i true; t=value3_$i /bin/true; t=value4_$i exec 1>&1 + { t=value3_$i /bin/true; } </dev/null + if true; t=valueA_$i false >>/dev/null; true; then + : << HERE >/dev/null; true <<HERE +Hello builtin : +HERE +Hello $i true +HERE + elif false; then + true; echo Doesnt run + else + { true; }; echo Doesnt run too >>/foo/bar + fi + { : /bin/*; } + unset var + echo >/dev/null ${var#} + echo >/dev/null ${var##} + echo >/dev/null ${var#*} + echo >/dev/null ${var##*} + echo >/dev/null ${var%} + echo >/dev/null ${var%%} + echo >/dev/null ${var%*} + echo >/dev/null ${var%%*} + var= + echo >/dev/null ${var#} + echo >/dev/null ${var##} + echo >/dev/null ${var#*} + echo >/dev/null ${var##*} + echo >/dev/null ${var%} + echo >/dev/null ${var%%} + echo >/dev/null ${var%*} + echo >/dev/null ${var%%*} + var=ababcdcd + echo >/dev/null ${var#ab} + echo >/dev/null ${var##ab} + echo >/dev/null ${var#a*b} + echo >/dev/null ${var##a*b} + echo >/dev/null ${var#?} + echo >/dev/null ${var##?} + echo >/dev/null ${var#*} + echo >/dev/null ${var##*} + echo >/dev/null ${var%cd} + echo >/dev/null ${var%%cd} + echo >/dev/null ${var%c*d} + echo >/dev/null ${var%%c*d} + echo >/dev/null ${var%?} + echo >/dev/null ${var%%?} + echo >/dev/null ${var%*} + echo >/dev/null ${var%%*} + set -- par1_$i par2_$i par3_$i par4_$i + trap "echo trap$i" WINCH + f() { true; true; true; true; true; true; true; true; } + f() { true; true; true; true; true; true; true; true; echo $1; } + f >/dev/null + : $((i++)) +done + + +memleak +kb=$? +# Observed some variability, bumped to 12k +if test $kb -le 12; then + echo Ok #$kb +else + echo "Bad: $kb kb (or more) leaked" +fi diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all2.right b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all2.right new file mode 100644 index 00000000..c6f0334f --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all2.right @@ -0,0 +1,3 @@ +Warm up +Measuring memory leak... +Ok diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all2.tests b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all2.tests new file mode 100755 index 00000000..d51ea806 --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_all2.tests @@ -0,0 +1,93 @@ +# "Check many leaks" test #2 +# Cramming all kinds of weird commands in here. +# As you find leaks, please create separate, small test +# for each leak. +# Narrowing down the leak using this large test may be difficult. +# It is intended to be a blanket "is everything ok?" test + +echo "Warm up" +local_var="local val" +export dev_null="/dev/null" +>$dev_null +echo hi1 $local_var `echo ho` >>/dev/null +echo hi2 $local_var </dev/null | echo 2>&- | cat 1<>/dev/null +{ echo hi4 $local_var `echo ho` 1<>/dev/null; } +( echo hi4 $local_var `echo ho` 1<>/dev/null ) +if echo $local_var; false + then echo not run + elif false <$dev_null + then none + else cat 0<>$dev_null 1<>"$dev_null" +fi >>/dev/null +{ + if echo $local_var; then cat <<HERE +Hi cat +HERE + fi >>/dev/null +} 1<>/dev/null +while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done +( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null +f() { echo $1; } +f >/dev/null + +memleak + +echo "Measuring memory leak..." +# Please copy the entire block from above verbatim +local_var="local val" +export dev_null="/dev/null" +>$dev_null +echo hi1 $local_var `echo ho` >>/dev/null +echo hi2 $local_var </dev/null | echo 2>&- | cat 1<>/dev/null +{ echo hi4 $local_var `echo ho` 1<>/dev/null; } +( echo hi4 $local_var `echo ho` 1<>/dev/null ) +if echo $local_var; false + then echo not run + elif false <$dev_null + then none + else cat 0<>$dev_null 1<>"$dev_null" +fi >>/dev/null +{ + if echo $local_var; then cat <<HERE +Hi cat +HERE + fi >>/dev/null +} 1<>/dev/null +while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done +( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null +f() { echo $1; } +f >/dev/null + +# And same again + +local_var="local val" +export dev_null="/dev/null" +>$dev_null +echo hi1 $local_var `echo ho` >>/dev/null +echo hi2 $local_var </dev/null | echo 2>&- | cat 1<>/dev/null +{ echo hi4 $local_var `echo ho` 1<>/dev/null; } +( echo hi4 $local_var `echo ho` 1<>/dev/null ) +if echo $local_var; false + then echo not run + elif false <$dev_null + then none + else cat 0<>$dev_null 1<>"$dev_null" +fi >>/dev/null +{ + if echo $local_var; then cat <<HERE +Hi cat +HERE + fi >>/dev/null +} 1<>/dev/null +while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done +( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null +f() { echo $1; } +f >/dev/null + +memleak +kb=$? +if test $kb -le 4; then + echo Ok #$kb +else + echo "Bad: $kb kb (or more) leaked" +fi diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_heredoc1.right b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_heredoc1.right new file mode 100644 index 00000000..c6f0334f --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_heredoc1.right @@ -0,0 +1,3 @@ +Warm up +Measuring memory leak... +Ok diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_heredoc1.tests b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_heredoc1.tests new file mode 100755 index 00000000..26cbb28a --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_heredoc1.tests @@ -0,0 +1,34 @@ +echo "Warm up" +i=1 +while test $i != 99; do + : <<HERE +Hello $i `echo builtin_$i` +HERE + : $((i++)) +done + +memleak + +echo "Measuring memory leak..." +i=1 +while test $i != 99; do + : <<HERE +Hello $i `echo builtin_$i` +HERE + : $((i++)) +done +i=1 +while test $i != 99; do + : <<HERE +Hello $i `echo builtin_$i` +HERE + : $((i++)) +done + +memleak +kb=$? +if test $kb -le 4; then + echo Ok #$kb +else + echo "Bad: $kb kb (or more) leaked" +fi diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var.right b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var.right new file mode 100644 index 00000000..1d4d6ff5 --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var.right @@ -0,0 +1,2 @@ +Measuring memory leak... +Ok diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var.tests b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var.tests new file mode 100755 index 00000000..41c09e47 --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var.tests @@ -0,0 +1,47 @@ +echo "Measuring memory leak..." +i=1 +while test $i != X; do + unset t + t=111111111111111111111111111111111111111111111111111111111111111111111111 + export t + unset t + t=111111111111111111111111111111111111111111111111111111111111111111111111 + export t + unset t + t=111111111111111111111111111111111111111111111111111111111111111111111111 + export t + unset t + t=111111111111111111111111111111111111111111111111111111111111111111111111 + export t + unset t + t=111111111111111111111111111111111111111111111111111111111111111111111111 + export t + i=1$i + if test $i = 1111111111111111111111111111111111111111111111; then i=2; fi + if test $i = 1111111111111111111111111111111111111111111112; then i=3; fi + if test $i = 1111111111111111111111111111111111111111111113; then i=4; fi + if test $i = 1111111111111111111111111111111111111111111114; then i=5; fi + if test $i = 1111111111111111111111111111111111111111111115; then i=6; fi + if test $i = 1111111111111111111111111111111111111111111116; then i=7; fi + if test $i = 1111111111111111111111111111111111111111111117; then i=8; fi + if test $i = 1111111111111111111111111111111111111111111118; then i=9; fi + if test $i = 1111111111111111111111111111111111111111111119; then i=a; fi + if test $i = 111111111111111111111111111111111111111111111a; then i=b; fi + if test $i = 111111111111111111111111111111111111111111111b; then i=c; fi + if test $i = 111111111111111111111111111111111111111111111c; then i=d; fi + if test $i = 111111111111111111111111111111111111111111111d; then i=e; fi + if test $i = 111111111111111111111111111111111111111111111e; then i=f; fi + if test $i = 111111111111111111111111111111111111111111111f; then i=g; fi + if test $i = 111111111111111111111111111111111111111111111g; then i=h; fi + if test $i = 111111111111111111111111111111111111111111111h; then i=i; fi + if test $i = 111111111111111111111111111111111111111111111i; then i=j; fi + if test $i = 111111111111111111111111111111111111111111111j; then i=X; fi + memleak +done +memleak +kb=$? +if test $kb -le 4; then + echo Ok +else + echo "Bad: $kb kb (or more) leaked" +fi diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var2.right b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var2.right new file mode 100644 index 00000000..c6f0334f --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var2.right @@ -0,0 +1,3 @@ +Warm up +Measuring memory leak... +Ok diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var2.tests b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var2.tests new file mode 100755 index 00000000..0ab13155 --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var2.tests @@ -0,0 +1,40 @@ +t=1 +export t + +echo "Warm up" +i=1 +while test $i != X; do + t=111111111111111111111111111111111111111111111111111111111111111111111110$i + t=111111111111111111111111111111111111111111111111111111111111111111111111$i true + t=111111111111111111111111111111111111111111111111111111111111111111111112$i /bin/true + t=111111111111111111111111111111111111111111111111111111111111111111111113$i exec 1>&1 + i=1$i + if test $i = 1111111111111111111111111111111111111111111111; then i=2; fi + if test $i = 1111111111111111111111111111111111111111111112; then i=3; fi + if test $i = 1111111111111111111111111111111111111111111113; then i=4; fi + if test $i = 1111111111111111111111111111111111111111111114; then i=X; fi +done + +memleak + +echo "Measuring memory leak..." +i=1 +while test $i != X; do + t=111111111111111111111111111111111111111111111111111111111111111111111110$i + t=111111111111111111111111111111111111111111111111111111111111111111111111$i true + t=111111111111111111111111111111111111111111111111111111111111111111111112$i /bin/true + t=111111111111111111111111111111111111111111111111111111111111111111111113$i exec 1>&1 + i=1$i + if test $i = 1111111111111111111111111111111111111111111111; then i=2; fi + if test $i = 1111111111111111111111111111111111111111111112; then i=3; fi + if test $i = 1111111111111111111111111111111111111111111113; then i=4; fi + if test $i = 1111111111111111111111111111111111111111111114; then i=X; fi +done + +memleak +kb=$? +if test $kb -le 4; then + echo Ok +else + echo "Bad: $kb kb (or more) leaked" +fi diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var3.right b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var3.right new file mode 100644 index 00000000..c6f0334f --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var3.right @@ -0,0 +1,3 @@ +Warm up +Measuring memory leak... +Ok diff --git a/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var3.tests b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var3.tests new file mode 100755 index 00000000..9554c42c --- /dev/null +++ b/release/src/router/busybox/shell/hush_test/hush-z_slow/leak_var3.tests @@ -0,0 +1,41 @@ +# Was seen leaking on NOMMU build + +echo "Warm up" +i=1; t=1; export t +while test $i != 400; do + t=valueA_$i true + : $((i++)) +done + +memleak +echo "Measuring memory leak..." + +# Please copy the entire block from above verbatim +i=1; t=1; export t +while test $i != 400; do + t=valueA_$i true + : $((i++)) +done +i=1; t=1; export t +while test $i != 400; do + t=valueA_$i true + : $((i++)) +done +i=1; t=1; export t +while test $i != 400; do + t=valueA_$i true + : $((i++)) +done +i=1; t=1; export t +while test $i != 400; do + t=valueA_$i true + : $((i++)) +done + +memleak +kb=$? +if test $kb -le 4; then + echo Ok #$kb +else + echo "Bad: $kb kb (or more) leaked" +fi |