Module Name:    src
Committed By:   christos
Date:           Sat Dec  5 18:45:35 UTC 2015

Modified Files:
        src/tests/sbin/gpt: Makefile t_gpt.sh
Added Files:
        src/tests/sbin/gpt: disklabel gpt.disklabel

Log Message:
Add a migration test


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/tests/sbin/gpt/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/sbin/gpt/disklabel \
    src/tests/sbin/gpt/gpt.disklabel
cvs rdiff -u -r1.7 -r1.8 src/tests/sbin/gpt/t_gpt.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/sbin/gpt/Makefile
diff -u src/tests/sbin/gpt/Makefile:1.6 src/tests/sbin/gpt/Makefile:1.7
--- src/tests/sbin/gpt/Makefile:1.6	Fri Dec  4 15:16:23 2015
+++ src/tests/sbin/gpt/Makefile	Sat Dec  5 13:45:35 2015
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.6 2015/12/04 20:16:23 christos Exp $
+# $NetBSD: Makefile,v 1.7 2015/12/05 18:45:35 christos Exp $
 
 .include <bsd.own.mk>
 
@@ -8,7 +8,8 @@ TESTS_SH=	t_gpt
 
 FILESDIR=       ${TESTSDIR}
 FILES=		gpt.empty.show.normal gpt.backup gpt.removepart.show.normal
-FILES+=          gpt.2part.show.uuid gpt.2part.show.normal gpt.2part.show.label
+FILES+=		gpt.2part.show.uuid gpt.2part.show.normal gpt.2part.show.label
 FILES+=		gpt.resizedisk.show.normal gpt.resizepart.show.normal
+FILES+=		disklabel gpt.disklabel
 
 .include <bsd.test.mk>

Index: src/tests/sbin/gpt/t_gpt.sh
diff -u src/tests/sbin/gpt/t_gpt.sh:1.7 src/tests/sbin/gpt/t_gpt.sh:1.8
--- src/tests/sbin/gpt/t_gpt.sh:1.7	Sat Dec  5 09:23:41 2015
+++ src/tests/sbin/gpt/t_gpt.sh	Sat Dec  5 13:45:35 2015
@@ -1,4 +1,4 @@
-# $NetBSD: t_gpt.sh,v 1.7 2015/12/05 14:23:41 christos Exp $
+# $NetBSD: t_gpt.sh,v 1.8 2015/12/05 18:45:35 christos Exp $
 #
 # Copyright (c) 2015 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -37,26 +37,54 @@ uuid="........-....-....-....-..........
 zero="00000000-0000-0000-0000-000000000000"
 src=$(atf_get_srcdir)
 
