docker-android/genymotion/generate_config.sh

82 lines
1.7 KiB
Bash
Raw Normal View History

2018-05-29 01:04:30 +01:00
#!/bin/bash
node_config_json=$1
if [ -z "$PLATFORM_NAME" ]; then
PLATFORM_NAME="Android"
fi
if [ -z "$APPIUM_HOST" ]; then
APPIUM_HOST=$(hostname -i)
fi
if [ -z "$APPIUM_PORT" ]; then
APPIUM_PORT=4723
fi
if [ -z "$SELENIUM_HOST" ]; then
SELENIUM_HOST="172.17.0.1"
fi
if [ -z "$SELENIUM_PORT" ]; then
SELENIUM_PORT=4444
fi
if [ -z "$BROWSER_NAME" ]; then
BROWSER_NAME="android"
fi
if [ -z "$NODE_TIMEOUT" ]; then
NODE_TIMEOUT=300
fi
#Get device names
devices=($(adb devices | grep -oP "\K([^ ]+)(?=\sdevice(\W|$))"))
echo "Devices found: ${#devices[@]}"
#Create capabilities json configs
function create_capabilities() {
capabilities=""
for name in ${devices[@]}; do
os_version="$(adb -s $name shell getprop ro.build.version.release | tr -d '\r')"
capabilities+=$(cat <<_EOF
{
"platform": "$PLATFORM_NAME",
"platformName": "$PLATFORM_NAME",
"version": "$os_version",
"browserName": "$BROWSER_NAME",
"deviceName": "$name",
"maxInstances": 1,
"applicationName": "$name"
}
_EOF
)
if [ ${devices[-1]} != $name ]; then
capabilities+=', '
fi
done
echo "$capabilities"
}
#Final node configuration json string
nodeconfig=$(cat <<_EOF
{
"capabilities": [$(create_capabilities)],
"configuration": {
"cleanUpCycle": 2000,
"timeout": $NODE_TIMEOUT,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url": "http://$APPIUM_HOST:$APPIUM_PORT/wd/hub",
"host": "$APPIUM_HOST",
"port": $APPIUM_PORT,
"maxSession": 6,
"register": true,
"registerCycle": 5000,
"hubHost": "$SELENIUM_HOST",
"hubPort": $SELENIUM_PORT
}
}
_EOF
)
echo "$nodeconfig" > $node_config_json