 b0839232fa
			
		
	
	
		b0839232fa
		
	
	
	
	
		
			
			This allows automated testing of the wpa_supplicant D-Bus interface. The instance controlling wlan0 registers with D-Bus if dbus-daemon was started successfully. This is only used in VM testing, i.e., not when run-tests.sh is used on the host system with D-Bus running for normal system purposes. Signed-off-by: Jouni Malinen <j@w1.fi>
		
			
				
	
	
		
			117 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| # mount all kinds of things
 | |
| mount tmpfs -t tmpfs /etc
 | |
| # we need our own /dev/rfkill, and don't want device access
 | |
| mount tmpfs -t tmpfs /dev
 | |
| mount tmpfs -t tmpfs /tmp
 | |
| # some sockets go into /var/run, and / is read-only
 | |
| mount tmpfs -t tmpfs /var/run
 | |
| mount proc -t proc /proc
 | |
| mount sysfs -t sysfs /sys
 | |
| # needed for tracing
 | |
| mount debugfs -t debugfs /sys/kernel/debug
 | |
| 
 | |
| # reboot on any sort of crash
 | |
| sysctl kernel.panic_on_oops=1
 | |
| sysctl kernel.panic=1
 | |
| 
 | |
| # get extra command line variables from /proc/cmdline
 | |
| TESTDIR=$(sed 's/.*testdir=\([^ ]*\) .*/\1/' /proc/cmdline)
 | |
| TIMEWARP=$(sed 's/.*timewarp=\([^ ]*\) .*/\1/' /proc/cmdline)
 | |
| EPATH=$(sed 's/.*EPATH=\([^ ]*\) .*/\1/' /proc/cmdline)
 | |
| ARGS=$(sed 's/.*ARGS=//' /proc/cmdline)
 | |
| 
 | |
| # create /dev entries we need
 | |
| mknod -m 660 /dev/ttyS0 c 4 64
 | |
| mknod -m 660 /dev/random c 1 8
 | |
| mknod -m 660 /dev/urandom c 1 9
 | |
| mknod -m 666 /dev/null c 1 3
 | |
| test -f /sys/class/misc/rfkill/dev && \
 | |
| 	mknod -m 660 /dev/rfkill c $(cat /sys/class/misc/rfkill/dev | tr ':' ' ')
 | |
| ln -s /proc/self/fd/0 /dev/stdin
 | |
| ln -s /proc/self/fd/1 /dev/stdout
 | |
| ln -s /proc/self/fd/2 /dev/stderr
 | |
| 
 | |
| # create dummy sudo - everything runs as uid 0
 | |
| mkdir /tmp/bin
 | |
| cat > /tmp/bin/sudo << EOF
 | |
| #!/bin/bash
 | |
| 
 | |
| exec "\$@"
 | |
| EOF
 | |
| chmod +x /tmp/bin/sudo
 | |
| # and put it into $PATH, as well as our extra-$PATH
 | |
| export PATH=/tmp/bin:$EPATH:$PATH
 | |
| 
 | |
| # some tests assume adm/admin group(s) exist(s)
 | |
| cat > /etc/group <<EOF
 | |
| adm:x:0:
 | |
| admin:x:0:
 | |
| messagebus:x:106:
 | |
| EOF
 | |
| # root should exist
 | |
| cat > /etc/passwd <<EOF
 | |
| root:x:0:0:root:/tmp:/bin/bash
 | |
| messagebus:x:102:106::/var/run/dbus:/bin/false
 | |
| EOF
 | |
| cat > /etc/ethertypes <<EOF
 | |
| IPv4	 	0800  	ip ip4
 | |
| ARP		0806	ether-arp
 | |
| IPv6		86DD	ip6
 | |
| EOF
 | |
| cat > /etc/protocols <<EOF
 | |
| ip      0       IP
 | |
| icmp    1       ICMP
 | |
| tcp     6       TCP
 | |
| udp     17      UDP
 | |
| ipv6-icmp 58	IPv6-ICMP
 | |
| EOF
 | |
| 
 | |
| # local network is needed for some tests
 | |
| ip link set lo up
 | |
| 
 | |
| # create logs mountpoint and mount the logshare
 | |
| mkdir /tmp/logs
 | |
| mount -t 9p -o trans=virtio,rw logshare /tmp/logs
 | |
| 
 | |
| if [ "$TIMEWARP" = "1" ] ; then
 | |
|     (
 | |
|         while sleep 1 ; do
 | |
|             date --set "@$(($(date +%s) + 19))"
 | |
|         done
 | |
|     ) &
 | |
| fi
 | |
| 
 | |
| # check if we're rebooting due to a kernel panic ...
 | |
| if grep -q 'Kernel panic' /tmp/logs/console ; then
 | |
| 	echo "KERNEL CRASHED!" >/dev/ttyS0
 | |
| else
 | |
| 	# finally run the tests
 | |
| 	export USER=0
 | |
| 	export LOGDIR=/tmp/logs
 | |
| 	export DBFILE=$LOGDIR/results.db
 | |
| 	export PREFILL_DB=y
 | |
| 
 | |
| 	# some tests need CRDA, install a simple uevent helper
 | |
| 	# and preload the 00 domain it will have asked for already
 | |
| 	echo $TESTDIR/vm/uevent.sh > /sys/kernel/uevent_helper
 | |
| 	COUNTRY=00 crda
 | |
| 
 | |
| 	mkdir -p /var/run/dbus
 | |
| 	touch /var/run/dbus/hwsim-test
 | |
| 	chown messagebus.messagebus /var/run/dbus
 | |
| 	dbus-daemon --config-file=$TESTDIR/vm/dbus.conf --fork
 | |
| 
 | |
| 	cd $TESTDIR
 | |
| 	./run-all.sh $ARGS </dev/ttyS0 >/dev/ttyS0 2>&1
 | |
| 	if test -d /sys/kernel/debug/gcov ; then
 | |
| 		cp -ar /sys/kernel/debug/gcov /tmp/logs/
 | |
| 		# these are broken as they're updated while being read ...
 | |
| 		find /tmp/logs/gcov/ -wholename '*kernel/gcov/*' -print0 | xargs -0 rm
 | |
| 	fi
 | |
| 	#bash </dev/ttyS0 >/dev/ttyS0 2>&1
 | |
| fi
 | |
| 
 | |
| # and shut down the machine again
 | |
| halt -f -p
 |