From d0855fafa08ff74f1eb07f621ea1281e490105c1 Mon Sep 17 00:00:00 2001 From: Karuppiah Natarajan Date: Fri, 2 Jul 2021 17:47:40 +0530 Subject: [PATCH] scripts: add script to measure percentage of commits with failed status This is to start measuring the test flakyness and see the numbers improving once we improve and deflake flaky tests Fixes #13167 --- scripts/measure-test-flakyness.sh | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 scripts/measure-test-flakyness.sh diff --git a/scripts/measure-test-flakyness.sh b/scripts/measure-test-flakyness.sh new file mode 100755 index 000000000000..3631b4a41004 --- /dev/null +++ b/scripts/measure-test-flakyness.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +set -e +set -o pipefail + +if [[ -z ${GITHUB_TOKEN} ]] +then + echo "Please set the \$GITHUB_TOKEN environment variable for the script to work" + exit 1 +fi + +temp_dir=$(mktemp -d) + +trap '{ rm -rf -- ${temp_dir}; }' EXIT + +json_file="${temp_dir}/commit-and-check-data.json" + +curl --fail --show-error --silent -H "Authorization: token ${GITHUB_TOKEN}" \ + -X POST \ + -d '{ + "query": "query { repository(owner: \"etcd-io\", name: \"etcd\") { defaultBranchRef { target { ... on Commit { history(first: 100) { edges { node { ... on Commit { commitUrl statusCheckRollup { state } } } } } } } } } }" + }' \ + https://api.github.com/graphql | jq . > "${json_file}" + +failure_percentage=$(jq '.data.repository.defaultBranchRef.target.history.edges | reduce .[] as $item (0; if $item.node.statusCheckRollup.state == "FAILURE" then (. + 1) else . end)' "${json_file}") + +echo "Commit status failure percentage is - ${failure_percentage} %"