OSDN Git Service

ANRdaemon: move trace result from /sdcard to /data am: d93aa41807
[android-x86/system-extras.git] / tests / net_test / run_net_test.sh
index fae1145..080aac7 100755 (executable)
@@ -1,18 +1,36 @@
 #!/bin/bash
 
-# Kernel configration options.
-OPTIONS=" IPV6 IPV6_ROUTER_PREF IPV6_MULTIPLE_TABLES IPV6_ROUTE_INFO"
+# Kernel configuration options.
+OPTIONS=" DEBUG_SPINLOCK DEBUG_ATOMIC_SLEEP DEBUG_MUTEXES DEBUG_RT_MUTEXES"
+OPTIONS="$OPTIONS IPV6 IPV6_ROUTER_PREF IPV6_MULTIPLE_TABLES IPV6_ROUTE_INFO"
 OPTIONS="$OPTIONS TUN SYN_COOKIES IP_ADVANCED_ROUTER IP_MULTIPLE_TABLES"
 OPTIONS="$OPTIONS NETFILTER NETFILTER_ADVANCED NETFILTER_XTABLES"
 OPTIONS="$OPTIONS NETFILTER_XT_MARK NETFILTER_XT_TARGET_MARK"
 OPTIONS="$OPTIONS IP_NF_IPTABLES IP_NF_MANGLE"
 OPTIONS="$OPTIONS IP6_NF_IPTABLES IP6_NF_MANGLE INET6_IPCOMP"
 OPTIONS="$OPTIONS IPV6_PRIVACY IPV6_OPTIMISTIC_DAD"
+OPTIONS="$OPTIONS CONFIG_NETFILTER_XT_TARGET_NFLOG"
+OPTIONS="$OPTIONS CONFIG_NETFILTER_XT_MATCH_QUOTA CONFIG_NETFILTER_XT_MATCH_QUOTA2"
+OPTIONS="$OPTIONS CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG"
+OPTIONS="$OPTIONS CONFIG_INET_UDP_DIAG CONFIG_INET_DIAG_DESTROY"
+
 # For 3.1 kernels, where devtmpfs is not on by default.
 OPTIONS="$OPTIONS DEVTMPFS DEVTMPFS_MOUNT"
 
-# How many tap interfaces to create.
-NUMTAPINTERFACES=2
+# These two break the flo kernel due to differences in -Werror on recent GCC.
+DISABLE_OPTIONS=" CONFIG_REISERFS_FS CONFIG_ANDROID_PMEM"
+
+# How many TAP interfaces to create to provide the VM with real network access
+# via the host. This requires privileges (e.g., root access) on the host.
+#
+# This is not needed to run the tests, but can be used, for example, to allow
+# the VM to update system packages, or to write tests that need access to a
+# real network. The VM does not set up networking by default, but it contains a
+# DHCP client and has the ability to use IPv6 autoconfiguration. This script
+# does not perform any host-level setup beyond configuring tap interfaces;
+# configuring IPv4 NAT and/or IPv6 router advertisements or ND proxying must
+# be done separately.
+NUMTAPINTERFACES=0
 
 # The root filesystem disk image we'll use.
 ROOTFS=net_test.rootfs.20150203
@@ -42,40 +60,47 @@ fi
 echo "Using $ROOTFS"
 cd -
 
-# Create NUMTAPINTERFACES tap interfaces on the host, and prepare UML command
-# line params to use them. The interfaces are called <user>TAP0, <user>TAP1,
-# ..., on the host, and eth0, eth1, ..., in the VM.
-user=${USER:0:10}
-tapinterfaces=
-netconfig=
-for id in $(seq 0 $(( NUMTAPINTERFACES - 1 )) ); do
-  tap=${user}TAP$id
-  tapinterfaces="$tapinterfaces $tap"
-  mac=$(printf fe:fd:00:00:00:%02x $id)
-  netconfig="$netconfig eth$id=tuntap,$tap,$mac"
-done
-
-for tap in $tapinterfaces; do
-  if ! ip link list $tap > /dev/null; then
-    echo "Creating tap interface $tap" >&2
-    sudo tunctl -u $USER -t $tap
-    sudo ip link set $tap up
-  fi
-done
+# If network access was requested, create NUMTAPINTERFACES tap interfaces on
+# the host, and prepare UML command line params to use them. The interfaces are
+# called <user>TAP0, <user>TAP1, on the host, and eth0, eth1, ..., in the VM.
+if (( $NUMTAPINTERFACES > 0 )); then
+  user=${USER:0:10}
+  tapinterfaces=
+  netconfig=
+  for id in $(seq 0 $(( NUMTAPINTERFACES - 1 )) ); do
+    tap=${user}TAP$id
+    tapinterfaces="$tapinterfaces $tap"
+    mac=$(printf fe:fd:00:00:00:%02x $id)
+    netconfig="$netconfig eth$id=tuntap,$tap,$mac"
+  done
+
+  for tap in $tapinterfaces; do
+    if ! ip link list $tap > /dev/null; then
+      echo "Creating tap interface $tap" >&2
+      sudo tunctl -u $USER -t $tap
+      sudo ip link set $tap up
+    fi
+  done
+fi
 
-# Exporting ARCH=um SUBARCH=x86_64 doesn't seem to work, as it "sometimes" (?)
-# results in a 32-bit kernel.
+if [ -z "$KERNEL_BINARY" ]; then
+  # Exporting ARCH=um SUBARCH=x86_64 doesn't seem to work, as it "sometimes"
+  # (?) results in a 32-bit kernel.
 
-# If there's no kernel config at all, create one or UML won't work.
-[ -f .config ] || make defconfig ARCH=um SUBARCH=x86_64
+  # If there's no kernel config at all, create one or UML won't work.
+  [ -f .config ] || make defconfig ARCH=um SUBARCH=x86_64
 
-# Enable the kernel config options listed in $OPTIONS.
-cmdline=${OPTIONS// / -e }
-./scripts/config $cmdline
+  # Enable the kernel config options listed in $OPTIONS.
+  cmdline=${OPTIONS// / -e }
+  ./scripts/config $cmdline
 
-# olddefconfig doesn't work on old kernels.
-if ! make olddefconfig ARCH=um SUBARCH=x86_64 CROSS_COMPILE= ; then
-  cat >&2 << EOF
+  # Disable the kernel config options listed in $DISABLE_OPTIONS.
+  cmdline=${DISABLE_OPTIONS// / -d }
+  ./scripts/config $cmdline
+
+  # olddefconfig doesn't work on old kernels.
+  if ! make olddefconfig ARCH=um SUBARCH=x86_64 CROSS_COMPILE= ; then
+    cat >&2 << EOF
 
 Warning: "make olddefconfig" failed.
 Perhaps this kernel is too old to support it.
@@ -83,15 +108,18 @@ You may get asked lots of questions.
 Keep enter pressed to accept the defaults.
 
 EOF
+  fi
+
+  # Compile the kernel.
+  make -j32 linux ARCH=um SUBARCH=x86_64 CROSS_COMPILE=
+  KERNEL_BINARY=./linux
 fi
 
-# Compile the kernel.
-make -j12 linux ARCH=um SUBARCH=x86_64 CROSS_COMPILE=
 
 # Get the absolute path to the test file that's being run.
 dir=/host$(dirname $(readlink -f $0))
 
 # Start the VM.
-exec ./linux umid=net_test ubda=$(dirname $0)/$ROOTFS \
+exec $KERNEL_BINARY umid=net_test ubda=$(dirname $0)/$ROOTFS \
     mem=512M init=/sbin/net_test.sh net_test=$dir/$test \
     $netconfig