1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

tests: fix integration tests

This commit is contained in:
Steffen Vogel 2018-08-20 18:32:01 +02:00
parent 5707ee9d58
commit 57f21cba0f
24 changed files with 207 additions and 164 deletions

View file

@ -38,8 +38,12 @@ cat > ${CONFIG_FILE} <<EOF
"type" : "socket",
"dummy" : "value2",
"local" : "*:12001",
"remote" : "localhost:12000"
"in" : {
"address" : "*:12001"
},
"out" : {
"address" : "localhost:12000"
}
}
}
}
@ -58,7 +62,7 @@ curl -sX POST --data '{ "action" : "nodes", "id" : "5a786626-fbc6-4c04-98c2-4802
kill $!
# Compare local config with the fetched one
jq -e '.response[0].name == "testnode1" and .response[0].type == "websocket" and .response[0].id == 0 and (.response | length == 2)' ${FETCHED_NODES} > /dev/null
jq -e '.response[0].name == "testnode1" and .response[0].type == "websocket" and (.response | length == 2)' ${FETCHED_NODES} > /dev/null
RC=$?
rm -f ${CONFIG_FILE} ${FETCHED_NODES}

View file

@ -32,14 +32,23 @@ cat <<EOF > ${LOCAL_CONF}
"nodes" : {
"node1" : {
"type" : "socket",
"local" : "*:12000",
"remote" : "127.0.0.1:12001"
"format" : "csv",
"in" : {
"address" : "*:12000"
},
"out" : {
"address" : "127.0.0.1:12001"
}
}
},
"paths" : [
{
"in" : "node1", "out" : "node1",
"hooks" : [ { "type" : "print" } ]
"in" : "node1",
"out" : "node1",
"hooks" : [
{ "type" : "print" }
]
}
]
}
@ -63,11 +72,10 @@ curl -sX POST --data '{ "action" : "config", "id" : "5a786626-fbc6-4c04-98c2-480
# Shutdown VILLASnode
kill %%
# Compare local config with the fetched one
diff -u <(jq -S .response < ${FETCHED_CONF}) <(jq -S . < ${LOCAL_CONF})
RC=$?
rm -f ${LOCAL_CONF} ${FETCHED_CONF}
exit $RC
exit $RC

View file

