Start from clean GIT
This commit is contained in:
commit
e841f14a95
2112 changed files with 6638085 additions and 0 deletions
117
tools/run.sh
Executable file
117
tools/run.sh
Executable file
|
@ -0,0 +1,117 @@
|
|||
#!/bin/bash
|
||||
|
||||
# experiments are kept like this:
|
||||
# EXPID/{files}
|
||||
# EXPID2/{files}
|
||||
|
||||
set -u
|
||||
set -e
|
||||
|
||||
AUTHRC=${HOME}/.iotlabrc
|
||||
RUSER=$(cat ${AUTHRC} | cut -d':' -f1)
|
||||
# dummy
|
||||
RHOST="localhost"
|
||||
OLDEXPDIR=$(dirname ${2})
|
||||
|
||||
# find out the host for the site we are running the experiment on
|
||||
RHOST=$(jq '.nodes[0]' ${2} | cut -d . -f2- | cut -d'"' -f-1)
|
||||
|
||||
# source hooks specific for experiment
|
||||
if [ -f ${OLDEXPDIR}/hooks.sh ]; then
|
||||
. ${OLDEXPDIR}/hooks.sh
|
||||
else
|
||||
# hook functions
|
||||
pre() {
|
||||
echo $1
|
||||
}
|
||||
during() {
|
||||
echo $1
|
||||
}
|
||||
post() {
|
||||
echo $1
|
||||
}
|
||||
fi
|
||||
|
||||
_firmwares() { # 1: experiment.json
|
||||
FIRMWARENAMES=$(jq '.firmwareassociations[].firmwarename' ${1} | cut -d'"' -f2)
|
||||
for f in ${FIRMWARENAMES}; do
|
||||
echo -n " -l $(dirname ${1})/${f}"
|
||||
done
|
||||
}
|
||||
|
||||
_name() { # 1: experiment.json
|
||||
jq '.name' ${1} | cut -d '"' -f1
|
||||
}
|
||||
|
||||
auth() {
|
||||
xargs -n 1 auth-cli -u
|
||||
}
|
||||
|
||||
track() { # 1: expdir
|
||||
mkdir -p ${1}
|
||||
(yes | ssh -l ${RUSER} ${RHOST} serial_aggregator > ${1}/serial.log 2> ${1}/serial_error.log) &
|
||||
(ssh -n -l ${RUSER} ${RHOST} sniffer_aggregator -o - > ${1}/sniffer.pcap 2> ${1}/sniffer_error.log) &
|
||||
}
|
||||
|
||||
load() { # 1: experiment.json
|
||||
iotlab-experiment load -f ${1} $(_firmwares ${1}) | jq '.id'
|
||||
}
|
||||
|
||||
save() { # 1: id
|
||||
(
|
||||
iotlab-experiment get -i ${1} -a
|
||||
tar -xvf ${1}.tar.gz
|
||||
)
|
||||
scp -r ${RUSER}@${RHOST}:.iot-lab/${1} .
|
||||
}
|
||||
|
||||
record() { #1: odlexp json, 2: new expid
|
||||
EXPID=$2
|
||||
|
||||
# monitor and control experiment
|
||||
while iotlab-experiment wait -i ${EXPID} --state=Running --step 1 --timeout 36000 ; [ $? -ne 0 ]; do
|
||||
echo ${EXPID} waiting
|
||||
done
|
||||
|
||||
track ${EXPID} &
|
||||
during ${OLDEXPDIR} ${EXPID} &
|
||||
|
||||
# wait until finished and execute post hook
|
||||
iotlab-experiment wait -i ${EXPID} --state=Terminated --timeout 36000 --step 1
|
||||
post ${EXPID}
|
||||
|
||||
# save experiment files from API
|
||||
save ${EXPID}
|
||||
|
||||
# make copy of used hooks
|
||||
#install ${PWD}/${OLDID}/hooks.sh ${PWD}/${EXPID}
|
||||
}
|
||||
|
||||
run() { # 1: path to experiment.json
|
||||
# hook for further preparations
|
||||
pre ${OLDEXPDIR}
|
||||
|
||||
# load the experiment and get the ID of the new run
|
||||
EXPID=$(load ${1})
|
||||
|
||||
#record ${1} ${EXPID}
|
||||
}
|
||||
|
||||
if [ ! -f ${AUTHRC} ]; then
|
||||
auth
|
||||
fi
|
||||
|
||||
|
||||
if [ ${1} == 'run' ]; then
|
||||
run ${2}
|
||||
fi
|
||||
|
||||
if [ ${1} == 'record' ]; then
|
||||
record ${2} ${3}
|
||||
fi
|
||||
|
||||
if [ ${1} == 'record-all' ]; then
|
||||
for exp in $(iotlab-experiment get -l --state=Waiting | jq '.[][] | .id' | sort); do
|
||||
record ${2} $exp
|
||||
done
|
||||
fi
|
Loading…
Add table
Add a link
Reference in a new issue