Blob Blame History Raw
From d6862983155c31896ac46dc9d43f4086850a0d44 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 18 Jun 2012 19:28:44 +0200
Subject: [PATCH] TEST-50-MULTINIC: libnss cleanup

---
 test/TEST-50-MULTINIC/test.sh |  235 +++++++++++++++++++----------------------
 1 file changed, 110 insertions(+), 125 deletions(-)

diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
index 1655608..5c7ca6c 100755
--- a/test/TEST-50-MULTINIC/test.sh
+++ b/test/TEST-50-MULTINIC/test.sh
@@ -1,4 +1,6 @@
 #!/bin/bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
 TEST_DESCRIPTION="root filesystem on NFS with multiple nics"
 
 KVERSION=${KVERSION-$(uname -r)}
@@ -41,15 +43,15 @@ client_test() {
 
     # Need this so kvm-qemu will boot (needs non-/dev/zero local disk)
     if ! dd if=/dev/zero of=$TESTDIR/client.img bs=1M count=1; then
-	echo "Unable to make client sda image" 1>&2
-	return 1
+        echo "Unable to make client sda image" 1>&2
+        return 1
     fi
 
     $testdir/run-qemu -hda $TESTDIR/client.img -m 512M -nographic \
-  	-net nic,macaddr=52:54:00:12:34:$mac1,model=e1000 \
-  	-net nic,macaddr=52:54:00:12:34:$mac2,model=e1000 \
-  	-net nic,macaddr=52:54:00:12:34:$mac3,model=e1000 \
-	-net socket,connect=127.0.0.1:12350 \
+        -net nic,macaddr=52:54:00:12:34:$mac1,model=e1000 \
+        -net nic,macaddr=52:54:00:12:34:$mac2,model=e1000 \
+        -net nic,macaddr=52:54:00:12:34:$mac3,model=e1000 \
+        -net socket,connect=127.0.0.1:12350 \
         -hdc /dev/null \
         -watchdog ib700 -watchdog-action poweroff \
         -kernel /boot/vmlinuz-$KVERSION \
@@ -57,17 +59,17 @@ client_test() {
         -initrd $TESTDIR/initramfs.testing
 
     if [[ $? -ne 0 ]] || ! grep -m 1 -q OK $TESTDIR/client.img; then
-	echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
-	return 1
+        echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
+        return 1
     fi
 
 
     for i in $check ; do
-	echo $i
-	if ! grep -m 1 -q $i $TESTDIR/client.img; then
-	    echo "CLIENT TEST END: $test_name [FAILED - BAD IF]"
-	    return 1
-	fi
+        echo $i
+        if ! grep -m 1 -q $i $TESTDIR/client.img; then
+            echo "CLIENT TEST END: $test_name [FAILED - BAD IF]"
+            return 1
+        fi
     done
 
     echo "CLIENT TEST END: $test_name [OK]"
@@ -77,8 +79,8 @@ client_test() {
 
 test_run() {
     if ! run_server; then
-	echo "Failed to start server" 1>&2
-	return 1
+        echo "Failed to start server" 1>&2
+        return 1
     fi
     test_client || { kill_server; return 1; }
 }
@@ -90,33 +92,33 @@ test_client() {
 
     # PXE Style BOOTIF=
     client_test "MULTINIC root=nfs BOOTIF=" \
-	00 01 02 \
-	"root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00" \
-	"eth0" || return 1
+        00 01 02 \
+        "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00" \
+        "eth0" || return 1
 
     # PXE Style BOOTIF= with dhcp root-path
     client_test "MULTINIC root=dhcp BOOTIF=" \
-	00 01 02 \
-	"root=dhcp BOOTIF=52-54-00-12-34-02" \
-	"eth2" || return 1
+        00 01 02 \
+        "root=dhcp BOOTIF=52-54-00-12-34-02" \
+        "eth2" || return 1
 
     # Multinic case, where only one nic works
     client_test "MULTINIC root=nfs ip=dhcp" \
-	FF 00 FE \
-	"root=nfs:192.168.50.1:/nfs/client ip=dhcp" \
-	"eth1" || return 1
+        FF 00 FE \
+        "root=nfs:192.168.50.1:/nfs/client ip=dhcp" \
+        "eth1" || return 1
 
     # Require two interfaces
     client_test "MULTINIC root=nfs ip=eth1:dhcp ip=eth2:dhcp bootdev=eth1" \
-	00 01 02 \
-	"root=nfs:192.168.50.1:/nfs/client ip=eth1:dhcp ip=eth2:dhcp bootdev=eth1" \
-	"eth1 eth2" || return 1
+        00 01 02 \
+        "root=nfs:192.168.50.1:/nfs/client ip=eth1:dhcp ip=eth2:dhcp bootdev=eth1" \
+        "eth1 eth2" || return 1
 
     # Require three interfaces with dhcp root-path
     client_test "MULTINIC root=dhcp ip=eth0:dhcp ip=eth1:dhcp ip=eth2:dhcp bootdev=eth2" \
-	00 01 02 \
-	"root=dhcp ip=eth0:dhcp ip=eth1:dhcp ip=eth2:dhcp bootdev=eth2" \
-	"eth0 eth1 eth2" || return 1
+        00 01 02 \
+        "root=dhcp ip=eth0:dhcp ip=eth1:dhcp ip=eth2:dhcp bootdev=eth2" \
+        "eth0 eth1 eth2" || return 1
 
     kill_server
     return 0
@@ -129,86 +131,70 @@ test_setup() {
     mkdir $TESTDIR/mnt
     sudo mount -o loop $TESTDIR/server.ext3 $TESTDIR/mnt
 
-    export kernel=$KVERSION
-    export srcmods="/lib/modules/$kernel/"
-    # Detect lib paths
-
     . $basedir/dracut-functions.sh
-    if ! [[ $libdirs ]] ; then
-	if strstr "$(ldd /bin/sh)" "/lib64/" &>/dev/null \
-            && [[ -d /lib64 ]]; then
-            libdirs+=" /lib64"
-            [[ -d /usr/lib64 ]] && libdirs+=" /usr/lib64"
-	else
-            libdirs+=" /lib"
-            [[ -d /usr/lib ]] && libdirs+=" /usr/lib"
-	fi
-    fi
 
     (
-     	initdir=$TESTDIR/mnt
-
-	for _f in modules.builtin.bin modules.builtin; do
-	    [[ $srcmods/$_f ]] && break
-	done || {
-	    dfatal "No modules.builtin.bin and modules.builtin found!"
-	    return 1
-	}
+        initdir=$TESTDIR/mnt
+
+        (
+            cd "$initdir";
+            mkdir -p dev sys proc run etc var/run tmp var/lib/{dhcpd,rpcbind}
+            mkdir -p var/lib/nfs/{v4recovery,rpc_pipefs}
+            chmod 777 var/lib/rpcbind var/lib/nfs
+        )
+
+        for _f in modules.builtin.bin modules.builtin; do
+            [[ $srcmods/$_f ]] && break
+        done || {
+            dfatal "No modules.builtin.bin and modules.builtin found!"
+            return 1
+        }
 
         for _f in modules.builtin.bin modules.builtin modules.order; do
-	    [[ $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f"
-	done
+            [[ $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f"
+        done
 
- 	dracut_install sh ls shutdown poweroff stty cat ps ln ip \
- 	    dmesg mkdir cp ping exportfs \
- 	    modprobe rpc.nfsd rpc.mountd showmount tcpdump \
- 	    /etc/services sleep mount chmod
+        dracut_install sh ls shutdown poweroff stty cat ps ln ip \
+            dmesg mkdir cp ping exportfs \
+            modprobe rpc.nfsd rpc.mountd showmount tcpdump \
+            /etc/services sleep mount chmod
         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
-	    [ -f ${_terminfodir}/l/linux ] && break
-	done
-	dracut_install -o ${_terminfodir}/l/linux
- 	type -P portmap >/dev/null && dracut_install portmap
- 	type -P rpcbind >/dev/null && dracut_install rpcbind
- 	[ -f /etc/netconfig ] && dracut_install /etc/netconfig
- 	type -P dhcpd >/dev/null && dracut_install dhcpd
- 	[ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
- 	instmods nfsd sunrpc ipv6 lockd
- 	inst ./server-init.sh /sbin/init
- 	inst ./hosts /etc/hosts
- 	inst ./exports /etc/exports
- 	inst ./dhcpd.conf /etc/dhcpd.conf
- 	dracut_install /etc/nsswitch.conf /etc/rpc /etc/protocols
- 	dracut_install rpc.idmapd /etc/idmapd.conf
-
-	inst_libdir_file 'libnfsidmap_nsswitch.so*'
-	inst_libdir_file 'libnfsidmap/*.so*'
-	inst_libdir_file 'libnfsidmap*.so*'
+            [ -f ${_terminfodir}/l/linux ] && break
+        done
+        dracut_install -o ${_terminfodir}/l/linux
+        type -P portmap >/dev/null && dracut_install portmap
+        type -P rpcbind >/dev/null && dracut_install rpcbind
+        [ -f /etc/netconfig ] && dracut_install /etc/netconfig
+        type -P dhcpd >/dev/null && dracut_install dhcpd
+        [ -x /usr/sbin/dhcpd3 ] && inst /usr/sbin/dhcpd3 /usr/sbin/dhcpd
+        instmods nfsd sunrpc ipv6 lockd
+        inst ./server-init.sh /sbin/init
+        inst ./hosts /etc/hosts
+        inst ./exports /etc/exports
+        inst ./dhcpd.conf /etc/dhcpd.conf
+        dracut_install /etc/nsswitch.conf /etc/rpc /etc/protocols
+
+        dracut_install rpc.idmapd /etc/idmapd.conf
+
+        inst_libdir_file 'libnfsidmap_nsswitch.so*'
+        inst_libdir_file 'libnfsidmap/*.so*'
+        inst_libdir_file 'libnfsidmap*.so*'
 
         _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \
-	    |  tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+            |  tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
         _nsslibs=${_nsslibs#|}
         _nsslibs=${_nsslibs%|}
 
-	inst_libdir_file -n "$_nsslibs" 'libnss*.so*'
+        inst_libdir_file -n "$_nsslibs" 'libnss*.so*'
 
- 	(
- 	    cd "$initdir";
- 	    mkdir -p dev sys proc etc var/run tmp var/lib/{dhcpd,rpcbind}
- 	    mkdir -p var/lib/nfs/{v4recovery,rpc_pipefs}
- 	    chmod 777 var/lib/rpcbind var/lib/nfs
- 	)
+        inst /etc/nsswitch.conf /etc/nsswitch.conf
+        inst /etc/passwd /etc/passwd
+        inst /etc/group /etc/group
 
- 	inst /etc/nsswitch.conf /etc/nsswitch.conf
- 	inst /etc/passwd /etc/passwd
- 	inst /etc/group /etc/group
- 	for i in /lib*/libnss_files**;do
- 	    inst_library $i
- 	done
+        /sbin/depmod -a -b "$initdir" $kernel
 
-	/sbin/depmod -a -b "$initdir" $kernel
-
-	cp -a /etc/ld.so.conf* $initdir/etc
-	sudo ldconfig -r "$initdir"
+        cp -a /etc/ld.so.conf* $initdir/etc
+        sudo ldconfig -r "$initdir"
     )
 
     # Make client root inside server root
@@ -216,49 +202,48 @@ test_setup() {
     mkdir -p $initdir
 
     (
-	dracut_install sh shutdown poweroff stty cat ps ln ip \
+        dracut_install sh shutdown poweroff stty cat ps ln ip \
             mount dmesg mkdir cp ping grep ls
         for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
-	    [ -f ${_terminfodir}/l/linux ] && break
-	done
-	dracut_install -o ${_terminfodir}/l/linux
-	inst ./client-init.sh /sbin/init
-	(
-	    cd "$initdir"
-	    mkdir -p dev sys proc etc run
-	    mkdir -p var/lib/nfs/rpc_pipefs
-	)
-	inst /etc/nsswitch.conf /etc/nsswitch.conf
-	inst /etc/passwd /etc/passwd
-	inst /etc/group /etc/group
-
-	inst_libdir_file 'libnfsidmap_nsswitch.so*'
-	inst_libdir_file 'libnfsidmap/*.so*'
-	inst_libdir_file 'libnfsidmap*.so*'
+            [ -f ${_terminfodir}/l/linux ] && break
+        done
+        dracut_install -o ${_terminfodir}/l/linux
+        inst ./client-init.sh /sbin/init
+        (
+            cd "$initdir"
+            mkdir -p dev sys proc etc run
+            mkdir -p var/lib/nfs/rpc_pipefs
+        )
+        inst /etc/nsswitch.conf /etc/nsswitch.conf
+        inst /etc/passwd /etc/passwd
+        inst /etc/group /etc/group
+
+        dracut_install rpc.idmapd /etc/idmapd.conf
+        inst_libdir_file 'libnfsidmap_nsswitch.so*'
+        inst_libdir_file 'libnfsidmap/*.so*'
+        inst_libdir_file 'libnfsidmap*.so*'
 
         _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \
-	    |  tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+            |  tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
         _nsslibs=${_nsslibs#|}
         _nsslibs=${_nsslibs%|}
 
-	inst_libdir_file -n "$_nsslibs" 'libnss*.so*'
+        inst_libdir_file -n "$_nsslibs" 'libnss*.so*'
 
-	cp -a /etc/ld.so.conf* $initdir/etc
-	sudo ldconfig -r "$initdir"
+        cp -a /etc/ld.so.conf* $initdir/etc
+        sudo ldconfig -r "$initdir"
     )
 
-    chroot $initdir
-
     sudo umount $TESTDIR/mnt
     rm -fr $TESTDIR/mnt
 
     # Make an overlay with needed tools for the test harness
     (
- 	initdir=$TESTDIR/overlay
- 	mkdir $TESTDIR/overlay
- 	dracut_install poweroff shutdown
- 	inst_hook emergency 000 ./hard-off.sh
-	inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+        initdir=$TESTDIR/overlay
+        mkdir $TESTDIR/overlay
+        dracut_install poweroff shutdown
+        inst_hook emergency 000 ./hard-off.sh
+        inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
     )
 
     # Make server's dracut image
@@ -277,8 +262,8 @@ test_setup() {
 
 kill_server() {
     if [[ -s $TESTDIR/server.pid ]]; then
-	sudo kill -TERM $(cat $TESTDIR/server.pid)
-	rm -f $TESTDIR/server.pid
+        sudo kill -TERM $(cat $TESTDIR/server.pid)
+        rm -f $TESTDIR/server.pid
     fi
 }