diff options
Diffstat (limited to 'tests/setup-stress-dependencies.sh')
-rwxr-xr-x | tests/setup-stress-dependencies.sh | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/tests/setup-stress-dependencies.sh b/tests/setup-stress-dependencies.sh new file mode 100755 index 0000000000..a7f3c498c1 --- /dev/null +++ b/tests/setup-stress-dependencies.sh @@ -0,0 +1,133 @@ +#!/usr/bin/env bash +# set -x + +# +# Constants +# +readonly EXIT_CODE_SUCCESS=0 + +# +# This script should be located in coreclr/tests. +# + +function print_usage { + echo '' + echo 'Download coredistools for GC stress testing' + echo '' + echo 'Command line:' + echo '' + echo './setup-gcstress.sh --outputDir=<coredistools_lib_install_path>' + echo '' + echo 'Required arguments:' + echo ' --outputDir=<path> : Directory to install libcoredistools.so' + echo '' +} + +function exit_with_error { + local errorCode=$1 + local errorMsg=$2 + + if [ ! -z "$2" ]; then + echo $2 + fi + + exit $errorCode +} + +function handle_ctrl_c { + exit_with_error 1 'Aborted by Ctrl+C' + } + +# Register the Ctrl-C handler +trap handle_ctrl_c INT + +# Argument variables +libInstallDir= + +# Handle arguments +verbose=0 +for i in "$@" +do + case $i in + -h|--help) + exit $EXIT_CODE_SUCCESS + ;; + -v|--verbose) + verbose=1 + ;; + --outputDir=*) + libInstallDir=${i#*=} + ;; + *) + echo "Unknown switch: $i" + print_usage + exit $EXIT_CODE_SUCCESS + ;; + esac +done + +if [ -z "$libInstallDir" ]; then + echo "--libInstallDir is required." + print_usage + exit_with_error 1 +fi + +# This script must be located in coreclr/tests. +scriptDir=$(cd "$(dirname "$0")"; pwd -P) + +echo "Running init-tools.sh" +$scriptDir/../init-tools.sh + +dotnetToolsDir=$scriptDir/../Tools +dotnetCmd=${dotnetToolsDir}/dotnetcli/dotnet +packageDir=${scriptDir}/../packages +csprojPath=${scriptDir}/src/Common/stress_dependencies/stress_dependencies.csproj + +# Check tool directory +if [ ! -e $dotnetToolsDir ]; then + exit_with_error 1 'Directory containing dotnet commandline does not exist:'$dotnetToolsDir +fi +if [ ! -e $dotnetCmd ]; then + exit_with_error 1 'dotnet commandline does not exist:'$dotnetCmd +fi + +# make package directory +if [ ! -e $packageDir ]; then + mkdir -p $packageDir +fi + +# make output directory +if [ ! -e $libInstallDir ]; then + mkdir -p $libInstallDir +fi + +# Query runtime Id +rid=`$dotnetCmd --info | grep 'RID:' | sed 's/^ *RID: *//g'` +if [ -z "$rid" ]; then + exit_with_error 1 "Failed to query runtime Id" +fi + +# Download the package +echo Downloading CoreDisTools package +bash -c -x "$dotnetCmd restore $csprojPath --source https://dotnet.myget.org/F/dotnet-core/ --packages $packageDir" +if [ $? -ne 0 ] +then + exit_with_error 1 "Failed to restore the package" +fi + +# Get library path +libPath=`find $packageDir | grep $rid | grep -m 1 libcoredistools` +if [ ! -e $libPath ]; then + exit_with_error 1 'Failed to locate the downloaded library' +fi + +# Copy library to output directory +echo 'Copy library:' $libPath '-->' $libInstallDir/ +cp -f $libPath $libInstallDir +if [ $? -ne 0 ] +then + exit_with_error 1 "Failed to copy the library" +fi + +# Return success +exit $EXIT_CODE_SUCCESS |