diff options
Diffstat (limited to 'qa/src/mkbadti')
-rwxr-xr-x | qa/src/mkbadti | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/qa/src/mkbadti b/qa/src/mkbadti new file mode 100755 index 0000000..bcb27b0 --- /dev/null +++ b/qa/src/mkbadti @@ -0,0 +1,107 @@ +#!/bin/sh +# +# Recipes for making badti-* family of archives. +# +# Every one is based on a version of ok-foo, with binary editing using +# bvi (or similar) and cut-n-paste with dd. +# +# This is the good temporal index +# +# Timestamp Log Vol end(meta) end(log) offset +# 0 <- label record +# 04:34:32.257 0 132 132 132 +# 04:34:33.248 0 350 284 152 +# 04:34:40.258 0 851 1768 172 +# 191 <- EOF + +tmp=/var/tmp/$$ +trap "rm -f $tmp.*; exit 0" 0 1 2 3 15 + +# Set up for a new badti-X archive +# +X=`ls badti-*.index 2>/dev/null | tail -1 | sed -e 's/badti-//' -e 's/\.index//'` +if [ -z "$X" ] +then + X=1 +else + X=`expr $X + 1` +fi + +ln ok-foo.meta badti-$X.meta +ln ok-foo.0 badti-$X.0 + +case $X +in + 1) # index broken in the middle of an entry + dd if=ok-foo.index of=badti-$X.index bs=1 count=162 + ;; + + 2) # entry[2] volume is negative + # entry[2] tv_usec in timestamp is >99999 + # entry[3] tv_sec in timestamp is negative + # entry[3] tv_usec in timestamp is negative + cp ok-foo.index badti-$X.index + echo '140s\\....\\FFFFFFFF\\' >$tmp.ex + echo '136s\\....\\000F4240\\' >>$tmp.ex + echo '172s\\....\\FFFFFFFE\\' >>$tmp.ex + echo '176s\\....\\FFFFFFFC\\' >>$tmp.ex + ;; + + 3) # entry[1] volume -> non existant file, and then volume goes backwards + # entry[3] meta and log offsets past end of file + cp ok-foo.index badti-$X.index + echo '132s\\....\\00000002\\' >$tmp.ex + echo '184s\\....\\00000354\\' >>$tmp.ex + echo '188s\\....\\000007B9\\' >>$tmp.ex + ;; + + 4) # tv_usec in timestamp is negative + cp ok-foo.index badti-$X.index + ;; + + 5) # Short label record (42 bytes, not 132) + dd if=badti-0.0 of=badti-$X.0 bs=1 count=42 + ;; + + 6) # Label header len 64 not 132 as expected + cp ok-foo.0 badti-$X.0 + echo '3s\\.\\40\\' >$tmp.ex + ;; + + 7) # Label trailer len 64 not 132 as expected + cp ok-foo.0 badti-$X.0 + echo '131s\\.\\40\\' >$tmp.ex + ;; + + 8) # Label bad PM_LOG_VER + cp ok-foo.0 badti-$X.0 + echo '7s\\.\\FF\\' >$tmp.ex + ;; + + 9) # Truncated metadata file + cp ok-foo.0 badti-$X.0 + cp ok-foo.index badti-$X.index + rm -f badti-$X.meta + dd if=ok-foo.meta of=badti-$X.meta bs=1 count=840 + +esac + +if [ -f $tmp.ex ] +then + echo 'w' >>$tmp.ex + echo 'q' >>$tmp.ex + + if which bvi >/dev/null 2>&1 + then + bvi -f $tmp.ex badti-$X.index + else + echo "bvi not installed" + echo "Need to apply the equivalent of this binary editing to badti-$X.0" + cat $tmp.ex + fi +fi + +echo "badti-$X created." + +exit + |