@ -27,7 +27,6 @@ SCRIPTPATH=$(dirname ${SCRIPT})
LOCAL_CONF=${SCRIPTPATH}/../../etc/loopback.json
# Start VILLASnode instance with local config (via advio)
villas-node file://${LOCAL_CONF} &
PID=$!
@ -35,6 +34,7 @@ PID=$!
# Wait for node to complete init
sleep 1
RUNS=100
FAILED=0
SUCCESS=0
@ -44,11 +44,12 @@ mkfifo ${FIFO}
# Fifo must be opened in both directions!
# https://www.gnu.org/software/libc/manual/html_node/FIFO-Special-Files.html#FIFO-Special-Files
# Quote: "However, it has to be open at both ends simultaneously before you can proceed to do any input or output operations on it"
# Quote: "However, it has to be open at both ends simultaneously before you can proceed to
# do any input or output operations on it"
exec 5<>${FIFO}
JOBS=""
for J in {1..100}; do
for J in {1..${RUNS}}; do
(
set -e
trap "echo error-trap >> ${FIFO}" ERR
@ -76,7 +77,7 @@ wait $PID
echo "Check return codes"
FAILED=0
SUCCESS=0
for J in {1..100}; do
for J in {1..${RUNS}}; do
read status <&5
if [ "$status" == "success" ]; then
@ -86,7 +87,9 @@ for J in {1..100}; do
fi
done
echo "Success: ${SUCCESS} / 100"
echo "Success: ${SUCCESS} / ${RUNS}"
echo "Failed: ${FAILED} / ${RUNS}"
if [ "$FAILED" -gt "0" ]; then
exit 1;
fi

View file

@ -22,22 +22,21 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
##################################################################################
INPUT_FILE=$(mktemp)
OUTPUT_FILE1=$(mktemp)
OUTPUT_FILE2=$(mktemp)
INPUT_FILE=$(mktemp)
NUM_SAMPLES=${NUM_SAMPLES:-100}
# Prepare some test data
villas-signal random -v 1 -r 10 -l ${NUM_SAMPLES} -n > ${INPUT_FILE}
villas-hook print -o format=villas.human -o output=${OUTPUT_FILE1} < ${INPUT_FILE} > ${OUTPUT_FILE2}
villas-hook print -o format=villas.human -o output=${OUTPUT_FILE1} > ${OUTPUT_FILE2} < ${INPUT_FILE}
# Compare only the data values
villas-test-cmp ${OUTPUT_FILE1} ${INPUT_FILE} && \
villas-test-cmp ${OUTPUT_FILE2} ${INPUT_FILE}
villas-test-cmp ${OUTPUT_FILE1} ${OUTPUT_FILE2} ${INPUT_FILE}
RC=$?
rm -f ${INPUT_FILE} ${OUTPUT_FILE1} ${OUTPUT_FILE2}
rm -f ${OUTPUT_FILE1} ${OUTPUT_FILE2} ${INPUT_FILE}
exit $RC

View file

@ -52,7 +52,7 @@ cat <<EOF > ${EXPECT_FILE}
1490500400.676379108-1.490500e+09(9) -15.877850 -15.877850 -15.877850 -15.877850
EOF
villas-hook scale -p -o scale=10 -o offset=-10 < ${INPUT_FILE} > ${OUTPUT_FILE}
villas-hook scale -o scale=10 -o offset=-10 < ${INPUT_FILE} > ${OUTPUT_FILE}
# Compare only the data values
villas-test-cmp ${OUTPUT_FILE} ${EXPECT_FILE}

View file

@ -23,13 +23,11 @@
##################################################################################
OUTPUT_FILE=$(mktemp)
INPUT_FILE=$(mktemp)
OFFSET=100
villas-signal random -l ${NUM_SAMPLES} -n > ${INPUT_FILE}
villas-hook shift_seq -o offset=${OFFSET} > ${OUTPUT_FILE} < ${INPUT_FILE}
villas-signal random -l ${NUM_SAMPLES} -n | \
villas-hook shift_seq -o offset=${OFFSET} > ${OUTPUT_FILE}
# Compare shifted sequence no
diff -u \
@ -38,6 +36,6 @@ diff -u \
RC=$?
rm -f ${OUTPUT_FILE} ${INPUT_FILE}
rm -f ${OUTPUT_FILE}
exit $RC

View file

@ -30,11 +30,10 @@ OFFSET=-10.0
EPSILON=0.05
villas-signal random -l ${NUM_SAMPLES} -r 50 | \
villas-hook shift_ts -o offset=${OFFSET} | \
villas-hook shift_ts -o offset=${OFFSET} | \
villas-hook stats -o format=json -o output="${STATS_FILE}" > /dev/null
jq .owd ${STATS_FILE}
jq -e ".owd.mean + ${OFFSET} | length < ${EPSILON}" ${STATS_FILE} > /dev/null
RC=$?

View file

@ -28,7 +28,8 @@ SKIP=10
echo ${OUTPUT_FILE}
villas-signal random -r 1 -l ${NUM_SAMPLES} -n | villas-hook skip_first -o seconds=${SKIP} > ${OUTPUT_FILE}
villas-signal random -r 1 -l ${NUM_SAMPLES} -n | \
villas-hook skip_first -o seconds=${SKIP} > ${OUTPUT_FILE}
LINES=$(sed -re '/^#/d' ${OUTPUT_FILE} | wc -l)

View file

@ -26,7 +26,8 @@ OUTPUT_FILE=$(mktemp)
SKIP=50
villas-signal random -r 1 -l ${NUM_SAMPLES} -n | villas-hook skip_first -o samples=${SKIP} > ${OUTPUT_FILE}
villas-signal random -r 1 -l ${NUM_SAMPLES} -n | \
villas-hook skip_first -o samples=${SKIP} > ${OUTPUT_FILE}
LINES=$(sed -re '/^#/d' ${OUTPUT_FILE} | wc -l)

View file

@ -22,6 +22,12 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
##################################################################################
# Check if tools are present
if ! command -v lspci; then
echo "lspci tool is missing"
exit 99
fi
# Check if user is superuser. SU is used for namespace
if [[ "$EUID" -ne 0 ]]; then
echo "Please run as root"

View file

@ -37,17 +37,28 @@ cat > ${CONFIG_FILE} <<EOF
"nodes": {
"node1": {
"type": "socket",
"layer": "udp",
"local": "*:12000",
"remote": "127.0.0.1:12001",
"vectorize" : 10
"out" : {
"address": "127.0.0.1:12001"
},
"in" : {
"address": "*:12000",
"signals" : [
{ "type" : "float" }
]
}
},
"node2": {
"type": "socket",
"layer": "udp",
"local": "*:12001",
"remote": "127.0.0.1:12000",
"vectorize" : 1
"out" : {
"address": "127.0.0.1:12000"
},
"in" : {
"address" : "*:12001",
"signals" : [
{ "type" : "float" }
]
}
}
},
"paths": [

View file

@ -39,7 +39,7 @@ cat > ${CONFIG_FILE} <<EOF
"values" : 4,
"offset" : 0.0,
"rate" : 10.0,
"limit" : 10
"limit" : 20
},
"sig_2": {
"type": "signal",
@ -70,18 +70,17 @@ cat > ${CONFIG_FILE} <<EOF
"paths": [
{
"in": [
"sig_1.data[0-1]",
"sig_2.data[0-1]",
"sig_3.data[0-1]",
"sig_1.data[counter]",
"sig_2.data[counter]",
"sig_3.data[counter]",
"sig_1.hdr.length",
"sig_1.hdr.id",
"sig_1.hdr.sequence",
"sig_1.ts.origin",
"sig_1.ts.received"
"sig_1.ts.origin"
],
"hooks" : [
{ "type" : "print" }
]
],
"mode" : "all"
}
]
}

