You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
2.6 KiB

#!/bin/sh
set -eu
stage=$(mktemp -d /tmp/tera-shared-sessions.XXXXXX)
for name in api sessiond web directstream.test portservice.test SHA256SUMS; do
wget -q -T 30 -O "$stage/$name" "http://192.168.0.100:9001/$name"
done
cd "$stage"
sha256sum -c SHA256SUMS
chmod 755 directstream.test portservice.test
./directstream.test -test.run 'TestBrowserAndTerminal|TestSharedSocket' -test.v -test.timeout 30s
./portservice.test -test.run TestBothOperations -test.v -test.timeout 30s
backup=/userdata/tera-backups/shared-sessions-$(date +%Y%m%d-%H%M%S)
mkdir "$backup"
cp -p /usr/bin/tera-api "$backup/api"
cp -p /usr/bin/tera-sessiond "$backup/sessiond"
cp -p /usr/bin/tera-clone-demo-web "$backup/web"
echo "BACKUP=$backup"
rollback() {
trap - EXIT
set +e
/etc/init.d/S61teraweb stop
/etc/init.d/S55tera-sessiond stop
/etc/init.d/S50tera-api stop
cp -p "$backup/api" /usr/bin/tera-api.restore
cp -p "$backup/sessiond" /usr/bin/tera-sessiond.restore
cp -p "$backup/web" /usr/bin/tera-clone-demo-web.restore
mv /usr/bin/tera-api.restore /usr/bin/tera-api
mv /usr/bin/tera-sessiond.restore /usr/bin/tera-sessiond
mv /usr/bin/tera-clone-demo-web.restore /usr/bin/tera-clone-demo-web
/etc/init.d/S50tera-api start
/etc/init.d/S55tera-sessiond start
/etc/init.d/S61teraweb start
echo SHARED_SESSIONS_ROLLED_BACK
exit 1
}
trap rollback EXIT
cp api /usr/bin/tera-api.next
cp sessiond /usr/bin/tera-sessiond.next
cp web /usr/bin/tera-clone-demo-web.next
chmod 755 /usr/bin/tera-api.next /usr/bin/tera-sessiond.next /usr/bin/tera-clone-demo-web.next
chown root:root /usr/bin/tera-api.next /usr/bin/tera-sessiond.next /usr/bin/tera-clone-demo-web.next
/etc/init.d/S61teraweb stop
/etc/init.d/S55tera-sessiond stop
/etc/init.d/S50tera-api stop
sleep 2
mv /usr/bin/tera-api.next /usr/bin/tera-api
mv /usr/bin/tera-sessiond.next /usr/bin/tera-sessiond
mv /usr/bin/tera-clone-demo-web.next /usr/bin/tera-clone-demo-web
/etc/init.d/S50tera-api start
/etc/init.d/S55tera-sessiond start
/etc/init.d/S61teraweb start
ready=0
for n in $(seq 1 90); do
if wget -q -T 2 -O "$stage/status" http://127.0.0.1/login/backend-status && grep -q '"ready":true' "$stage/status"; then ready=1; break; fi
sleep 1
done
[ "$ready" = 1 ]
[ -S /run/tera-api/shared-stream.sock ]
wget -q -T 5 -O "$stage/session-status" http://127.0.0.1:8081/readyz
grep -q '"shared_port_sessions":true' "$stage/session-status"
wget -q -T 5 -O "$stage/integration.js" http://127.0.0.1/static/js/integration.js
grep -q 'channel session limit reached' "$stage/integration.js"
cat "$stage/status"
cat "$stage/session-status"
sha256sum /usr/bin/tera-api /usr/bin/tera-sessiond /usr/bin/tera-clone-demo-web
sync
trap - EXIT
echo SHARED_SESSIONS_DEPLOY_OK