blob: 3eab8ca8bf6c55aceccdc1b2cb5f1b458c169b6e [file] [log] [blame]
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
function clean_up(){
echo "======================Stopping Pubsub Java Injector========================="
echo "Please stop java injector manually."
echo "===========================Signing up Spreadsheet==========================="
echo "Please open this spreadsheet: https://s.apache.org/beam-release-validation"
echo "Please sign up your name in the tests you have ran."
echo "===========================Final Cleanup==========================="
if [[ -f ~/.m2/settings_backup.xml ]]; then
rm ~/.m2/settings.xml
cp ~/.m2/settings_backup.xml ~/.m2/settings.xml
echo "* Restored ~/.m2/settings.xml"
fi
if [[ -f ~/.bashrc_backup ]]; then
rm ~/.bashrc
cp ~/.bashrc_backup ~/.bashrc
echo "* Restored ~/.bashrc"
fi
rm -rf ~/{LOCAL_CLONE_DIR}
echo "* Deleted working dir ~/{LOCAL_CLONE_DIR}"
}
RELEASE=
REPO_URL=
RC_NUM=
RELEASE_BRANCH=
WORKING_BRANCH=
LOCAL_CLONE_DIR=rc_validations
BEAM_ROOT_DIR=beam
GIT_REPO_URL=https://github.com/apache/beam.git
PYTHON_RC_DOWNLOAD_URL=https://dist.apache.org/repos/dist/dev/beam
HUB_VERSION=2.5.0
HUB_ARTIFACTS_NAME=hub-linux-amd64-${HUB_VERSION}
declare -a DEFAULT_PYTHON_VERSIONS_TO_VALIDATE=("python2.7" "python3.5")
echo "[Input Required] Please enter the release version: "
read RELEASE
RELEASE_BRANCH=release-${RELEASE}
WORKING_BRANCH=release-${RELEASE}-RC${RC_NUM}_validations
echo "[Input Required] Please enter the release candidate number(e.g. 1): "
read RC_NUM
echo "[Input Required] Please copy the repo URL from the vote email sent out by Release Manager:"
echo "The URL should look like: https://repository.apache.org/content/repositories/orgapachebeam-0000"
read REPO_URL
echo "====================Checking Environment Variables================="
echo "running validations on release ${RELEASE} RC${RC_NUM}."
echo "repo URL for this RC: ${REPO_URL}"
echo "[Confirmation Required] Do you confirm all information above are correct? [y|N]"
read confirmation
if [[ $confirmation != "y" ]]; then
echo "Please rerun this script and make sure you have the right inputs."
exit
fi
echo "=================Checking hub========================"
if [[ -z `which hub` ]]; then
echo "There is no hub installed on your machine."
echo "Would you like to install hub with root permission? [y|N]"
read confirmation
if [[ $confirmation != "y" ]]; then
echo "Refused to install hub. Cannot proceed into next setp."
exit
fi
echo "=================Installing hub======================="
wget https://github.com/github/hub/releases/download/v${HUB_VERSION}/${HUB_ARTIFACTS_NAME}.tgz
tar zvxvf ${HUB_ARTIFACTS_NAME}.tgz
sudo ./${HUB_ARTIFACTS_NAME}/install
echo "eval "$(hub alias -s)"" >> ~/.bashrc
rm -rf ${HUB_ARTIFACTS_NAME}*
fi
hub version
echo "====================Cloning Beam Release Branch===================="
cd ~
if [[ -d ${LOCAL_CLONE_DIR} ]]; then
rm -rf ${LOCAL_CLONE_DIR}
fi
mkdir ${LOCAL_CLONE_DIR}
cd ${LOCAL_CLONE_DIR}
git clone ${GIT_REPO_URL}
cd ${BEAM_ROOT_DIR}
git checkout ${RELEASE_BRANCH}
git checkout -b ${WORKING_BRANCH}
echo "====================Starting Java Quickstart======================="
echo "[Current task] Java quickstart with direct runner"
echo "[Confirmation Required] Do you want to start this task? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
echo "*************************************************************"
echo "* Running Java Quickstart with DirectRunner"
echo "*************************************************************"
./gradlew :runners:direct-java:runQuickstartJavaDirect \
-Prepourl=${REPO_URL} \
-Pver=${RELEASE}
fi
echo "[Current task] Java quickstart with Apex local runner"
echo "[Confirmation Required] Do you want to start this task? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
echo "*************************************************************"
echo "* Running Java Quickstart with Apex local runner"
echo "*************************************************************"
./gradlew :runners:apex:runQuickstartJavaApex \
-Prepourl=${REPO_URL} \
-Pver=${RELEASE}
fi
echo "[Current task] Java quickstart with Flink local runner"
echo "[Confirmation Required] Do you want to start this task? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
echo "*************************************************************"
echo "* Running Java Quickstart with Flink local runner"
echo "*************************************************************"
./gradlew :runners:flink:1.5:runQuickstartJavaFlinkLocal \
-Prepourl=${REPO_URL} \
-Pver=${RELEASE}
fi
echo "[Current task] Java quickstart with Spark local runner"
echo "[Confirmation Required] Do you want to start this task? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
echo "*************************************************************"
echo "* Running Java Quickstart with Spark local runner"
echo "*************************************************************"
./gradlew :runners:spark:runQuickstartJavaSpark \
-Prepourl=${REPO_URL} \
-Pver=${RELEASE}
fi
echo "====================Checking Google Cloud SDK======================"
if [[ -z `which gcloud` ]]; then
echo "You don't have Google Cloud SDK installed."
echo " Do you want to install gcloud with sudo permission? [y|N]"
read confirmation
if [[ $confirmation != 'y' ]]; then
echo "Exit script without running rest validations."
exit
fi
sudo apt-get install google-cloud-sdk
fi
gcloud --version
echo "[Current task] Java quickstart with Dataflow runner"
echo "[Confirmation Required] Do you want to start this task? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
echo "[GCP Project Required] Please input your GCP project:"
read USER_GCP_PROJECT
echo "[GCP GCS Bucket Required] Please input your GCS bucket: "
read USER_GCS_BUCKET
echo "[gcloud Login Required] Please login into your gcp account: "
gcloud auth application-default login
GOOGLE_APPLICATION_CREDENTIALS=~/.config/gcloud/application_default_credentials.json
echo "*************************************************************"
echo "* Running Java Quickstart with DataflowRunner"
echo "*************************************************************"
gcloud auth application-default login
gcloud config set project ${USER_GCP_PROJECT}
./gradlew :runners:google-cloud-dataflow-java:runQuickstartJavaDataflow \
-Prepourl=${REPO_URL} \
-Pver=${RELEASE} \
-PgcpProject=${USER_GCP_PROJECT} \
-PgcsBucket=${USER_GCS_BUCKET}
fi
echo "===================Starting Java Mobile Game====================="
echo "[Confirmation Required] This task asks for GCP resources."
echo "Do you want to proceed? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
echo "[GCP Project Required] Please input your GCP project:"
read USER_GCP_PROJECT
echo "[GCP GCS Bucket Required] Please input your GCS bucket: "
read USER_GCS_BUCKET
MOBILE_GAME_DATASET=${USER}_java_validations
MOBILE_GAME_PUBSUB_TOPIC=leader_board-${USER}-java-topic-1
echo "Please review following GCP sources setup: "
echo "Using GCP project: ${USER_GCP_PROJECT}"
echo "Will create BigQuery dataset: ${MOBILE_GAME_DATASET}"
echo "Will create Pubsub topic: ${MOBILE_GAME_PUBSUB_TOPIC}"
echo "[Confirmation Required] Do you want to run validations with configurations above? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
gcloud auth login
gcloud config set project ${USER_GCP_PROJECT}
echo "-----------------Setting Up Service Account------------------------"
echo "Please go to GCP IAM console under your project(${USER_GCP_PROJECT})."
echo "Create a service account as project owner, if you don't have one."
echo "[Input Required] Please enter your service account email:"
read USER_SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_KEY_JSON=${USER}_json_key.json
gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_JSON} --iam-account ${USER_SERVICE_ACCOUNT_EMAIL}
export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/${SERVICE_ACCOUNT_KEY_JSON}
echo "-------------------Creating BigQuery Dataset-----------------------"
bq rm -rf --project=${USER_GCP_PROJECT} ${MOBILE_GAME_DATASET}
bq mk --project=${USER_GCP_PROJECT} ${MOBILE_GAME_DATASET}
echo "----------------------Creating Pubsub Topic------------------------"
gcloud alpha pubsub topics delete projects/${USER_GCP_PROJECT}/topics/${MOBILE_GAME_PUBSUB_TOPIC}
gcloud alpha pubsub topics create --project=${USER_GCP_PROJECT} ${MOBILE_GAME_PUBSUB_TOPIC}
echo "**************************************************************************"
echo "* Java mobile game validations: UserScore, HourlyTeamScore, Leaderboard"
echo "**************************************************************************"
./gradlew :runners:google-cloud-dataflow-java:runMobileGamingJavaDataflow \
-Prepourl=${REPO_URL} \
-Pver=${RELEASE} \
-PgcpProject=${USER_GCP_PROJECT} \
-PgcsBucket=${USER_GCS_BUCKET} \
-PbqDataset=${MOBILE_GAME_DATASET} -PpubsubTopic=${MOBILE_GAME_PUBSUB_TOPIC}
fi
fi
echo "==================Starting Python Quickstart and MobileGame==================="
echo "This task will create a PR against apache/beam, trigger a jenkins job to run:"
echo "1. Python quickstart validations(batch & streaming)"
echo "2. Python MobileGame validations(UserScore, HourlyTeamScore)"
echo "[Confirmation Required] Do you want to proceed? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
echo "[Input Required] Please enter your github repo URL forked from apache/beam:"
read USER_REMOTE_URL
echo "[Input Required] Please enter your github username:"
read GITHUB_USERNAME
WORKING_BRANCH=python_validation_pr
git checkout -b ${WORKING_BRANCH}
touch empty_file.txt
git add empty_file.txt
git commit -m "Add empty file in order to create PR"
git push -f ${USER_REMOTE_URL}
hub pull-request -b apache:${RELEASE_BRANCH} -h ${GITHUB_USERNAME}:${WORKING_BRANCH} -F- <<<"[DO NOT MERGE]Run Python RC Validation Tests
Run Python ReleaseCandidate"
echo "[NOTE] If there is no jenkins job started, please comment generated PR with: Run Python ReleaseCandidate"
fi
echo "==============Starting Python Leaderboard & GameStates Validations==============="
echo "This task asks for GCP resources. Do you want to proceed? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
cd ~/${LOCAL_CLONE_DIR}
echo "---------------------Checking gnome-terminal----------------------------------"
if [[ -z `which gnome-terminal` ]]; then
echo "You don't have gnome-terminal installed."
echo "Do you want to install gnome-terminal with sudo permission? [y|N]"
read confirmation
if [[ $confirmation != 'y' ]]; then
echo "Exit this script without proceeding to the next step."
exit
fi
fi
gnome-terminal --version
echo "---------------------Downloading Python Staging RC----------------------------"
wget ${PYTHON_RC_DOWNLOAD_URL}/${RELEASE}/python/apache-beam-${RELEASE}.zip
wget ${PYTHON_RC_DOWNLOAD_URL}/${RELEASE}/python/apache-beam-${RELEASE}.zip.sha512
echo "--------------------------Verifying Hashes------------------------------------"
sha512sum -c apache-beam-${RELEASE}.zip.sha512
sudo `which pip` install --upgrade pip
sudo `which pip` install --upgrade setuptools
sudo `which pip` install --upgrade virtualenv
echo "[Input Required] Please enter Python interpreter(s) separated by space to use for running validation steps."
echo "Sample input: python2.7"
echo "Enter empty line to repeat validation steps using all of ${DEFAULT_PYTHON_VERSIONS_TO_VALIDATE[@]}."
read -a PYTHON_VERSIONS_TO_VALIDATE
if [[ -z "$PYTHON_VERSIONS_TO_VALIDATE" ]]; then
PYTHON_VERSIONS_TO_VALIDATE=${DEFAULT_PYTHON_VERSIONS_TO_VALIDATE[@]}
fi
for py_version in "${PYTHON_VERSIONS_TO_VALIDATE[@]}"
do
rm -rf ./beam_env_${py_version}
echo "--------------Setting up virtualenv with $py_version interpreter----------------"
virtualenv beam_env_${py_version} -p $py_version
. beam_env_${py_version}/bin/activate
echo "--------------------------Installing Python SDK-------------------------------"
pip install apache-beam-${RELEASE}.zip
pip install apache-beam-${RELEASE}.zip[gcp]
echo "----------------------------Setting up GCP Sources----------------------------"
echo "[GCP Project Required] Please input your GCP project:"
read USER_GCP_PROJECT
gcloud auth login
gcloud config set project ${USER_GCP_PROJECT}
MOBILE_GAME_GCS_BUCKET=gs://${USER}_python_validations_bucket
MOBILE_GAME_DATASET=${USER}_python_validations
MOBILE_GAME_PUBSUB_TOPIC=leader_board-${USER}-python-topic-1
gsutil mb -p ${USER_GCP_PROJECT} ${MOBILE_GAME_GCS_BUCKET}
gcloud alpha pubsub topics delete projects/${USER_GCP_PROJECT}/topics/${MOBILE_GAME_PUBSUB_TOPIC}
gcloud alpha pubsub topics create --project=${USER_GCP_PROJECT} ${MOBILE_GAME_PUBSUB_TOPIC}
echo "-----------------------Setting Up Service Account-----------------------------"
echo "Please go to GCP IAM console under your project(${USER_GCP_PROJECT})."
echo "Create a service account as project owner, if you don't have one."
echo "[Input Required] Please enter your service account email:"
read USER_SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_KEY_JSON=${USER}_json_key.json
gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_JSON} --iam-account ${USER_SERVICE_ACCOUNT_EMAIL}
export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/${SERVICE_ACCOUNT_KEY_JSON}
echo "-----------------------Setting up Shell Env Vars------------------------------"
# [BEAM-4518]
FIXED_WINDOW_DURATION=20
cp ~/.bashrc ~/.bashrc_backup
echo "export USER_GCP_PROJECT=${USER_GCP_PROJECT}" >> ~/.bashrc
echo "export MOBILE_GAME_DATASET=${MOBILE_GAME_DATASET}" >> ~/.bashrc
echo "export MOBILE_GAME_PUBSUB_TOPIC=${MOBILE_GAME_PUBSUB_TOPIC}" >> ~/.bashrc
echo "export MOBILE_GAME_GCS_BUCKET=${MOBILE_GAME_GCS_BUCKET}" >> ~/.bashrc
echo "export GOOGLE_APPLICATION_CREDENTIALS=${GOOGLE_APPLICATION_CREDENTIALS}" >> ~/.bashrc
echo "export RELEASE=${RELEASE}" >> ~/.bashrc
echo "export FIXED_WINDOW_DURATION=${FIXED_WINDOW_DURATION}" >> ~/.bashrc
echo "--------------------------Updating ~/.m2/settings.xml-------------------------"
cd ~
if [[ -d .m2 ]]; then
mkdir .m2
fi
cd .m2
if [[ -f ~/.m2/settings.xml ]]; then
mv settings.xml settings_backup.xml
fi
touch settings.xml
echo "<settings>" >> settings.xml
echo " <profiles>" >> settings.xml
echo " <profile>" >> settings.xml
echo " <id>release-repo</id>" >> settings.xml
echo " <activation>" >> settings.xml
echo " <activeByDefault>true</activeByDefault>" >> settings.xml
echo " </activation>" >> settings.xml
echo " <repositories>" >> settings.xml
echo " <repository>" >> settings.xml
echo " <id>Release ${RELEASE} RC${RC_NUM}</id>" >> settings.xml
echo " <name>Release ${RELEASE} RC${RC_NUM}</name>" >> settings.xml
echo " <url>${REPO_URL}</url>" >> settings.xml
echo " </repository>" >> settings.xml
echo " </repositories>" >> settings.xml
echo " </profile>" >> settings.xml
echo " </profiles>" >> settings.xml
echo "</settings>" >> settings.xml
echo "----------------------Starting Pubsub Java Injector--------------------------"
cd ~/${LOCAL_CLONE_DIR}
mvn archetype:generate \
-DarchetypeGroupId=org.apache.beam \
-DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
-DarchetypeVersion=${RELEASE} \
-DgroupId=org.example \
-DartifactId=word-count-beam \
-Dversion="0.1" \
-Dpackage=org.apache.beam.examples \
-DinteractiveMode=false \
-DarchetypeCatalog=internal
cd word-count-beam
echo "A new terminal will pop up and start a java top injector."
gnome-terminal -x sh -c \
"echo '******************************************************';
echo '* Running Pubsub Java Injector';
echo '******************************************************';
mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.complete.game.injector.Injector \
-Dexec.args='${USER_GCP_PROJECT} ${MOBILE_GAME_PUBSUB_TOPIC} none';
exec bash"
echo "[Confirmation Required] Please enter y to confirm injector running:"
read confirmation
if [[ $confirmation != "y" ]]; then
echo "Following tests only can be ran when java injector running."
clean_up
exit
fi
cd ~/${LOCAL_CLONE_DIR}/
echo "----------------Starting Leaderboard with DirectRunner-----------------------"
echo "[Confirmation Required] Do you want to proceed? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
bq rm -rf --project=${USER_GCP_PROJECT} ${MOBILE_GAME_DATASET}
bq mk --project=${USER_GCP_PROJECT} ${MOBILE_GAME_DATASET}
echo "This is a streaming job. This task will be launched in a separate terminal."
gnome-terminal -x sh -c \
"echo '*****************************************************';
echo '* Running Python Leaderboard with DirectRunner';
echo '*****************************************************';
python -m apache_beam.examples.complete.game.leader_board \
--project=${USER_GCP_PROJECT} \
--topic projects/${USER_GCP_PROJECT}/topics/${MOBILE_GAME_PUBSUB_TOPIC} \
--dataset ${MOBILE_GAME_DATASET};
exec bash"
echo "***************************************************************"
echo "* Please wait for at least 5 mins to let results get populated."
echo "* Sleeping for 5 mins"
sleep 5m
echo "***************************************************************"
echo "* How to verify results:"
echo "* 1. Check whether there is any error messages in the task running terminal."
echo "* 2. Goto your BigQuery console and check whether your ${MOBILE_GAME_DATASET} has leader_board_users and leader_board_teams table."
echo "* 3. Check whether leader_board_users has data, retrieving BigQuery data as below: "
bq head -n 10 ${MOBILE_GAME_DATASET}.leader_board_users
echo "* 4. Check whether leader_board_teams has data, retrieving BigQuery data as below:"
bq head -n 10 ${MOBILE_GAME_DATASET}.leader_board_teams
echo "***************************************************************"
echo "If you have verified all items listed above, please terminate the python job."
echo "[Confirmation Required] Please confirm whether you have stopped this job: [y|N]"
read confirmation
if [[ $confirmation != "y" ]]; then
echo "Current job must be terminated in order to proceed into next test."
clean_up
exit
fi
fi
echo "----------------Starting Leaderboard with DataflowRunner---------------------"
echo "[Confirmation Required] Do you want to proceed? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
bq rm -rf --project=${USER_GCP_PROJECT} ${MOBILE_GAME_DATASET}
bq mk --project=${USER_GCP_PROJECT} ${MOBILE_GAME_DATASET}
echo "This is a streaming job. This task will be launched in a separate terminal."
gnome-terminal -x sh -c \
"echo '*****************************************************';
echo '* Running Python Leaderboard with DataflowRunner';
echo '*****************************************************';
python -m apache_beam.examples.complete.game.leader_board \
--project=${USER_GCP_PROJECT} \
--topic projects/${USER_GCP_PROJECT}/topics/${MOBILE_GAME_PUBSUB_TOPIC} \
--dataset ${MOBILE_GAME_DATASET} \
--runner DataflowRunner \
--temp_location=${MOBILE_GAME_GCS_BUCKET}/temp/ \
--sdk_location apache-beam-${RELEASE}.zip; \
exec bash"
echo "***************************************************************"
echo "* Please wait for at least 10 mins to let Dataflow job be launched and results get populated."
echo "* Sleeping for 10 mins"
sleep 10m
echo "* How to verify results:"
echo "* 1. Goto your Dataflow job console and check whether there is any error."
echo "* 2. Goto your BigQuery console and check whether your ${MOBILE_GAME_DATASET} has leader_board_users and leader_board_teams table."
echo "* 3. Check whether leader_board_users has data, retrieving BigQuery data as below: "
bq head -n 10 ${MOBILE_GAME_DATASET}.leader_board_users
echo "* 4. Check whether leader_board_teams has data, retrieving BigQuery data as below:"
bq head -n 10 ${MOBILE_GAME_DATASET}.leader_board_teams
echo "***************************************************************"
echo "If you have verified all items listed above, please terminate this job in Dataflow Console."
echo "[Confirmation Required] Please confirm whether you have stopped this job: [y|N]"
read confirmation
if [[ $confirmation != "y" ]]; then
echo "Current job must be terminated in order to proceed into next test."
clean_up
exit
fi
fi
echo "------------------Starting GameStats with DirectRunner-----------------------"
echo "[Confirmation Required] Do you want to proceed? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
bq rm -rf --project=${USER_GCP_PROJECT} ${MOBILE_GAME_DATASET}
bq mk --project=${USER_GCP_PROJECT} ${MOBILE_GAME_DATASET}
echo "This is a streaming job. This task will be launched in a separate terminal."
echo "Streaming job is running with fixed_window_duration=${FIXED_WINDOW_DURATION}"
gnome-terminal -x sh -c \
"echo '*****************************************************';
echo '* Running GameStats with DirectRunner';
echo '*****************************************************';
python -m apache_beam.examples.complete.game.game_stats \
--project=${USER_GCP_PROJECT} \
--topic projects/${USER_GCP_PROJECT}/topics/${MOBILE_GAME_PUBSUB_TOPIC} \
--dataset ${MOBILE_GAME_DATASET} \
--fixed_window_duration ${FIXED_WINDOW_DURATION}; \
exec bash"
echo "***************************************************************"
echo "* Please wait for at least 25 mins to let results get populated."
echo "* Sleeping for 25mins"
sleep 25m
echo "* How to verify results:"
echo "* 1. Check whether there is any error messages in the task running terminal."
echo "* 2. Goto your BigQuery console and check whether your ${MOBILE_GAME_DATASET} has game_stats_teams and game_stats_sessions table."
echo "* 3. Check whether game_stats_teams has data, retrieving BigQuery data as below: "
bq head -n 10 ${MOBILE_GAME_DATASET}.game_stats_teams
echo "* 4. Check whether game_stats_sessions has data, retrieving BigQuery data as below:"
bq head -n 10 ${MOBILE_GAME_DATASET}.game_stats_sessions
echo "***************************************************************"
echo "If you have verified all items listed above, please terminate the python job."
echo "[Confirmation Required] Please confirm whether you have stopped this job: [y|N]"
read confirmation
if [[ $confirmation != "y" ]]; then
echo "Current job must be terminated in order to proceed into next test."
clean_up
exit
fi
fi
echo "-------------------Starting GameStats with DataflowRunner--------------------"
echo "[Confirmation Required] Do you want to proceed? [y|N]"
read confirmation
if [[ $confirmation = "y" ]]; then
bq rm -rf --project=${USER_GCP_PROJECT} ${MOBILE_GAME_DATASET}
bq mk --project=${USER_GCP_PROJECT} ${MOBILE_GAME_DATASET}
echo "This is a streaming job. This task will be launched in a separate terminal."
echo "Streaming job is running with fixed_window_duration=${FIXED_WINDOW_DURATION}"
gnome-terminal -x sh -c \
"echo '*****************************************************';
echo '* Running GameStats with DataflowRunner';
echo '*****************************************************';
python -m apache_beam.examples.complete.game.game_stats \
--project=${USER_GCP_PROJECT} \
--topic projects/${USER_GCP_PROJECT}/topics/${MOBILE_GAME_PUBSUB_TOPIC} \
--dataset ${MOBILE_GAME_DATASET} \
--runner DataflowRunner \
--temp_location=${MOBILE_GAME_GCS_BUCKET}/temp/ \
--sdk_location apache-beam-${RELEASE}.zip \
--fixed_window_duration ${FIXED_WINDOW_DURATION}; exec bash"
echo "***************************************************************"
echo "* Please wait for at least 30 mins to let results get populated."
echo "* Sleeping for 30 mins"
sleep 30m
echo "* How to verify results:"
echo "* 1. Goto your Dataflow job console and check whether there is any error."
echo "* 2. Goto your BigQuery console and check whether your ${MOBILE_GAME_DATASET} has game_stats_teams and game_stats_sessions table."
echo "* 3. Check whether game_stats_teams has data, retrieving BigQuery data as below: "
bq head -n 10 ${MOBILE_GAME_DATASET}.game_stats_teams
echo "* 4. Check whether game_stats_sessions has data, retrieving BigQuery data as below:"
bq head -n 10 ${MOBILE_GAME_DATASET}.game_stats_sessions
echo "***************************************************************"
echo "If you have verified all items listed above, please terminate the python job."
echo "[Confirmation Required] Please confirm whether you have stopped this job: [y|N]"
read confirmation
if [[ $confirmation != "y" ]]; then
echo "Current job must be terminated in order to proceed into next test."
clean_up
exit
fi
fi
done # Loop over Python versions.
fi
clean_up