File: test-device-imaging.sh

package info (click to toggle)
dc3dd 7.3.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 27,780 kB
  • sloc: ansic: 29,526; sh: 6,778; perl: 1,468; yacc: 1,235; makefile: 151; python: 39; sed: 16
file content (138 lines) | stat: -rw-r--r-- 3,775 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash

source "test-helpers.sh"

if [ "$1" == "" ]
then
    echo "Usage: $0 good_device"
    exit 1
fi

DEVICE="$1"

#*************************************************************
# These tests depend on writing a reference image to a device
# with the sector size and size in sectors described below.
#*************************************************************
REF_IMG="../../test_data/reference_images/ref-good.img"
REF_SECTORS=1952767
REF_SECTOR_SIZE=512

DC3DD="../src/dc3dd"
TEST_IMG="/tmp/dev_img_test.img"
TEST_LOG0="/tmp/dev_img_test0.log"
TEST_LOG1="/tmp/dev_img_test1.log"

init()
{
   echo "Setting up test fixtures..."

   echo "Getting reference image size..."
   REF_IMG_BYTES=`stat -c %s "$REF_IMG"`
   echo "$REF_IMG_BYTES"   

   echo "Getting reference image md5 hash..."
   REF_IMG_MD5_HASH=`md5sum "$REF_IMG" | cut -f 1 -d \ `
   echo "$REF_IMG_MD5_HASH"   

   echo "Getting reference image sha1 hash..."
   REF_IMG_SHA1_HASH=`sha1sum "$REF_IMG" | cut -f 1 -d \ `
   echo "$REF_IMG_SHA1_HASH"   
   
   echo "Writing reference image to device..."
   umount "$DEVICE"
   if [ -L "$DEVICE" ]
   then
       DEVICE=`readlink -f "$DEVICE"`
   fi

   dd if="$REF_IMG" of="$DEVICE" 
   if [ $? -ne 0 ]
   then
       echo "failed to write reference image $REF_IMG to device $DEVICE"
       exit 1
   fi

   echo "Getting md5 hash for wipe testing..."
   PAT_MD5_HASH=`"$DC3DD" pat=00 cnt="$REF_SECTORS" | md5sum | cut -f1 -d\ `

   echo "Getting sha1 hash for wipe testing..."
   PAT_SHA1_HASH=`"$DC3DD" pat=00 cnt="$REF_SECTORS" | sha1sum | cut -f1 -d\ `

   echo "Test fixture set up completed"
}

cleanup()
{
    # Clean up files from any previous runs.
    rm "$TEST_IMG" "$TEST_LOG0" "$TEST_LOG1" 
    if [ -e "$TEST_IMG" -o -e "$TEST_LOG0" -o -e "$TEST_LOG1" ]
    then
        echo "Failed to remove test output files"
        exit 1
    fi
}

basic()
{
   echo "Testing imaging of a device with multiple logs..." 
   cleanup

   "$DC3DD" if="$DEVICE" of="$TEST_IMG" hash=md5 hash=sha1 log="$TEST_LOG0" log="$TEST_LOG1"
   if [ $? -ne 0 ]
   then
       echo "basic: run failed"
       exit 1
   fi

   echo "Checking results..."
   check_output_file "basic" "$TEST_IMG" "$REF_IMG_BYTES" "$REF_IMG_MD5_HASH" "$REF_IMG_SHA1_HASH"
   check_input_logging "basic" "$TEST_LOG0" "$REF_SECTOR_SIZE" "(probed)" "$REF_IMG_BYTES" "$REF_SECTORS" "0"
   check_input_logging "basic" "$TEST_LOG1" "$REF_SECTOR_SIZE" "(probed)" "$REF_IMG_BYTES" "$REF_SECTORS" "0"
   check_input_hash_logging "basic" "$TEST_LOG0" "$REF_IMG_MD5_HASH" "$REF_IMG_SHA1_HASH"
   check_input_hash_logging "basic" "$TEST_LOG1" "$REF_IMG_MD5_HASH" "$REF_IMG_SHA1_HASH"
   check_single_output_logging "basic" "$TEST_LOG0" "$REF_SECTORS"
   check_single_output_logging "basic" "$TEST_LOG1" "$REF_SECTORS"
   echo "Results ok"
   echo
}

wipe()
{
   echo "Testing a verified wipe of a device with zeros..."
   cleanup

   "$DC3DD" hwipe="$DEVICE" hash=md5 hash=sha1 log="$TEST_LOG0"
   if [ $? -ne 0 ]
   then
       echo "wipe: run failed"
       exit 10
   fi

   DEVICE_HASH=`md5sum "$DEVICE" | cut -f 1 -d \ `
   if [ "$DEVICE_HASH" != "$PAT_MD5_HASH" ]
   then
       echo "wipe: md5 hash mismatch"
       exit 1
   fi

   DEVICE_HASH=`sha1sum "$DEVICE" | cut -f 1 -d \ `
   if [ "$DEVICE_HASH" != "$PAT_SHA1_HASH" ]
   then
       echo "wipe: sha1 hash mismatch"
       exit 1
   fi

   echo "Checking results..."
   check_input_logging "wipe" "$TEST_LOG0" "$REF_SECTOR_SIZE" "(probed)" "$REF_IMG_BYTES" "$REF_SECTORS"
   check_input_hash_logging "wipe" "$TEST_LOG0" "$PAT_MD5_HASH" "$PAT_SHA1_HASH"
   check_single_output_logging "wipe" "$TEST_LOG0" "$REF_SECTORS"
   check_output_hash_logging "wipe" "$DEVICE" "$TEST_LOG0"
   echo "Results ok"
   echo
}

init
basic
wipe
cleanup