View file

@ -41,29 +41,24 @@ cat > ${CONFIG_FILE} <<EOF
"type": "signal",
"limit": 100,
"rate": 10.0,
"hooks": [
{
"type": "stats",
"verbose": true
}
]
"in" : {
"hooks": [
{ "type": "stats", "verbose": true }
]
}
}
},
"paths": [
{
"in": "signal_1",
"hooks" : [
{
"type" : "print"
}
{ "type" : "print", "enabled" : false }
]
},
{
"in": "stats_1",
"hooks" : [
{
"type" : "print"
}
{ "type" : "print" }
]
}
]

View file

@ -35,7 +35,7 @@ NUM_SAMPLES=${NUM_SAMPLES:-10}
URI=https://1Nrd46fZX8HbggT:badpass@rwth-aachen.sciebo.de/public.php/webdav/node/tests/pipe
# WebDav / OwnCloud / Sciebo do not support partial upload
# So we disable flusing the output
# So we do not flush the output
cat > ${CONFIG_FILE} <<EOF
{
"nodes" : {
@ -43,9 +43,14 @@ cat > ${CONFIG_FILE} <<EOF
"type" : "file",
"uri" : "${URI}",
"flush" : false,
"epoch_mode" : "original",
"eof" : "exit"
"in" : {
"epoch_mode" : "original",
"eof" : "exit"
},
"out" : {
"flush" : false
}
}
}
}
@ -54,15 +59,19 @@ EOF
# Delete old file
curl -sX DELETE ${URI} > /dev/null
# Generate test data
VILLAS_LOG_PREFIX=$(colorize "[Signal] ") \
villas-signal random -n -l ${NUM_SAMPLES} > ${INPUT_FILE}
# Upload data to cloud
VILLAS_LOG_PREFIX=$(colorize "[Send] ") \
villas-pipe -s ${CONFIG_FILE} remote_file < ${INPUT_FILE}
# Download data from the cloud
VILLAS_LOG_PREFIX=$(colorize "[Recv] ") \
villas-pipe -r -l ${NUM_SAMPLES} ${CONFIG_FILE} remote_file > ${OUTPUT_FILE}
# Compare results
villas-test-cmp ${INPUT_FILE} ${OUTPUT_FILE}
RC=$?

View file

