From 5da1f9b9a94ef139729143aa2c1f649aa809b86b Mon Sep 17 00:00:00 2001 From: Sam Thursfield Date: Thu, 15 Nov 2012 14:55:45 +0000 Subject: Cleanly handle out of disk space on target filesystem. Includes new test. --- tests.as-root/target-disk-too-small.exit | 1 + tests.as-root/target-disk-too-small.script | 51 ++++++++++++++++++++++++++++++ tests.as-root/target-disk-too-small.stderr | 1 + 3 files changed, 53 insertions(+) create mode 100644 tests.as-root/target-disk-too-small.exit create mode 100755 tests.as-root/target-disk-too-small.script create mode 100644 tests.as-root/target-disk-too-small.stderr (limited to 'tests.as-root') diff --git a/tests.as-root/target-disk-too-small.exit b/tests.as-root/target-disk-too-small.exit new file mode 100644 index 00000000..d00491fd --- /dev/null +++ b/tests.as-root/target-disk-too-small.exit @@ -0,0 +1 @@ +1 diff --git a/tests.as-root/target-disk-too-small.script b/tests.as-root/target-disk-too-small.script new file mode 100755 index 00000000..92a73a58 --- /dev/null +++ b/tests.as-root/target-disk-too-small.script @@ -0,0 +1,51 @@ +#!/bin/bash +# +# Copyright (C) 2011, 2012 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +## Handle target disk image being too small for its contents. + +set -eu + +. "$SRCDIR/tests.as-root/lib" + +# Shrink linux-system to the minimum btrfs will allow. +cd "$DATADIR/morphs" +sed -e 's/"system-kind": "syslinux-disk"/"system-kind": "disk"/' \ + -e 's/"disk-size": "1G"/"disk-size": "512M"/' \ + -i linux-system.morph +git add linux-system.morph +git commit -q -m "Make linux-system as small as possible" + +# Grow hello-chunk to be absurdly large. +cd "$DATADIR/chunk-repo" +git checkout -q farrokh +cat <<'EOF' > hello.morph +{ + "name": "hello", + "kind": "chunk", + "build-system": "dummy", + "install-commands": [ + "dd if=/dev/zero of=\"$DESTDIR\"/huge-file seek=1048580 count=0" + ] +} +EOF +git add hello.morph +git commit -q -m "Make hello be very big" + +# Ignore stdout - Morph logs a timestamped error +"$SRCDIR/scripts/test-morph" build-morphology test:morphs master linux-system \ + > /dev/null diff --git a/tests.as-root/target-disk-too-small.stderr b/tests.as-root/target-disk-too-small.stderr new file mode 100644 index 00000000..487c72e2 --- /dev/null +++ b/tests.as-root/target-disk-too-small.stderr @@ -0,0 +1 @@ +ERROR: Ran out of space on linux-system-rootfs disk image. Please increase the system's disk-size. -- cgit v1.2.1