+silence() {
+	atf_check -s exit:0 -o empty -e empty "$@"
+}
+
+match() {
+	local match="$1"
+	shift
+	atf_check -s exit:0 -e empty -o match:"$match" "$@"
+}
+
+matcherr() {
+	local match="$1"
+	shift
+	atf_check -s exit:0 -o empty -e match:"$match" "$@"
+}
+
+file() {
+	local file="$1"
+	shift
+	atf_check -s exit:0 -e empty -o file:"$file" "$@"
+}
+
+save() {
+	local save="$1"
+	shift
+	atf_check -s exit:0 -e empty -o save:"$save" "$@"
+}
+
+zerodd() {
+	silence dd conv=notrunc msgfmt=quiet if=/dev/zero of="$disk" "$@"
+}
+
 prepare() {
 	rm -f "$disk"
-	dd if=/dev/zero of="$disk" seek="$size" count=1
+	zerodd seek="$size" count=1
 }
 
 prepare_2part() {
 	prepare
-	atf_check -s exit:0 -o empty -e empty gpt create "$disk"
-	atf_check -s exit:0 -o match:"$(partaddmsg 1 34 1024)" -e empty \
-	    gpt add -t efi -s 1024 "$disk"
-	atf_check -s exit:0 -o match:"$(partaddmsg 2 1058 9150)" -e empty \
-	    gpt add "$disk"
+	silence gpt create "$disk"
+	match "$(partaddmsg 1 34 1024)" gpt add -t efi -s 1024 "$disk"
+	match "$(partaddmsg 2 1058 9150)" gpt add "$disk"
 }
 
 # Calling this from tests does not work. BUG!
 check_2part() {
-	atf_check -s exit:0 -o file:"$src/gpt.2part.show.normal" \
-	    -e empty gpt show "$disk"
-	atf_check -s exit:0 -o file:"$src/gpt.2part.show.uuid" \
-	    -e empty gpt show -u "$disk"
+	file "$src/gpt.2part.show.normal" gpt show "$disk"
+	file "$src/gpt.2part.show.uuid" gpt show -u "$disk"
 }
 
 partaddmsg() {
@@ -84,6 +112,11 @@ recovermsg() {
 	echo "^$disk: Recovered $1 GPT [a-z]* from $2\$"
 }
 
+migratemsg() {
+	echo -n "^gpt: $disk: Partition $1 unknown type MSDOS, "
+	echo 'using "Microsoft Basic Data"$'
+}
+
 atf_test_case create_empty
 create_empty_head() {
 	atf_set "descr" "Create empty disk"
@@ -91,9 +124,8 @@ create_empty_head() {
 
 create_empty_body() {
 	prepare
-	atf_check -s exit:0 -o empty -e empty gpt create "$disk"
-	atf_check -s exit:0 -o file:"$src/gpt.empty.show.normal" \
-	    -e empty gpt show "$disk"
+	silence gpt create "$disk"
+	file "$src/gpt.empty.show.normal" gpt show "$disk"
 }
 
 atf_test_case create_2part
@@ -113,9 +145,8 @@ backup_2part_head() {
 
 backup_2part_body() {
 	prepare_2part
-	atf_check -s exit:0 -o save:test.backup -e empty gpt backup "$disk"
-	atf_check -s exit:0 -o file:"$src/gpt.backup" -e empty \
-	    sed -e "s/$uuid/$zero/g" "test.backup"
+	save test.backup gpt backup "$disk"
+	file "$src/gpt.backup" sed -e "s/$uuid/$zero/g" "test.backup"
 }
 
 atf_test_case restore_2part
@@ -125,9 +156,9 @@ restore_2part_head() {
 
 restore_2part_body() {
 	prepare_2part
-	atf_check -s exit:0 -o save:test.backup -e empty gpt backup "$disk"
+	save test.backup gpt backup "$disk"
 	prepare
-	atf_check -s exit:0 -o empty -e empty gpt restore -i test.backup "$disk"
+	silence gpt restore -i test.backup "$disk"
 	check_2part
 }
 
@@ -138,10 +169,8 @@ recover_backup_head() {
 
 recover_backup_body() {
 	prepare_2part
-	dd conv=notrunc if=/dev/zero of="$disk" seek="$((size - shdr))" \
-	    count="$shdr"
-	atf_check -s exit:0 -o match:"$(recovermsg secondary primary)" \
-	    -e empty gpt recover "$disk"
+	zerodd seek="$((size - shdr))" count="$shdr"
+	match "$(recovermsg secondary primary)" gpt recover "$disk"
 	check_2part
 }
 
@@ -152,9 +181,8 @@ recover_primary_head() {
 
 recover_primary_body() {
 	prepare_2part
-	dd conv=notrunc if=/dev/zero of="$disk" seek=1 count="$shdr"
-	atf_check -s exit:0 -o match:"$(recovermsg primary secondary)" \
-	    -e empty gpt recover "$disk"
+	zerodd seek=1 count="$shdr"
+	match "$(recovermsg primary secondary)" gpt recover "$disk"
 	check_2part
 }
 
@@ -165,14 +193,11 @@ resize_2part_head() {
 
 resize_2part_body() {
 	prepare_2part
-	dd conv=notrunc if=/dev/zero of="$disk" seek="$newsize" count=1
-	atf_check -s exit:0 -o empty -e empty gpt resizedisk "$disk"
-	atf_check -s exit:0 -o file:"$src/gpt.resizedisk.show.normal" \
-	    gpt show "$disk"
-	atf_check -s exit:0 -o match:"$(partresmsg 2 1058 19390)" \
-	    -e empty gpt resize -i 2 "$disk"
-	atf_check -s exit:0 -o file:"$src/gpt.resizepart.show.normal" \
-	    gpt show "$disk"
+	zerodd seek="$newsize" count=1
+	silence gpt resizedisk "$disk"
+	file "$src/gpt.resizedisk.show.normal" gpt show "$disk"
+	match "$(partresmsg 2 1058 19390)" gpt resize -i 2 "$disk"
+	file "$src/gpt.resizepart.show.normal" gpt show "$disk"
 }
 
 atf_test_case remove_2part
@@ -182,9 +207,9 @@ remove_2part_head() {
 
 remove_2part_body() {
 	prepare_2part
-	atf_check -s exit:0 -o match:"$(partremmsg 1)" -e empty gpt remove \
+	match "$(partremmsg 1)" -e empty gpt remove \
 	    -i 1 "$disk"
-	atf_check -s exit:0 -o file:"$src/gpt.removepart.show.normal" \
+	file "$src/gpt.removepart.show.normal" \
 	    gpt show "$disk"
 }
 
@@ -195,11 +220,9 @@ label_2part_head() {
 
 label_2part_body() {
 	prepare_2part
-	atf_check -s exit:0 -o match:"$(partlblmsg 1)" -e empty \
-	    gpt label -i 1 -l potato "$disk"
-	atf_check -s exit:0 -o match:"$(partlblmsg 2)" -e empty \
-	    gpt label -i 2 -l tomato "$disk"
-	atf_check -s exit:0 -o file:"$src/gpt.2part.show.label" \
+	match "$(partlblmsg 1)" gpt label -i 1 -l potato "$disk"
+	match "$(partlblmsg 2)" gpt label -i 2 -l tomato "$disk"
+	file "$src/gpt.2part.show.label" \
 	    gpt show -l "$disk"
 }
 
@@ -210,14 +233,26 @@ bootable_2part_head() {
 
 bootable_2part_body() {
 	prepare_2part
-	atf_check -s exit:0 -o match:"$(partbootmsg 2)" -e empty \
-	    gpt biosboot -i 2 "$disk"
+	match "$(partbootmsg 2)" gpt biosboot -i 2 "$disk"
 	local bootsz="$(ls -l "$bootblk" | awk '{ print $5 }')"
-	dd if="$disk" of=bootblk bs=1 count="$bootsz"
-	atf_check -s exit:0 -o empty -e empty cmp "$bootblk" bootblk
-	gpt show -i 2 "$disk" | tail -1 > bootattr
-	atf_check -s exit:0 -o match:"^  legacy BIOS boot partition\$" \
-	    -e empty cat bootattr
+	silence dd msgfmt=quiet if="$disk" of=bootblk bs=1 count="$bootsz"
+	silence cmp "$bootblk" bootblk
+	save bootattr gpt show -i 2 "$disk"
+	match "^  legacy BIOS boot partition\$" tail -1 bootattr
+}
+
+atf_test_case migrate_disklabel
+migrate_disklabel_head() {
+	atf_set "descr" "Migrate an MBR+disklabel disk to GPT"
+}
+
+migrate_disklabel_body() {
+	prepare
+	silence fdisk -fi gpt.disk
+	silence fdisk -fu0s 169/63/$((size / 10)) gpt.disk
+	silence disklabel -R gpt.disk "$src/disklabel"
+	matcherr "$(migratemsg 5)" gpt migrate "$disk"
+	file "$src/gpt.disklabel" gpt show "$disk"
 }
 
 atf_init_test_cases() {
@@ -231,4 +266,5 @@ atf_init_test_cases() {
 	atf_add_test_case resize_2part
 	atf_add_test_case label_2part
 	atf_add_test_case bootable_2part
+	atf_add_test_case migrate_disklabel
 }

Added files:

Index: src/tests/sbin/gpt/disklabel
diff -u /dev/null src/tests/sbin/gpt/disklabel:1.1
--- /dev/null	Sat Dec  5 13:45:35 2015
+++ src/tests/sbin/gpt/disklabel	Sat Dec  5 13:45:35 2015
@@ -0,0 +1,27 @@
+# gpt.disk:
+type: ESDI
+disk: WDC WD2500SD-01K
+label: fictitious
+flags:
+bytes/sector: 512
+sectors/track: 63
+tracks/cylinder: 16
+sectors/cylinder: 1000
+cylinders: 10
+total sectors: 10000
+rpm: 3600
+interleave: 1
+trackskew: 0
+cylinderskew: 0
+headswitch: 0		# microseconds
+track-to-track seek: 0	# microseconds
+drivedata: 0 
+
+6 partitions:
+#        size    offset     fstype [fsize bsize cpg/sgs]
+ a:       500        63     4.2BSD   1024  8192     0  # (Cyl.      0*-      0*)
+ b:      1000       563       swap                     # (Cyl.      0*-      1*)
+ c:      1000        63     unused      0     0        # (Cyl.      0*-      1*)
+ d:      1063         0     unused      0     0        # (Cyl.      0 -      1*)
+ e:      1000      1563     4.2BSD   1024  8192     0  # (Cyl.      1*-      2*)
+ f:       400      2563      MSDOS                     # (Cyl.      2*-      2*)
Index: src/tests/sbin/gpt/gpt.disklabel
diff -u /dev/null src/tests/sbin/gpt/gpt.disklabel:1.1
--- /dev/null	Sat Dec  5 13:45:35 2015
+++ src/tests/sbin/gpt/gpt.disklabel	Sat Dec  5 13:45:35 2015
@@ -0,0 +1,12 @@
+  start   size  index  contents
+      0      1         PMBR
+      1      1         Pri GPT header
+      2     32         Pri GPT table
+     34     29         Unused
+     63    500      1  GPT part - NetBSD FFSv1/FFSv2
+    563   1000      2  GPT part - NetBSD swap
+   1563   1000      3  GPT part - NetBSD FFSv1/FFSv2
+   2563    400      4  GPT part - Windows basic data
+   2963   7245         Unused
+  10208     32         Sec GPT table
+  10240      1         Sec GPT header

Reply via email to