@ -36,11 +36,14 @@ cat > ${CONFIG_FILE} << EOF
"type" : "file",
"uri" : "${NODE_FILE}",
"mode" : "w+",
"epoch_mode" : "original",
"eof" : "wait",
"flush" : true
"in" : {
"epoch_mode" : "original",
"eof" : "wait"
},
"out" : {
"flush" : true
}
}
}
}
@ -55,10 +58,6 @@ villas-pipe -l ${NUM_SAMPLES} ${CONFIG_FILE} node1 > ${OUTPUT_FILE} < ${INPUT_FI
villas-test-cmp ${INPUT_FILE} ${OUTPUT_FILE}
RC=$?
cat ${OUTPUT_FILE}
echo
cat ${INPUT_FILE}
rm ${OUTPUT_FILE} ${INPUT_FILE} ${CONFIG_FILE} ${NODE_FILE}
exit $RC

View file

@ -43,19 +43,31 @@ cat > ${CONFIG_FILE} << EOF
"interface" : "lo",
"publish" : {
"out" : {
"svid" : "1234",
"fields" : [ "float32", "float32", "float32", "float32" ]
"signals" : [
{ "iec_type" : "float32" },
{ "iec_type" : "float32" },
{ "iec_type" : "float32" },
{ "iec_type" : "float32" }
]
},
"subscribe" : {
"fields" : [ "float32", "float32", "float32", "float32" ]
"in" : {
"signals" : [
{ "iec_type" : "float32" },
{ "iec_type" : "float32" },
{ "iec_type" : "float32" },
{ "iec_type" : "float32" }
]
}
}
}
}
EOF
villas-pipe -l ${NUM_SAMPLES} ${CONFIG_FILE} node1 > ${OUTPUT_FILE} < <(sleep 1; cat ${INPUT_FILE}; sleep 1)
cat ${CONFIG_FILE}
villas-pipe -l ${NUM_SAMPLES} ${CONFIG_FILE} node1 > ${OUTPUT_FILE} < ${INPUT_FILE}
# Compare data
villas-test-cmp -t ${INPUT_FILE} ${OUTPUT_FILE}

View file

@ -39,11 +39,11 @@ cat > ${CONFIG_FILE} << EOF
EOF
# Generate test data
villas-signal random -l ${NUM_SAMPLES} -n > ${INPUT_FILE}
villas-signal mixed -v 5 -l ${NUM_SAMPLES} -n > ${INPUT_FILE}
villas-pipe -l ${NUM_SAMPLES} ${CONFIG_FILE} node1 > ${OUTPUT_FILE} < ${INPUT_FILE}
# Comapre data
# Compare data
villas-test-cmp ${INPUT_FILE} ${OUTPUT_FILE}
RC=$?

View file

@ -33,18 +33,10 @@ OUTPUT_FILE=$(mktemp)
NUM_SAMPLES=${NUM_SAMPLES:-100}
# Generate test data
villas-signal random -l ${NUM_SAMPLES} -n > ${INPUT_FILE}
villas-signal mixed -v 5 -l ${NUM_SAMPLES} -n > ${INPUT_FILE}
for FORMAT in villas.human villas.binary villas.web csv json gtnet.fake raw.flt32; do
VECTORIZES="1"
# The raw format does not support vectors
if villas_format_supports_vectorize ${FORMAT}; then
VECTORIZES="${VECTORIZES} 10"
fi
for VECTORIZE in ${VECTORIZES}; do
FORMAT="protobuf"
VECTORIZE="10"
cat > ${CONFIG_FILE} << EOF
{
@ -55,8 +47,20 @@ cat > ${CONFIG_FILE} << EOF
"format" : "${FORMAT}",
"vectorize" : ${VECTORIZE},
"subscribe" : "tcp://127.0.0.1:12000",
"publish" : "tcp://127.0.0.1:12000"
"in" : {
"endpoints" : [ "tcp://127.0.0.1:12000" ],
"signals" : [
{ "type" : "float" },
{ "type" : "float" },
{ "type" : "float" },
{ "type" : "float" },
{ "type" : "float" }
]
},
"out" : {
"endpoints" : [ "tcp://127.0.0.1:12000" ]
}
}
}
}
@ -64,29 +68,10 @@ EOF
villas-pipe -l ${NUM_SAMPLES} ${CONFIG_FILE} node1 > ${OUTPUT_FILE} < ${INPUT_FILE}
# Ignore timestamp and seqeunce no if in raw format
if villas_format_supports_header ${FORMAT}; then
CMPFLAGS=-ts
fi
# Compare data
villas-test-cmp ${CMPFLAGS} ${INPUT_FILE} ${OUTPUT_FILE}
RC=$?
if (( ${RC} != 0 )); then
echo "=========== Sub-test failed for: format=${FORMAT}, vectorize=${VECTORIZE}"
cat ${CONFIG_FILE}
echo
cat ${INPUT_FILE}
echo
cat ${OUTPUT_FILE}
exit ${RC}
else
echo "=========== Sub-test succeeded for: format=${FORMAT}, vectorize=${VECTORIZE}"
fi
done; done
rm ${OUTPUT_FILE} ${INPUT_FILE} ${CONFIG_FILE}
exit $RC

