summaryrefslogtreecommitdiff
path: root/tests/scripts/arm32_ci_test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/scripts/arm32_ci_test.sh')
-rwxr-xr-xtests/scripts/arm32_ci_test.sh124
1 files changed, 124 insertions, 0 deletions
diff --git a/tests/scripts/arm32_ci_test.sh b/tests/scripts/arm32_ci_test.sh
new file mode 100755
index 0000000000..33a951e324
--- /dev/null
+++ b/tests/scripts/arm32_ci_test.sh
@@ -0,0 +1,124 @@
+#!/bin/bash
+
+set -x
+
+function usage {
+ echo 'ARM Test Script'
+ echo '$ ./tests/scripts/arm32_ci_test.sh'
+ echo ' --abi=arm'
+ echo ' --buildConfig=Release'
+ echo 'Required Arguments:'
+ echo ' --abi=<abi> : arm (default) or armel'
+ echo ' --buildConfig=<config> : Release (default) Checked, or Debug'
+}
+
+# Display error message and exit
+function exit_with_error {
+ set +x
+
+ local errorMessage="$1"
+ local printUsage=$2
+
+ echo "ERROR: $errorMessage"
+ if [ "$printUsage" == "true" ]; then
+ echo ''
+ usage
+ fi
+ exit 1
+}
+
+# Exit if the input path does not exist
+function exit_if_path_absent {
+ local path="$1"
+ local errorMessage="$2"
+ local printUsage=$3
+
+ if [ ! -f "$path" -a ! -d "$path" ]; then
+ exit_with_error "$errorMessage" $printUsage
+ fi
+}
+
+__abi="arm"
+__buildConfig="Release"
+
+# Parse command line arguments
+for arg in "$@"
+do
+ case $arg in
+ --abi=*)
+ __abi=${arg#*=}
+ if [[ "$__abi" != "arm" && "$__abi" != "armel" ]]; then
+ exit_with_error "--abi can be either arm or armel" true
+ fi
+ ;;
+ --buildConfig=*)
+ __buildConfig=${arg#*=}
+ if [[ "$__buildConfig" != "Debug" && "$__buildConfig" != "Release" && "$__buildConfig" != "Checked" ]]; then
+ exit_with_error "--buildConfig can be Debug, Checked or Release" true
+ fi
+ ;;
+ -v|--verbose)
+ __verboseFlag="verbose"
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ *)
+ exit_with_error "$arg not a recognized argument" true
+ ;;
+ esac
+done
+__buildDirName="Linux.${__abi}.${__buildConfig}"
+
+CORECLR_DIR=/opt/code
+ARM_CHROOT_HOME_DIR=/home/coreclr
+
+if [ -z "${ROOTFS_DIR}" ]; then
+ __ROOTFS_DIR=${CORECLR_DIR}/cross/rootfs/${__abi}
+else
+ __ROOTFS_DIR=${ROOTFS_DIR}
+fi
+
+if [ "$__abi" == "armel" ]; then
+ # TODO: Make use of a single Tizen rootfs for build and test
+
+ # TODO-cleanup: the latest docker image already has mic installed.
+ # Prepare Tizen (armel) environment
+ #echo "deb http://download.tizen.org/tools/latest-release/Ubuntu_14.04 /" >> /etc/apt/sources.list
+ #apt-get update
+ #apt-get -y -qq --force-yes install mic
+
+ pushd ${CORECLR_DIR}/cross/armel/tizen
+ mic --non-interactive create fs --pack-to=tizen.tar.gz tizen-dotnet.ks
+ if [ -d ${__ROOTFS_DIR} ]; then
+ mv ${__ROOTFS_DIR} ${__ROOTFS_DIR}_build
+ fi
+ mkdir -p ${__ROOTFS_DIR}
+ tar -zxf mic-output/tizen.tar.gz -C ${__ROOTFS_DIR}
+ apt-get update
+ apt-get -y -qq --force-yes install --reinstall qemu binfmt-support qemu-user-static
+ __qemuARM=$(which qemu-arm-static)
+ cp $__qemuARM ${CORECLR_DIR}/cross/rootfs/armel/usr/bin/
+ cp $__qemuARM ${__ROOTFS_DIR}/usr/bin/
+ popd
+fi
+
+# Mount
+mkdir -p ${__ROOTFS_DIR}${ARM_CHROOT_HOME_DIR}
+mount -t proc /proc ${__ROOTFS_DIR}/proc
+mount -o bind /dev ${__ROOTFS_DIR}/dev
+mount -o bind /dev/pts ${__ROOTFS_DIR}/dev/pts
+mount -o bind /sys ${__ROOTFS_DIR}/sys
+mount -o bind ${CORECLR_DIR} ${__ROOTFS_DIR}${ARM_CHROOT_HOME_DIR}
+
+chroot ${__ROOTFS_DIR} /bin/bash -x <<EOF
+ cd ${ARM_CHROOT_HOME_DIR}
+ ./tests/runtest.sh --sequential\
+ --coreClrBinDir=${ARM_CHROOT_HOME_DIR}/bin/Product/${__buildDirName} \
+ --mscorlibDir=${ARM_CHROOT_HOME_DIR}/bin/Product/${__buildDirName} \
+ --testNativeBinDir=${ARM_CHROOT_HOME_DIR}/bin/obj/${__buildDirName}/tests \
+ --coreFxBinDir=${ARM_CHROOT_HOME_DIR}/bin/CoreFxBinDir \
+ --testRootDir=${ARM_CHROOT_HOME_DIR}/bin/tests/Windows_NT.x64.${__buildConfig} \
+ --testDirFile=${ARM_CHROOT_HOME_DIR}/tests/testsRunningInsideARM.txt
+EOF