#!/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