move docker tests data creation to 'create-one-time-test-data.sh'

Move the docker test data setup to 'create-one-time-test-data.sh', so
that there is a standard interface to define the data creation steps
needed to run the docker tests.

Change-Id: If386e833cf94b820473a32539bff3a29894774fd
diff --git a/test/docker/run_tests/create-one-time-test-data.sh b/test/docker/run_tests/create-one-time-test-data.sh
new file mode 100755
index 0000000..7ff7d0f
--- /dev/null
+++ b/test/docker/run_tests/create-one-time-test-data.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+die() { echo -e "\nERROR:" "$@" ; kill $$ ; exit 1 ; } # error_message
+
+q() { "$@" > /dev/null 2>&1 ; } # cmd [args...]  # quiet a command
+
+gssh() { ssh -x -p "$SSH_PORT" "$GERRIT_HOST" gerrit "$@" ; } # run a gerrit ssh command
+
+create_test_user() {
+    echo "Creating test user ..."
+    gssh create-account "$UNTRUSTED_USER" --full-name "$UNTRUSTED_USER" \
+       --email "$UNTRUSTED_USER"@example.com --ssh-key - < ~/.ssh/id_rsa.pub
+}
+
+setup_all_projects_repo() {
+    echo "Updating All-Projects repo ..."
+
+    ( cd "$WORKSPACE"
+      q git clone ssh://"$GERRIT_HOST":"$SSH_PORT"/All-Projects allProjects
+      cd allProjects
+      q git fetch origin refs/meta/config ; q git checkout FETCH_HEAD
+      git config -f "project.config" --add access."refs/meta/config".read "group Registered Users"
+      git config -f "project.config" --add capability.viewTaskPaths "group Administrators"
+      q git add . && q git commit -m "project config update"
+      q git push origin HEAD:refs/meta/config
+    )
+}
+
+SSH_PORT=29418
+USER_RUN_TESTS_DIR="$USER_HOME"/"$RUN_TESTS_DIR"
+while (( "$#" )) ; do
+   case "$1" in
+       --untrusted-user)                shift ; UNTRUSTED_USER="$1" ;;
+       *)                               die "invalid argument '$1'" ;;
+   esac
+   shift
+done
+
+[ -z "$UNTRUSTED_USER" ] && die "untrusted-user not set"
+
+"$USER_RUN_TESTS_DIR"/create-test-project-and-changes.sh
+"$USER_RUN_TESTS_DIR"/update-all-users-project.sh
+create_test_user
+setup_all_projects_repo
\ No newline at end of file
diff --git a/test/docker/run_tests/start.sh b/test/docker/run_tests/start.sh
index 5104677..9329d91 100755
--- a/test/docker/run_tests/start.sh
+++ b/test/docker/run_tests/start.sh
@@ -24,13 +24,10 @@
 
 is_plugin_loaded "task" || die "Task plugin is not installed"
 
-./"$USER_RUN_TESTS_DIR"/create-test-project-and-changes.sh
-./"$USER_RUN_TESTS_DIR"/update-all-users-project.sh
+UNTRUSTED_USER="untrusted_user"
+"$USER_RUN_TESTS_DIR"/create-one-time-test-data.sh --untrusted-user "$UNTRUSTED_USER"
 
 echo "Running Task plugin tests ..."
-untrusted_user="untrusted_user"
-ssh -p 29418 "$GERRIT_HOST" gerrit create-account "$untrusted_user" --full-name "$untrusted_user" \
-      --email "$untrusted_user"@example.com --ssh-key - < ~/.ssh/id_rsa.pub
 
 cd "$USER_RUN_TESTS_DIR"/../../ && ./check_task_statuses.sh \
-    --server "$GERRIT_HOST" --untrusted-user "$untrusted_user"
+    --server "$GERRIT_HOST" --untrusted-user "$UNTRUSTED_USER"
diff --git a/test/docker/run_tests/update-all-users-project.sh b/test/docker/run_tests/update-all-users-project.sh
index 55e879a..ee78a68 100755
--- a/test/docker/run_tests/update-all-users-project.sh
+++ b/test/docker/run_tests/update-all-users-project.sh
@@ -15,10 +15,4 @@
    access."refs/*".read "deny group Anonymous Users"
 echo -e "global:Registered-Users\tRegistered Users" >> groups
 echo -e "global:Anonymous-Users\tAnonymous Users" >> groups
-git add . && git commit -m "project config update" && git push origin HEAD:refs/meta/config
-
-echo "Modifying All-Projects project ..."
-cd "$WORKSPACE" && git clone ssh://"$GERRIT_HOST":29418/All-Projects allProjects && cd allProjects
-git fetch origin refs/meta/config && git checkout FETCH_HEAD
-git config -f "project.config" --add access."refs/meta/config".read "group Registered Users"
 git add . && git commit -m "project config update" && git push origin HEAD:refs/meta/config
\ No newline at end of file