test/mult-install.sh
author J. Ali Harlow <ali@juiblex.co.uk>
Thu Feb 09 20:45:27 2012 +0000 (2012-02-09)
changeset 418 33b825d3128d
parent 387 ef9237601f24
child 456 bae5adee8c8c
permissions -rwxr-xr-x
Add transaction barriers
These allow packages to be installed and removed which have scripts
that depend on each other when atomic transactions are involved.
Note that yum supports pre, but not other requires flags. post will
need similar support to the post scripts themselves pulling in the
requires flags from the rpms. Likewise preun and postun will need
similar handling to those scrips since the requires flags will need
to be stored in the razor database.
     1 #!/bin/sh
     2 fs_check_file()
     3 {
     4     if [ ! -e "$RAZOR_ROOT$1" ]; then 
     5 	echo $1: Not in filesystem >&2
     6 	ls -R "$RAZOR_ROOT" >&2
     7 	exit 1
     8     fi
     9 }
    10 fs_check_file_contents()
    11 {
    12     fs_check_file "$1"
    13     if [ `cat "$RAZOR_ROOT$1"` != "$2" ]; then
    14 	echo $1: Unexpected contents >&2
    15 	cat "$RAZOR_ROOT$1" >&2
    16 	exit 1
    17     fi
    18 }
    19 fs_check_no_file()
    20 {
    21     if [ -e "$RAZOR_ROOT$1" ]; then 
    22 	echo $1: Still in filesystem >&2
    23 	exit 1
    24     fi
    25 }
    26 check_file()
    27 {
    28     ../src/razor list-files | grep -x "$1" > /dev/null
    29     if [ $? -ne 0 ]; then
    30 	echo $1: Not in database >&2
    31 	../src/razor list-files >&2
    32 	exit 1
    33     fi
    34     ../src/razor list-files "$1" | grep -x "$1" > /dev/null
    35     if [ $? -ne 0 ]; then
    36 	echo $1: Not seen by patterned list >&2
    37 	../src/razor list-files "$1" >&2
    38 	exit 1
    39     fi
    40     pkgs=`../src/razor list-file-packages "$1"`
    41     if [ -z "$pkgs" ]; then
    42 	echo $1: Not owned by any package >&2
    43 	../src/razor list-file-packages "$1"
    44 	exit 1
    45     fi
    46     for nevra in "$pkgs"; do
    47 	name=`echo $nevra | sed 's/\-.*$//'`
    48 	../src/razor list-package-files "$name" | grep -x "$1" > /dev/null
    49 	if [ $? -ne 0 ]; then
    50 	    echo $1: Not in database for package $name >&2
    51 	    ../src/razor list-package-files "$name"
    52 	    exit 1
    53 	fi
    54     done
    55     fs_check_file $1
    56 }
    57 check_no_file()
    58 {
    59     ../src/razor list-files | grep -x "$1" > /dev/null
    60     if [ $? -eq 0 ]; then
    61 	echo $1: Still in database >&2
    62 	exit 1
    63     fi
    64     fs_check_no_file $1
    65 }
    66 check_install_count()
    67 {
    68     count=`../src/razor list "$1" | wc -l`
    69     if [ "$count" != "$2" ]; then
    70 	echo $1: Install count $count, should be $2 >&2
    71 	exit 1
    72     fi
    73 }
    74 export RAZOR_ROOT=`mktemp -dt` || exit 1
    75 ../src/razor init || exit 1
    76 export YUM_URL="file://localhost/`pwd`"
    77 ../src/razor import-yum || exit 1
    78 ../src/razor install --relocate /usr=/opt zip || exit 1
    79 fs_check_file_contents /opt/bin/zip zip-1-1
    80 fs_check_file /opt/var/lib/zip/data.zap
    81 ../src/razor install --relocate /usr=/opt zip || exit 1
    82 check_install_count zip 2
    83 ../src/razor install --relocate /usr=/opt zip || exit 1
    84 check_install_count zip 3
    85 rm -rf "$RAZOR_ROOT"