summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEsteban Carnevale <alfplayer@mailoo.org>2014-11-05 11:36:56 -0300
committerEsteban Carnevale <alfplayer@mailoo.org>2014-11-05 11:36:56 -0300
commit169d429479d880a40c8210f797f0aea28caabdd6 (patch)
tree153b1d3eadfbaea817584d0ac792e50d2f16a0e7
parentccc52ff7af91a1950143c14903df8767f3dbb173 (diff)
parabola-repos-speed-test: Add script
-rwxr-xr-xparabola-repos-speed-test119
1 files changed, 119 insertions, 0 deletions
diff --git a/parabola-repos-speed-test b/parabola-repos-speed-test
new file mode 100755
index 0000000..6bce249
--- /dev/null
+++ b/parabola-repos-speed-test
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+# alfplayer
+# 2014-06-12
+#
+# Test Parabola HTTP(S) and rsync mirror speeds.
+
+mail_to="your@mail.com"
+
+script_filename="$(basename "$0")"
+
+log_dir="/var/log/${script_filename}"
+
+if [[ ! -d ${log_dir} ]] ; then
+ mkdir "${log_dir}"
+fi
+
+echo "=> ${script_filename} started. Start time: $(date -u --rfc-3339=seconds)" >> "${log_dir}/${script_filename}"
+
+# Locking and send email on exit
+exit_trap() {
+ if [[ ${mail_to} ]] ; then
+ echo "=> Sending output to ${mail_to}"
+ mail -s "[$(hostname)] ${script_filename}" "${mail_to}" < <(tail -n 1 /var/log/"${script_filename}"/*)
+ rm -rf "$lockdir"
+ fi
+}
+
+lockdir="/tmp/${script_filename}.lock"
+
+if mkdir "$lockdir" ; then
+ # Remove lockdir when the script finishes, or when it receives a signal
+ trap exit_trap 0 # remove directory when script finishes
+
+ # Optionally create temporary files in this directory, because
+ # they will be removed automatically:
+ tmpfile="$lockdir/filelist"
+else
+ echo >&2 "cannot acquire lock, giving up on $lockdir"
+ exit 0
+fi
+
+test() {
+ echo -n "$(date -u --rfc-3339=seconds) " >> "${log_dir}/$repo"
+ filename="$(wget --no-check-certificate -q ${url}/community/os/x86_64/community.db -O - | tar xzO | grep '^vtk-.*pkg.tar.*$')"
+ wget --no-check-certificate -O /dev/null ${url}/community/os/x86_64/"${filename}" 2>&1 | sed -n -e 's|^.*(\([0-9.]\+ [KM]B/s\)).*$|\1|p' >> "${log_dir}/$repo"
+}
+
+# repo.parabolagnulinux.org
+repo=repo
+url='http://repo.parabolagnulinux.org'
+test
+
+# alfplayer.com
+repo=alfplayer
+url='http://alfplayer.com/parabola'
+test
+
+# yandex.ru
+repo=yandex
+url='http://mirror.yandex.ru/mirrors/parabola'
+test
+
+# https://parabola.goodgnus.com.ar/
+repo=goodgnus
+url='https://parabola.goodgnus.com.ar'
+test
+
+# http://parabola.leth.cc/
+repo=leth
+url='http://parabola.leth.cc'
+test
+
+# Server = http://mirror.parlementum.net/$repo/os/$arch
+repo=parlementum
+url='http://mirror.parlementum.net'
+test
+
+# IPv6 only, https://parabola.fryxell.info
+#repo=fryxell
+#url='https://parabola.fryxell.info'
+#test
+
+# custom file
+#repo=""
+#url=""
+#echo -n "$(date -u --rfc-3339=seconds) " >> "${log_dir}/$repo"
+#wget --no-check-certificate -O /dev/null "$url" 2>&1 | sed -n -e 's|^.*(\([0-9.]\+ [KM]B/s\)).*$|\1|p' >> "${log_dir}/$repo"
+
+
+echo "Rsync test"
+echo "Using amsn package (around 11 MB)"
+
+test_rsync() {
+ rm -f /tmp/"${script_filename}"-test.db
+ rsync -L --no-motd ${SERVER}/community/os/x86_64/community.db /tmp/"${script_filename}"-test.db
+ filename="$(tar xzOf /tmp/${script_filename}-test.db | grep '^amsn-.*pkg.tar.*$')"
+ rsync -Lv --no-motd ${SERVER}/community/os/x86_64/"${filename}" /tmp/"${script_filename}"-testfile | \
+ grep -o '[0-9,.]* bytes/sec' >> "${log_dir}/$repo"
+ rm -f /tmp/"${script_filename}"-testfile
+}
+
+repo=rsync_alfplayer
+SERVER="rsync://alfplayer.com:873/repos/parabola"
+test_rsync
+
+repo=rsync_repo.parabolagnulinux.org
+SERVER="rsync://repo.parabolagnulinux.org:875/repos"
+test_rsync
+
+repo=rsync_yandex
+SERVER="rsync://mirror.yandex.ru/mirrors/parabola"
+test_rsync
+
+repo=rsync_archlinux_unicamp
+SERVER="rsync://rsync.las.ic.unicamp.br/pub/archlinux"
+test_rsync
+
+echo "=> ${script_filename} finished successfully. Finish time: $(date -u --rfc-3339=seconds)" >> "${log_dir}/${script_filename}"