File: hdimage.test

package info (click to toggle)
genimage 16-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 808 kB
  • sloc: ansic: 4,721; sh: 1,006; makefile: 156
file content (158 lines) | stat: -rwxr-xr-x 5,237 bytes parent folder | download
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/bin/bash
test_description="hdimage Image Tests"

. "$(dirname "${0}")/test-setup.sh"

get_disk_usage() {
	local file="${1}"
	if [ ! -f "${file}" ]; then
		echo "Failed to check file disk usage: '${file}' does not exist!"
		return 1
	fi
	set -- $(du -B 1 "${file}")
	usage="${1}"
}

check_disk_usage_range() {
	local usage
	get_disk_usage "${1}" || return
	if [ "${usage}" -lt "${2}" -o "${usage}" -gt "${3}" ]; then
		echo "Incorrect file disk usage for '${1}': expected min: ${2} max: ${3} found: ${usage}"
		return 1
	fi
}

exec_test_set_prereq fdisk
exec_test_set_prereq sfdisk
test_expect_success fdisk,sfdisk "hdimage" "
	setup_test_images &&
	run_genimage hdimage.config test.hdimage &&
	check_size images/test.hdimage 10485760 &&
	sfdisk_validate images/test.hdimage &&
	check_disk_usage_range images/test.hdimage 40960 57344 &&
	sanitized_fdisk_sfdisk images/test.hdimage > hdimage.fdisk &&
	test_cmp '${testdir}/hdimage.fdisk' hdimage.fdisk &&
	check_size images/test.hdimage-2 11539968 &&
	sfdisk_validate images/test.hdimage-2 &&
	check_disk_usage_range images/test.hdimage-2 61290 65376 &&
	sanitized_fdisk_sfdisk images/test.hdimage-2 > hdimage.fdisk-2 &&
	test_cmp '${testdir}/hdimage.fdisk-2' hdimage.fdisk-2
"

test_expect_success "hdimage2" "
	setup_test_images &&
	test_must_fail run_genimage hdimage2.config test.hdimage
"

test_expect_success fdisk-gpt,sfdisk-gpt "hdimage4" "
	setup_test_images &&
	run_genimage hdimage4.config test.hdimage &&
	check_size images/test.hdimage 7360512 &&
	sfdisk_validate images/test.hdimage &&
	sanitized_fdisk_sfdisk images/test.hdimage > hdimage4.fdisk &&
	test_cmp '${testdir}/hdimage4.fdisk' hdimage4.fdisk
"

test_expect_success fdisk-gpt,sfdisk-gpt "hdimage5" "
	setup_test_images &&
	run_genimage hdimage5.config test.hdimage &&
	check_size images/test.hdimage 7360512 &&
	sanitized_fdisk_sfdisk images/test.hdimage > hdimage5.fdisk &&
	test_cmp '${testdir}/hdimage5.fdisk' hdimage5.fdisk
"

test_expect_success fdisk,sfdisk "hdimage6" "
	setup_test_images &&
	run_genimage hdimage6.config test.hdimage &&
	check_size images/test.hdimage 28082176 &&
	sanitized_fdisk_sfdisk images/test.hdimage > hdimage6.fdisk &&
	test_cmp '${testdir}/hdimage6.fdisk' hdimage6.fdisk
"

test_expect_success fdisk-gpt,sfdisk-gpt "hdimage7" "
	setup_test_images &&
	run_genimage hdimage7.config &&
	sfdisk_validate images/test.hdimage &&
	sanitized_fdisk_sfdisk images/test.hdimage > hdimage7.fdisk &&
	test_cmp '${testdir}/hdimage7.fdisk' hdimage7.fdisk
"

test_expect_success fdisk-gpt,sfdisk-gpt "hdimage-hybrid" "
	setup_test_images &&
	run_genimage hdimage-hybrid.config &&
	sfdisk_validate images/hybrid.hdimage &&
	sanitized_fdisk_sfdisk images/hybrid.hdimage > hdimage-hybrid.fdisk &&
	test_cmp '${testdir}/hdimage-hybrid.fdisk' hdimage-hybrid.fdisk &&
	dd if=images/hybrid.hdimage count=1 | hexdump -C > hybrid.sector0 &&
	dd if=images/mbr.hdimage count=1 | hexdump -C > mbr.sector0 &&
	test_cmp hybrid.sector0 mbr.sector0
"

test_expect_success "hdimage syntax" "
	setup_test_images &&
	test_must_fail run_genimage hdimage-fail1.config &&
	test_must_fail run_genimage hdimage-fail2.config &&
	test_must_fail run_genimage hdimage-fail3.config &&
	test_must_fail run_genimage hdimage-fail4.config &&
	test_must_fail run_genimage hdimage-fail5.config &&
	test_must_fail run_genimage hdimage-fail6.config &&
	test_must_fail run_genimage hdimage-fail7.config
"

setup_gpt_files() {
	rm -rf input &&
	mkdir input &&
	truncate -s 3k input/3K.img &&
	truncate -s 70k input/70K.img
}

test_expect_success "gpt-overlap1" "
	setup_gpt_files &&
	test_must_fail run_genimage gpt-overlap1.config"

test_expect_success "gpt-overlap2" "
	setup_gpt_files &&
	run_genimage gpt-overlap2.config"

test_expect_success "gpt-overlap3" "
	setup_gpt_files &&
	test_must_fail run_genimage gpt-overlap3.config"

# A bootloader image with a don't-care region extending over MBR
# table, GPT header and (usual) placement of GPT array.
test_expect_success "bootloader-hole1" "
	setup_gpt_files &&
	run_genimage hole.config"

# Oops, if we move the GPT array we're no longer covered by the hole.
test_expect_success "bootloader-hole2" "
	setup_gpt_files &&
	GPT_LOCATION=64K test_must_fail run_genimage hole.config"

# But it's ok if the array is moved beyond the bootloader.
test_expect_success "bootloader-hole3" "
	setup_gpt_files &&
	GPT_LOCATION=70K run_genimage hole.config"

# If the 70K bootloader starts at 64K, it will overlap a partition at 129K.
test_expect_success "bootloader-hole4" "
	setup_gpt_files &&
	OFFSET=64K test_must_fail run_genimage hole.config"

# But if it starts at 128K, its hole will cover the small 3K partition.
test_expect_success "bootloader-hole5" "
	setup_gpt_files &&
	OFFSET=128K run_genimage hole.config"

test_expect_success "hdimage no-partition" "
	dd if=/dev/zero bs=1 count=100 | tr '\000' '\377' > input/block1.img &&
	dd if=/dev/zero bs=1 count=50  | tr '\000' '\252' > input/block2.img &&
	dd if=/dev/zero bs=1 count=75  | tr '\000' '\167' > input/block3.img &&
	run_genimage hdimage-nopart.config &&
	hexdump -C images/test.hdimage > 'hdimage-nopart.hexdump' &&
	test_cmp 'hdimage-nopart.hexdump' '${testdir}/hdimage-nopart.hexdump'
"

test_done

# vim: syntax=sh