Skip to content

Commit

Permalink
chore: remove inactive browserstack wrapper package (#1991)
Browse files Browse the repository at this point in the history
* chore: remove inactive browserstack wrapper package

No longer uses the "inactive" browserstack wrapper package from npm,
which was just responsible for creating the readyfile.

We can create the readyfile ourself and get rid of the npm package.

* Fix incorrect comments

* Don't wait for tunnel if timer exceeded

* Fix race conditions

* Add empty line before logging that the tunnel is ready.
  • Loading branch information
devversion authored and tinayuangao committed Dec 1, 2016
1 parent 26eb7ce commit 6534eb0
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 68 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ env:
- BROWSER_STACK_ACCESS_KEY=BWCd4SynLzdDcv8xtzsB
- ARCH=linux-x64
- BROWSER_PROVIDER_READY_FILE=/tmp/angular-material2-build/readyfile
- BROWSER_PROVIDER_ERROR_FILE=/tmp/angular-material2-build/errorfile
# GITHUB_TOKEN_ANGULAR
- secure: "fq/U7VDMWO8O8SnAQkdbkoSe2X92PVqg4d044HmRYVmcf6YbO48+xeGJ8yOk0pCBwl3ISO4Q2ot0x546kxfiYBuHkZetlngZxZCtQiFT9kyId8ZKcYdXaIW9OVdw3Gh3tQyUwDucfkVhqcs52D6NZjyE2aWZ4/d1V4kWRO/LMgo="
matrix:
Expand Down
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@
"@types/node": "^6.0.34",
"@types/run-sequence": "0.0.27",
"@types/rx": "^2.5.33",
"browserstacktunnel-wrapper": "^2.0.0",
"conventional-changelog": "^1.1.0",
"express": "^4.14.0",
"firebase-tools": "^2.2.1",
Expand Down
59 changes: 0 additions & 59 deletions scripts/browserstack/start_tunnel.js

This file was deleted.

73 changes: 71 additions & 2 deletions scripts/browserstack/start_tunnel.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,72 @@
export BROWSER_STACK_ACCESS_KEY=`echo $BROWSER_STACK_ACCESS_KEY | rev`
#!/bin/bash

node ./scripts/browserstack/start_tunnel.js &
set -e -o pipefail

# Workaround for Travis CI cookbook https://github.com/travis-ci/travis-ci/issues/4862,
# where $PATH will be extended with relative paths to the NPM binaries.
PATH=`echo $PATH | sed -e 's/:\.\/node_modules\/\.bin//'`

TUNNEL_FILE="BrowserStackLocal-linux-x64.zip"
TUNNEL_URL="https://www.browserstack.com/browserstack-local/$TUNNEL_FILE"
TUNNEL_DIR="/tmp/browserstack-tunnel"
TUNNEL_LOG="$LOGS_DIR/browserstack-tunnel.log"

BROWSER_STACK_ACCESS_KEY=`echo $BROWSER_STACK_ACCESS_KEY | rev`

# Cleanup and create the folder structure for the tunnel connector.
rm -rf $TUNNEL_DIR $BROWSER_PROVIDER_READY_FILE
mkdir -p $TUNNEL_DIR
touch $TUNNEL_LOG

cd $TUNNEL_DIR

# Download the browserstack local binaries.
curl $TUNNEL_URL -o $TUNNEL_FILE 2> /dev/null 1> /dev/null

# Extract the browserstack local binaries from the tarball.
mkdir -p browserstack-tunnel
unzip -q $TUNNEL_FILE -d browserstack-tunnel

# Cleanup the download directory.
rm $TUNNEL_FILE

ARGS=""

# Set tunnel-id only on Travis, to make local testing easier.
if [ ! -z "$TRAVIS_JOB_NUMBER" ]; then
ARGS="$ARGS --local-identifier $TRAVIS_JOB_NUMBER"
fi

echo "Starting Browserstack Local in the background, logging into:"
echo " $TUNNEL_LOG"
echo " ---"
echo " $ARGS"

# Extension to the BrowserStackLocal binaries, because those can't create a readyfile.
function create_ready_file {

# To be able to exit the tail properly we need to have a sub shell spawned, which is
# used to track the state of tail.
{ sleep 120; touch $BROWSER_PROVIDER_ERROR_FILE; } &

TIMER_PID=$!

# Disown the background process, because we don't want to show any messages when killing
# the timer.
disown

# When the tail recognizes the `Ctrl-C` log message the BrowserStack Tunnel is up.
{
tail -n0 -f $TUNNEL_LOG --pid $TIMER_PID | { sed '/Ctrl/q' && kill -9 $TIMER_PID; };
} &> /dev/null

echo
echo "BrowserStack Tunnel ready"

touch $BROWSER_PROVIDER_READY_FILE
}

browserstack-tunnel/BrowserStackLocal -k $BROWSER_STACK_ACCESS_KEY $ARGS &>> $TUNNEL_LOG &

# Wait for the tunnel to be ready and create the readyfile with the Browserstack PID
create_ready_file &
8 changes: 2 additions & 6 deletions scripts/browserstack/teardown_tunnel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,9 @@ set -e -o pipefail

echo "Shutting down Browserstack tunnel"

PID=$(cat $BROWSER_PROVIDER_READY_FILE);
killall BrowserStackLocal

# Resolving the PID from the readyfile.
kill $PID


while [[ -n `ps -ef | grep $PID | grep -v "grep"` ]]; do
while [[ -n `ps -ef | grep "BrowserStackLocal" | grep -v "grep"` ]]; do
printf "."
sleep .5
done
Expand Down
9 changes: 9 additions & 0 deletions scripts/browserstack/waitfor_tunnel.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
#!/bin/bash

TUNNEL_LOG="$LOGS_DIR/browserstack-tunnel.log"

# Wait for Connect to be ready before exiting
# Time out if we wait for more than 2 minutes, so the process won't run forever.
let "counter=0"

# Exit the process if there are errors reported. Print the tunnel log to the console.
if [ -f $BROWSER_PROVIDER_ERROR_FILE ]; then
echo
echo "An error occurred while starting the tunnel. See error:"
cat $TUNNEL_LOG
exit 5
fi

while [ ! -f $BROWSER_PROVIDER_READY_FILE ]; do
let "counter++"

Expand Down

0 comments on commit 6534eb0

Please sign in to comment.