View file

@ -40,8 +40,12 @@ cat > ${CONFIG_FILE} << EOF
"nodes" : {
"node1" : {
"type" : "shmem",
"out_name" : "/villas-test",
"in_name" : "/villas-test",
"out" : {
"name" : "/villas-test"
},
"in" : {
"name" : "/villas-test"
},
"samplelen" : ${SAMPLELEN},
"queuelen" : 1024,
"polling" : ${POLLING},
@ -56,7 +60,7 @@ villas-signal random -l ${NUM_SAMPLES} -v ${SAMPLELEN} -n > ${INPUT_FILE}
villas-pipe -l ${NUM_SAMPLES} ${CONFIG_FILE} node1 > ${OUTPUT_FILE} < ${INPUT_FILE}
# Comapre data
# Compare data
villas-test-cmp ${INPUT_FILE} ${OUTPUT_FILE}
RC=$?

View file

@ -33,16 +33,20 @@ cat > ${CONFIG_FILE} << EOF
"nodes" : {
"node1" : {
"type" : "socket",
"layer" : "udp",
"format" : "protobuf",
"local" : "*:12000",
"remote" : "224.1.2.3:12000",
"in" : {
"address" : "*:12000",
"multicast" : {
"enabled" : true,
"multicast" : {
"enabled" : true,
"group" : "224.1.2.3",
"loop" : true
"group" : "224.1.2.3",
"loop" : true
}
},
"out" : {
"address" : "224.1.2.3:12000"
}
}
}
@ -54,7 +58,7 @@ villas-signal random -l ${NUM_SAMPLES} -n > ${INPUT_FILE}
villas-pipe -l ${NUM_SAMPLES} ${CONFIG_FILE} node1 > ${OUTPUT_FILE} < ${INPUT_FILE}
# Comapre data
# Compare data
villas-test-cmp ${INPUT_FILE} ${OUTPUT_FILE}
RC=$?

View file

@ -37,7 +37,7 @@ NUM_VALUES=${NUM_VALUES:-4}
# Generate test data
villas-signal random -v ${NUM_VALUES} -l ${NUM_SAMPLES} -n > ${INPUT_FILE}
for FORMAT in villas.human villas.binary villas.web csv json gtnet.fake raw.flt32 protobuf; do
for FORMAT in villas.human villas.binary villas.web csv json gtnet.fake raw.32.le raw.64.be protobuf; do
for LAYER in udp ip eth unix; do
for VERIFY_SOURCE in true false; do
@ -83,10 +83,20 @@ cat > ${CONFIG_FILE} << EOF
"vectorize" : ${VECTORIZE},
"format" : "${FORMAT}",
"layer" : "${LAYER}",
"verify_source" : ${VERIFY_SOURCE},
"local" : "${LOCAL}",
"remote" : "${REMOTE}"
"out" : {
"address" : "${REMOTE}"
},
"in" : {
"address" : "${LOCAL}",
"verify_source" : ${VERIFY_SOURCE},
"signals" : [
{ "type" : "float" },
{ "type" : "float" },
{ "type" : "float" },
{ "type" : "float" }
]
}
}
}
}

View file

