[releng] checking in "checkMirrors" for other release engineers
diff --git a/checkMirrorsUtility/checkMirrors.sh b/checkMirrorsUtility/checkMirrors.sh
new file mode 100755
index 0000000..8455a46
--- /dev/null
+++ b/checkMirrorsUtility/checkMirrors.sh
@@ -0,0 +1,221 @@
+#!/usr/bin/env bash
+#*******************************************************************************
+# Copyright (c) 2009-2016 Eclipse Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     David Williams - initial implementation
+#*******************************************************************************
+
+# Simple script to count number of mirrors available for a particular URL
+#
+# To be useful, this script must be downloaded to "local" machine, so it accesses eclipse.org
+# from outside eclipse.org. (Mirrors are not suggested, when running on build.eclipse.org.)
+# Also, to be useful, most will want to change the list of default URLs to check, in your local copy.
+
+
+function usage()
+{
+  printf "\n\t%s\n" "Simple script to count number of mirrors available for a particular URL" >&2
+  printf "\t%s\n"   "Usage: $(basename $0) [-h] | [-v] [-f] [-p] [-t number] [urls]"  >&2
+  printf "\t\t%s\t%s\n" "-h" "help" >&2
+  printf "\t\t%s\t%s\n" "-v" "verbose" >&2
+  printf "\t\t%s\t%s\n" "-f" "ftp only" >&2
+  printf "\t\t%s\t%s\n" "-p" "http only" >&2
+  printf "\t\t%s\t%s\n" "-b" "both ftp and http (default)" >&2
+  printf "\t\t%s\t%s\n" "-l" "list mirrors (saved in mirrorsList.txt) " >&2
+  printf "\t\t%s\t%s\n" "-t n" "test against number n" >&2
+  printf "\t\t%s\t%s\n"  "urls" "space delimited list of URI parameters such as /releases/galileo/" >&2
+  printf "\n"
+}
+
+function checkMirrorsForURL()
+{
+
+  if [ -z $1 ]
+  then
+    echo "Error: internal funtion requires mirror url parameter";
+    exit 3;
+  else
+    mirrorURL=$1
+  fi
+  if [ -z $2 ]
+  then
+    protocol=
+    pword="http and ftp"
+  else
+    protocolarg="&protocol=$2"
+    pword="$2"
+  fi
+  if [[ $listMirrors -eq 1 ]]
+  then
+    listOfMirrors=$(wget -q -O - "http://www.eclipse.org/downloads/download.php?file=${mirrorURL}&format=xml${protocolarg}")
+    printf "\n\t%s\n\n%s\n\n" "${mirrorURL}" "${listOfMirrors}" >> mirrorsList.txt
+  fi
+  nMirrors=$(wget -q -O - "http://www.eclipse.org/downloads/download.php?file=${mirrorURL}&format=xml${protocolarg}" | grep "<mirror\ " | wc -l)
+  #printf "\t%s%4d%s\n" "number of ${pword} mirrors: " ${nMirrors} "  for ${mirrorURL}" >&2
+  printf "%s%4d%s\n" "number of mirrors:" ${nMirrors} " for ${mirrorURL}" >&2
+  # echo to get nMirrors "returned" to caller
+  echo $nMirrors
+}
+
+function minvalue()
+{
+  ref=$1
+  comp=$2
+  #echo "DEBUG: ref: $ref" >&2
+  #echo "DEBUG: comp: $comp" >&2
+  result=
+  if [ -z $comp ]
+  then
+    result=$ref
+  else
+    if [ $ref -lt $comp ]
+    then
+      result=$ref
+    else
+      result=$comp
+    fi
+  fi
+  echo $result
+}
+
+# by default, check for both FTP and HTTP sites.
+urls=
+ftponly=0
+httponly=0
+protocol=
+listMirrors=0
+while getopts 'hvlfpbt:' OPTION
+do
+  case $OPTION in
+    h)    usage
+      exit 1
+      ;;
+    f)    ftponly=1
+      httponly=0
+      ;;
+    p)    httponly=1
+      ftponly=0
+      ;;
+    b)    httponly=0
+      ftponly=0
+      ;;
+    l)    listMirrors=1
+      ;;
+    v)    verbose=1
+      ;;
+    t)    testNumber=$OPTARG
+      ;;
+      # No fall-through. We run without any arguments
+  esac
+done
+
+shift $(($OPTIND - 1))
+
+urls="$@"
+
+if [ $ftponly == 1 ]
+then
+  protocol="ftp"
+fi
+if [ $httponly == 1 ]
+then
+  protocol="http"
+fi
+if [ $ftponly == 1 -a $httponly == 1 ]
+then
+  protocol=
+fi
+
+if [ $verbose ]
+then
+  echo "ftponly: " $ftponly " httponly: " $httponly
+  echo "protocol: " $protocol
+  echo "urls on cmd line: " $urls
+  echo "listMirrors: $listMirrors"
+  if [[ $listMirrors -eq 1 ]]
+  then
+    echo "check for list of mirrors in mirrorsList.txt"
+  fi
+fi
+
+if [[ $listMirrors -eq 1 ]]
+then
+  # remove any existing mirrorsList.txt files
+  rm -f mirrorsList.txt
+fi
+
+if [ -z "${urls}" ]
+then
+
+  urls="\
+    /tools/orbit/downloads/drops/R20160520211859/repository/ \
+    /releases/neon/201606221000/ \
+    /releases/neon/201609281000/ \
+    /releases/neon/201610111000/ \
+    /releases/neon/201612211000/ \
+    /releases/oxygen/201608121000/ \
+    /releases/oxygen/201609231000/ \
+    /releases/oxygen/201611041000/ \
+    /releases/oxygen/201612161000/ \
+    /technology/epp/packages/neon/
+  /technology/epp/packages/neon/
+  /technology/epp/packages/oxygen/ \
+    /cbi/updates/aggregator/ide/4.6/ \
+    /cbi/updates/aggregator/headless/4.6/ \
+    /eclipse/updates/4.6/R-4.6-201606061100 \
+    /eclipse/updates/4.6/R-4.6.1-201609071200 \
+    /eclipse/updates/4.6/R-4.6.2-201611241400"
+
+fi
+
+if [ $verbose ]
+then
+  echo "\$HOSTNAME: " $HOSTNAME
+fi
+
+# if [ "davidw-hp-m10" == $HOSTNAME ]
+if [ "build" == $HOSTNAME ]
+then
+  printf "\n\t%s\n" "[WARNING] Remmember, when running on 'build.eclipse.org' 0 (zero) mirrors are expected"
+fi
+
+minimumMirrors=
+if [ "${urls}" ]
+then
+  echo -e "\n[DEBUG] urls: $urls\n"
+  for mirrorURL in ${urls}
+  do
+    nm=$(checkMirrorsForURL $mirrorURL $protocol)
+    minimumMirrors=`minvalue $nm $minimumMirrors`
+  done
+  echo
+else
+  usage
+fi
+
+if [ -z $testNumber ]
+then
+  if [ $verbose ]
+  then
+    echo "no test mode"
+  fi
+  exit 0
+else
+  fresult=$((testNumber - minimumMirrors))
+  if [ $fresult -le 0 ]
+  then
+    if [ $verbose ]
+    then
+      echo "minimum mirrors, $minimumMirrors, was greater than or equal to criteria, $testNumber"
+    fi
+    exit 0
+  else
+    echo "[ERROR] minimum mirrors, $minimumMirrors, was not as large as criteria, $testNumber"
+    exit $fresult
+  fi
+fi