#!/bin/bash
# $Id$
#
# Thomas Dreibholz's PlanetLab Script Collection
# Copyright (C) 2005-2019 by Thomas Dreibholz
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Contact: dreibh@iem.uni-due.de


. ./planetlab-config


if [ $# -lt 2 ]; then
   echo "Usage: get-results [Test ID] [Server 1] {Server 2} ..."
   exit 1
fi
TESTID=$1
shift


if [ ! -e $TESTID/ ]; then
   mkdir $TESTID/
fi
cd $TESTID/


SERVER_LIST=`\
( \
while [ x$1 != "x" ] ; do \
   echo $1 && \
   shift ; \
done \
) | sort -u`



for SERVER in $SERVER_LIST; do
   echo -e "\x1b[34m`date`: Contacting $SERVER ...\x1b[0m"
   ssh -t -t -i $PLANETLAB_KEY -oPasswordAuthentication=no $PLANETLAB_USER@$SERVER "\
      echo \"\`date\`: Packaging results on $SERVER ...\" &&
      cd bin && \
      INFILES=\`find . -name \"$TESTID-*.log\" -or -name \"$TESTID-*.vec\" -or -name \"$TESTID-*.sca\"\` && \
      BZFILES=\`find . -name \"$TESTID-*.log.bz2\" -or -name \"$TESTID-*.vec.bz2\" -or -name \"$TESTID-*.sca.bz2\"\` && \
      if [ \"x\$INFILES\" != \"x\" ]; then \
         if [ \"x\$BZFILES\" != \"x\" ]; then \
            sudo rm -f \$BZFILES ; \
         fi && \
         sudo bzip2 -k \$INFILES ; \
      fi && \
      find . -name LastUpdate -or -name \"$TESTID-*.bz2\" | xargs sudo tar czf $TESTID-$SERVER-results.tar.gz" \
         2>&1 | grep -v "tcgetattr: Inappropriate ioctl for device" &
done

wait


for SERVER in $SERVER_LIST; do
   echo "Transfering $TESTID-$SERVER-results.tar.gz ..."
   scp -q -i $PLANETLAB_KEY -oPasswordAuthentication=no $PLANETLAB_USER@$SERVER:bin/$TESTID-$SERVER-results.tar.gz . &
done

wait


echo "Unpacking results ..."
for SERVER in $SERVER_LIST; do
   # echo "Unpacking $TESTID-$SERVER-results.tar.gz ..."
   tar xzf $TESTID-$SERVER-results.tar.gz
done

wait


for SERVER in $SERVER_LIST; do
   rm -f $TESTID-$SERVER-results.tar.gz
done
