82 lines
1.7 KiB
Bash
Executable file
82 lines
1.7 KiB
Bash
Executable file
#!/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
|