summaryrefslogtreecommitdiff
path: root/tests/run_cgpt_tests.sh
diff options
context:
space:
mode:
authorBill Richardson <wfrichar@chromium.org>2010-06-11 09:15:55 -0700
committerBill Richardson <wfrichar@chromium.org>2010-06-11 09:15:55 -0700
commitf1372d9109d638fbb1a177a89ebaf64e7ee0637e (patch)
tree243cdacbc1028e6a987d582d33927560af0b47e0 /tests/run_cgpt_tests.sh
parent6a97b3e2a1bee35bf3c00f2fb0faafde4aaab9e2 (diff)
downloadvboot-f1372d9109d638fbb1a177a89ebaf64e7ee0637e.tar.gz
Nearly complete rewrite of cgpt tool.
This fixes a number of bugs, adds a bunch of commands, and essentially makes cgpt ready to use as a replacement for gpt. Still to do is to add commands and options that will let it generated intentionally bad partitions, for use in testing. Review URL: http://codereview.chromium.org/2719008
Diffstat (limited to 'tests/run_cgpt_tests.sh')
-rwxr-xr-xtests/run_cgpt_tests.sh114
1 files changed, 114 insertions, 0 deletions
diff --git a/tests/run_cgpt_tests.sh b/tests/run_cgpt_tests.sh
new file mode 100755
index 00000000..2dcca997
--- /dev/null
+++ b/tests/run_cgpt_tests.sh
@@ -0,0 +1,114 @@
+#!/bin/bash -eu
+
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Run tests for RSA Signature verification.
+
+# Load common constants and variables.
+. "$(dirname "$0")/common.sh"
+
+GPT=${1:-../cgpt/cgpt}
+[ -x "$GPT" ] || error "Can't execute $GPT"
+warning "testing $GPT"
+
+echo "Create an empty file to use as the device..."
+NUM_SECTORS=1000
+DEV=$(mktemp)
+BOOTFILE=$(mktemp)
+dd if=/dev/zero of=${DEV} conv=notrunc bs=512 count=${NUM_SECTORS} 2>/dev/null
+trap "rm -f ${DEV}" EXIT
+
+
+echo "Create a bunch of partitions, using the real GUID types..."
+DATA_START=100
+DATA_SIZE=20
+DATA_LABEL="data stuff"
+DATA_GUID='ebd0a0a2-b9e5-4433-87c0-68b6b72699c7'
+DATA_NUM=1
+
+KERN_START=200
+KERN_SIZE=30
+KERN_LABEL="kernel stuff"
+KERN_GUID='fe3a2a5d-4f32-41a7-b725-accc3285a309'
+KERN_NUM=2
+
+ROOTFS_START=300
+ROOTFS_SIZE=40
+ROOTFS_LABEL="rootfs stuff"
+ROOTFS_GUID='3cb8e202-3b7e-47dd-8a3c-7ff2a13cfcec'
+ROOTFS_NUM=3
+
+ESP_START=400
+ESP_SIZE=50
+ESP_LABEL="ESP stuff"
+ESP_GUID='c12a7328-f81f-11d2-ba4b-00a0c93ec93b'
+ESP_NUM=4
+
+FUTURE_START=500
+FUTURE_SIZE=60
+FUTURE_LABEL="future stuff"
+FUTURE_GUID='2e0a753d-9e48-43b0-8337-b15192cb1b5e'
+FUTURE_NUM=5
+
+RANDOM_START=600
+RANDOM_SIZE=70
+RANDOM_LABEL="random stuff"
+RANDOM_GUID='2364a860-bf63-42fb-a83d-9ad3e057fcf5'
+RANDOM_NUM=6
+
+$GPT create ${DEV}
+
+$GPT add -b ${DATA_START} -s ${DATA_SIZE} -t ${DATA_GUID} \
+ -l "${DATA_LABEL}" ${DEV}
+$GPT add -b ${KERN_START} -s ${KERN_SIZE} -t ${KERN_GUID} \
+ -l "${KERN_LABEL}" ${DEV}
+$GPT add -b ${ROOTFS_START} -s ${ROOTFS_SIZE} -t ${ROOTFS_GUID} \
+ -l "${ROOTFS_LABEL}" ${DEV}
+$GPT add -b ${ESP_START} -s ${ESP_SIZE} -t ${ESP_GUID} \
+ -l "${ESP_LABEL}" ${DEV}
+$GPT add -b ${FUTURE_START} -s ${FUTURE_SIZE} -t ${FUTURE_GUID} \
+ -l "${FUTURE_LABEL}" ${DEV}
+$GPT add -b ${RANDOM_START} -s ${RANDOM_SIZE} -t ${RANDOM_GUID} \
+ -l "${RANDOM_LABEL}" ${DEV}
+
+
+echo "Extract the start and size of given partitions..."
+
+X=$($GPT show -b -i $DATA_NUM ${DEV})
+Y=$($GPT show -s -i $DATA_NUM ${DEV})
+[ "$X $Y" = "$DATA_START $DATA_SIZE" ] || error "fail at line $LINENO"
+
+X=$($GPT show -b -i $KERN_NUM ${DEV})
+Y=$($GPT show -s -i $KERN_NUM ${DEV})
+[ "$X $Y" = "$KERN_START $KERN_SIZE" ] || error "fail at line $LINENO"
+
+X=$($GPT show -b -i $ROOTFS_NUM ${DEV})
+Y=$($GPT show -s -i $ROOTFS_NUM ${DEV})
+[ "$X $Y" = "$ROOTFS_START $ROOTFS_SIZE" ] || error "fail at line $LINENO"
+
+X=$($GPT show -b -i $ESP_NUM ${DEV})
+Y=$($GPT show -s -i $ESP_NUM ${DEV})
+[ "$X $Y" = "$ESP_START $ESP_SIZE" ] || error "fail at line $LINENO"
+
+X=$($GPT show -b -i $FUTURE_NUM ${DEV})
+Y=$($GPT show -s -i $FUTURE_NUM ${DEV})
+[ "$X $Y" = "$FUTURE_START $FUTURE_SIZE" ] || error "fail at line $LINENO"
+
+X=$($GPT show -b -i $RANDOM_NUM ${DEV})
+Y=$($GPT show -s -i $RANDOM_NUM ${DEV})
+[ "$X $Y" = "$RANDOM_START $RANDOM_SIZE" ] || error "fail at line $LINENO"
+
+
+echo "Set the boot partition.."
+$GPT boot -i ${KERN_NUM} ${DEV} >/dev/null
+
+echo "Check the PMBR's idea of the boot partition..."
+X=$($GPT boot ${DEV})
+Y=$($GPT show -u -i $KERN_NUM $DEV)
+[ "$X" = "$Y" ] || error "fail at line $LINENO"
+
+echo "Done."
+
+happy "All tests passed."