@ -35,12 +35,13 @@ NUM_SAMPLES=${NUM_SAMPLES:-100}
cat > ${CONFIG_FILE} << EOF
{
"logging" : { "level" : 15 },
"nodes" : {
"node1" : {
"type" : "websocket",
"destinations" : [
"ws://127.0.0.1:81/node2"
"ws://127.0.0.1:81/node2.protobuf"
]
}
}
@ -52,6 +53,7 @@ cat > ${CONFIG_FILE2} << EOF
"http" : {
"port" : 81
},
"logging" : { "level" : 15 },
"nodes" : {
"node2" : {
"type" : "websocket"
@ -65,10 +67,12 @@ VILLAS_LOG_PREFIX=$(colorize "[Signal]") \
villas-signal random -l ${NUM_SAMPLES} -n > ${INPUT_FILE}
VILLAS_LOG_PREFIX=$(colorize "[Recv] ") \
villas-pipe -r -d 15 -l ${NUM_SAMPLES} ${CONFIG_FILE2} node2 > ${OUTPUT_FILE} &
villas-pipe -r -d 15 -l ${NUM_SAMPLES} ${CONFIG_FILE2} node2 | tee ${OUTPUT_FILE} &
sleep 1
VILLAS_LOG_PREFIX=$(colorize "[Send] ") \
villas-pipe -s -d 15 ${CONFIG_FILE} node1 < ${INPUT_FILE}
villas-pipe -s -d 15 ${CONFIG_FILE} node1 < <(sleep 1; cat ${INPUT_FILE})
wait $!

View file

@ -33,18 +33,10 @@ OUTPUT_FILE=$(mktemp)
NUM_SAMPLES=${NUM_SAMPLES:-10}
# Generate test data
villas-signal random -l ${NUM_SAMPLES} -n -v 10 > ${INPUT_FILE}
for FORMAT in villas.human villas.binary villas.web csv json gtnet.fake raw.flt32; do
villas-signal random -l ${NUM_SAMPLES} -n -v 5 > ${INPUT_FILE}
VECTORIZES="1"
# The raw format does not support vectors
if villas_format_supports_vectorize ${FORMAT}; then
VECTORIZES="${VECTORIZES} 10"
fi
for VECTORIZE in ${VECTORIZES}; do
VECTORIZE="10"
FORMAT="protobuf"
cat > ${CONFIG_FILE} << EOF
{
@ -55,8 +47,19 @@ cat > ${CONFIG_FILE} << EOF
"format" : "${FORMAT}",
"vectorize" : ${VECTORIZE},
"pattern" : "pubsub",
"subscribe" : "tcp://127.0.0.1:12000",
"publish" : "tcp://127.0.0.1:12000"
"out" : {
"publish" : "tcp://127.0.0.1:12000"
},
"in" : {
"subscribe" : "tcp://127.0.0.1:12000",
"signals" : [
{ "type" : "float" },
{ "type" : "float" },
{ "type" : "float" },
{ "type" : "float" },
{ "type" : "float" }
]
}
}
}
}
@ -64,29 +67,10 @@ EOF
villas-pipe -l ${NUM_SAMPLES} ${CONFIG_FILE} node1 > ${OUTPUT_FILE} < ${INPUT_FILE}
# Ignore timestamp and seqeunce no if in raw format
if villas_format_supports_header ${FORMAT}; then
CMPFLAGS=-ts
fi
# Compare data
villas-test-cmp ${CMPFLAGS} ${INPUT_FILE} ${OUTPUT_FILE}
villas-test-cmp ${INPUT_FILE} ${OUTPUT_FILE}
RC=$?
if (( ${RC} != 0 )); then
echo "=========== Sub-test failed for: format=${FORMAT}, vectorize=${VECTORIZE}"
cat ${CONFIG_FILE}
echo
cat ${INPUT_FILE}
echo
cat ${OUTPUT_FILE}
exit ${RC}
else
echo "=========== Sub-test succeeded for: format=${FORMAT}, vectorize=${VECTORIZE}"
fi
done; done
rm ${OUTPUT_FILE} ${INPUT_FILE} ${CONFIG_FILE}
exit $RC

View file

@ -60,22 +60,30 @@ cat > ${CONFIG_FILE} << EOF
"layer": "${LAYER}",
"format" : "${FORMAT}",
"local" : "${LOCAL}",
"remote" : "${REMOTE}"
"in" : {
"address" : "${LOCAL}"
},
"out" : {
"address" : "${REMOTE}"
}
}
}
}
EOF
export PYTHONPATH=${BUILDDIR}/clients/python
# Start Python client in background
python ${SRCDIR}/clients/python/villas.py unix &
CPID=$!
# Wait for client to be ready
if [ "${LAYER}" = "unix" ]; then
while [ ! -S "${REMOTE}" ]; do sleep 0.1; done
while [ ! -S "${REMOTE}" ]; do
sleep 1
done
fi
sleep 0.2
sleep 1
villas-pipe -l ${NUM_SAMPLES} ${CONFIG_FILE} py-client > ${OUTPUT_FILE} < ${INPUT_FILE}