diff --git a/README_GENYMOTION.md b/README_GENYMOTION.md index 300ed18..6fed8df 100644 --- a/README_GENYMOTION.md +++ b/README_GENYMOTION.md @@ -11,9 +11,8 @@ You can easily scale your Appium tests on Genymotion Android virtual devices in ```bash export USER="xxx" export PASS="xxx" - export LICENSE="xxx" - docker run -it --rm -p 4723:4723 -v $PWD/genymotion/example/sample_devices:/root/tmp -e TYPE=SaaS -e USER=$USER -e PASS=$PASS -e LICENSE=$LICENSE budtmo/docker-android-genymotion + docker run -it --rm -p 4723:4723 -v $PWD/genymotion/example/sample_devices:/root/tmp -e TYPE=SaaS -e USER=$USER -e PASS=$PASS budtmo/docker-android-genymotion ``` 2. On PaaS (AWS)
diff --git a/docker/Genymotion b/docker/Genymotion index fe4615a..f0022c8 100644 --- a/docker/Genymotion +++ b/docker/Genymotion @@ -127,6 +127,7 @@ ENV LANG=C.UTF-8 #==================== RUN echo | ssh-keygen -q ENV GENYMOTION=true \ + INSTANCES_PATH=/root/tmp/instances.txt \ APPIUM_LOG=$LOG_PATH/appium.log RUN pip3 install gmsaas COPY genymotion/generate_config.sh genymotion/geny_start.sh genymotion/enable_adb.sh /root/ diff --git a/genymotion/example/sample_devices/devices.json b/genymotion/example/sample_devices/devices.json index 3150d45..b635aaa 100755 --- a/genymotion/example/sample_devices/devices.json +++ b/genymotion/example/sample_devices/devices.json @@ -1,11 +1,11 @@ [ { - "template": "Samsung Galaxy S7 - 6.0.0 - API 23 - 1440x2560", + "template": "a2a0c86c-7572-45fe-98d0-66f8efed9fa0", "device": "SamsungS7V6", "port": 38727 }, { - "template": "Google Nexus 6 - 8.0 - API 26 - 1440x2560", + "template": "80a67ae9-430c-4824-a386-befbb19518b9", "device": "Nexus6V8" } ] diff --git a/genymotion/example/sample_devices/instances.txt b/genymotion/example/sample_devices/instances.txt new file mode 100644 index 0000000..3ed77f9 --- /dev/null +++ b/genymotion/example/sample_devices/instances.txt @@ -0,0 +1 @@ +e2dc186f-3276-4c90-a491-e67f1fcfb379 b0b2b3b3-4a23-4d8c-aed9-02ddb9e65718 diff --git a/genymotion/example/start_compose.sh b/genymotion/example/start_compose.sh index 630c390..65fbdc6 100755 --- a/genymotion/example/start_compose.sh +++ b/genymotion/example/start_compose.sh @@ -1,3 +1,3 @@ #!/bin/bash -(export USER=$USER && export PASS=$PASS && export LICENSE=$LICENSE && docker-compose -f geny.yml up -d) +(export USER=$USER && export PASS=$PASS && docker-compose -f geny.yml up -d) diff --git a/genymotion/geny_start.sh b/genymotion/geny_start.sh index 7ae6a77..cf9da4a 100755 --- a/genymotion/geny_start.sh +++ b/genymotion/geny_start.sh @@ -38,16 +38,26 @@ export TYPES=${types[@]} getAbort() { case $TYPE in "${types[0]}" ) - contents=$(cat $TEMPLATE) - echo "ABORT SIGNAL detected! Stopping all created emulators..." - for row in $(echo "${contents}" | jq -r '.[] | @base64'); do - get_value() { - echo ${row} | base64 --decode | jq -r ${1} - } + echo "ABORT SIGNAL detected! Stopping all created instances / emulators..." - gmtool --cloud admin stopdisposable $(get_value '.device') - done - echo "Done" + # Get the list of created instances from the instance.txt + if [ ! -f "$INSTANCES_PATH" ]; then + echo "File not found! Nothing to do!" + exit 1 + else + content=$(cat ${INSTANCES_PATH}) + read -a instances <<< $content + echo "All created instances: ${instances[@]}" + + # Stop the instance one by one + for i in "${instances[@]}" + do + echo "stop instance with id \"${i}\"" + gmsaas instances stop "${i}" + echo "stopped" + done + echo "Done" + fi ;; "${types[1]}" ) contents=$(cat $TEMPLATE) diff --git a/src/appium.sh b/src/appium.sh index 365e8f0..fb3e408 100644 --- a/src/appium.sh +++ b/src/appium.sh @@ -7,12 +7,12 @@ echo "Selected type of deployment: $TYPE, Template file: $TEMPLATE" function prepare_geny_cloud() { contents=$(cat $TEMPLATE) - # Register - echo "Register user" - gmtool config username="${USER}" password="${PASS}" - gmtool license register "${LICENSE}" + # LogIn + echo "Log In" + gmsaas auth login "${USER}" "${PASS}" # Start device(s) + created_instances=() echo "Creating device(s) based on given json file..." for row in $(echo "${contents}" | jq -r '.[] | @base64'); do get_value() { @@ -22,16 +22,24 @@ function prepare_geny_cloud() { template=$(get_value '.template') device=$(get_value '.device') port=$(get_value '.port') - + + echo "Starting \"$device\" with template name \"$template\"..." + instance_uuid=$(gmsaas instances start "${template}" "${device}") + echo "Instance-ID: \"$instance_uuid\"" + created_instances+=("${instance_uuid}") if [[ $port != null ]]; then - echo "Starting \"$device\" with template name \"$template\" on port \"$port\"..." - gmtool --cloud admin startdisposable "${template}" "${device}" --adb-serial-port "${port}" + echo "Connect device on port \"$port\"..." + gmsaas instances adbconnect "${instance_uuid}" --adb-serial-port "${port}" else - echo "Starting \"$device\" with template name \"$template\"..." - gmtool --cloud admin startdisposable "${template}" "${device}" + echo "Connect device on port..." + gmsaas instances adbconnect "${instance_uuid}" fi done + + # Store created instances in a file + echo "All created instances: ${created_instances[@]}" + echo "${created_instances[@]}" > "${INSTANCES_PATH}" } function prepare_geny_aws() {