#!/bin/bash -e

if [ "$1" == "--help" ] || [ "$1" == "" ] || [ "$2" == "" ]
then
  echo "Gerrit Code Review - release upgrade verification script"
  echo "--------------------------------------------------------"
  echo "Verify that Gerrit <previous-version> can be migrated to <next-version>"
  echo "without online reindexing."
  echo ""
  echo "The gerrit-<previous-version>.war and gerrit-<next-version>.war are either found in the"
  echo "current directory or downloaded from https://gerrit-releases.storage.googleapis.com"
  echo ""
  echo "Use: $0 <previous-version> <next-version>"
  echo ""
  echo "Where: previous-version Gerrit version to migrate from"
  echo "       next-version Gerrit version to migrate to"
  echo ""
  echo "Example: $0 3.8.3 3.9.1"
  exit 1
fi

export gerritReleasesUrl=https://gerrit-releases.storage.googleapis.com
export previousVersionWar=gerrit-$1.war
export nextVersionWar=gerrit-$2.war

# Disable the use of start-stop-daemon because of the inability to stop
# Gerrit gracefully when running it on Docker.
# See Issue 450577969
export START_STOP_DAEMON=0

function downloadGerritWar
{
  if checkWar $1
  then
    echo "$1 found locally"
  else
    echo "Downloading $1 from $gerritReleasesUrl"
    curl -O $gerritReleasesUrl/$1
  fi
}

function checkWar
{
  if [ -f $1 ]
  then
    java -jar $1 --version || return 1
  else
    return 2
  fi

  return 0
}

function log
{
  echo ""
  echo $1
  echo $1 | sed 's/./=/g'
}

function queryNumOpenChanges
{
  curl -s --fail curl 'http://localhost:8080/changes/?q=status%3Aopen' | tail -1 | jq '. | length'
}

function checkQueryChanges
{
  log "Query changes ..."
  CHANGES=$(queryNumOpenChanges)
  echo "$CHANGES change(s) returned"
  if test $(queryNumOpenChanges) '<' 1
  then
    echo "*** FAILED ***"
    exit 1
  fi
}

log "Installing $previousVersionWar ... "

downloadGerritWar $previousVersionWar
gerritSite=$(basename $previousVersionWar .war)

if [ -d $gerritSite ]
then
  $gerritSite/bin/gerrit.sh stop
  rm -Rf $gerritSite
fi

java -jar $previousVersionWar init --install-all-plugins -d $gerritSite --batch --dev
echo "Gerrit $previousVersionWar installed and running as pid=$(cat $gerritSite/logs/gerrit.pid)"

testProject="test-project-upgrade"
log "Creating project $testProject ... "

curl -s --fail -u admin:secret -X PUT http://localhost:8080/a/projects/$testProject

rm -Rf $testProject
log "Cloning $testProject ..."

git clone http://admin:secret@localhost:8080/a/$testProject && (cd $testProject && f=`git rev-parse --git-dir`/hooks/commit-msg ; mkdir -p $(dirname $f) ; curl -Lo $f http://localhost:8080/tools/hooks/commit-msg ; chmod +x $f)
pushd $testProject
git config user.name "John Doe"
git config user.email "john@gerrit.mycompany.local"

log "Creating a local change ..."

echo "Test change" > README.md
git add README.md
git commit -m "Test change"
git push origin HEAD:refs/for/master

checkQueryChanges

log "Shutting down $gerritSite"
popd
$gerritSite/bin/gerrit.sh stop

log "Upgrading to $nextVersionWar ... "

downloadGerritWar $nextVersionWar
java -jar $nextVersionWar init --install-all-plugins  -d $gerritSite --batch
$gerritSite/bin/gerrit.sh start
echo "Gerrit upgraded to $nextVersionWar and running as pid=$(cat $gerritSite/logs/gerrit.pid)"

log "Checking if the change created with $previousVersionWar still exists"

checkQueryChanges

$gerritSite/bin/gerrit.sh stop
log "Upgrade from $previousVersionWar to $nextVersionWar SUCCEEDED"
