wmbusmeters/tests/test_drivers.sh

95 wiersze
2.8 KiB
Bash
Czysty Zwykły widok Historia

2022-01-06 17:28:22 +00:00
#!/bin/sh
PROG="$1"
2022-04-11 12:01:54 +00:00
DRIVERS="$2"
2022-01-06 17:28:22 +00:00
mkdir -p testoutput
TEST=testoutput
echo "Testing drivers"
TESTNAME="Test driver tests"
TESTRESULT="ERROR"
2022-12-11 14:20:23 +00:00
FAILED=false
2022-01-06 17:28:22 +00:00
2022-01-18 10:33:55 +00:00
ALL_DRIVERS=$(cd src; echo driver_*cc)
2022-01-06 17:28:22 +00:00
2022-04-11 12:01:54 +00:00
if [ "$DRIVERS" = "" ]
then
for i in $ALL_DRIVERS
do
if grep -q '// Test:' src/$i
then
DRIVERS="$DRIVERS $i"
fi
done
fi
2022-01-06 17:28:22 +00:00
for i in $DRIVERS
do
TESTNAME=$i
rm -f $TEST/*
METERS=$(cat src/$i | grep '// Test:' | cut -f 2 -d ':' | tr -d '\n')
2022-01-06 17:28:22 +00:00
sed -n '/\/\/ Test:/,$p' src/$i | grep -e '// telegram' -e '// {' -e '// |' | sed 's|// ||g' > $TEST/simulation.txt
cat $TEST/simulation.txt | grep '^{' | jq --sort-keys . > $TEST/test_expected_json.txt
$PROG --format=json --ignoreduplicates=false $TEST/simulation.txt $METERS 2> $TEST/test_stderr_json.txt | jq --sort-keys . > $TEST/test_output_json.txt
2022-01-06 17:28:22 +00:00
if [ "$?" = "0" ]
then
cat $TEST/test_output_json.txt | sed 's/"timestamp": "....-..-..T..:..:..Z"/"timestamp": "1111-11-11T11:11:11Z"/' > $TEST/test_response_json.txt
2022-01-06 17:28:22 +00:00
diff $TEST/test_expected_json.txt $TEST/test_response_json.txt
if [ "$?" = "0" ]
then
echo OK json: $TESTNAME
TESTRESULT="OK"
else
TESTRESULT="ERROR"
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected_json.txt $TEST/test_response_json.txt
fi
2022-12-11 14:20:23 +00:00
echo "Failure: $TESTNAME"
FAILED=true
2022-01-06 17:28:22 +00:00
fi
else
echo "wmbusmeters returned error code: $?"
cat $TEST/test_output_json.txt
cat $TEST/test_stderr_json.txt
2022-12-11 14:20:23 +00:00
echo "Failure: $TESTNAME"
FAILED=true
2022-01-06 17:28:22 +00:00
fi
cat $TEST/simulation.txt | grep '^|' | sed 's/^|//' > $TEST/test_expected_fields.txt
2022-09-08 19:52:26 +00:00
$PROG --format=fields --ignoreduplicates=false $TEST/simulation.txt $METERS > $TEST/test_output_fields.txt 2> $TEST/test_stderr_fields.txt
2022-01-06 17:28:22 +00:00
if [ "$?" = "0" ]
then
cat $TEST/test_output_fields.txt | sed 's/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9].[0-9][0-9]$/1111-11-11 11:11.11/' > $TEST/test_response_fields.txt
diff $TEST/test_expected_fields.txt $TEST/test_response_fields.txt
if [ "$?" = "0" ]
then
echo OK fields: $TESTNAME
TESTRESULT="OK"
else
TESTRESULT="ERROR"
2022-11-27 23:03:12 +00:00
if [ "$USE_MELD" = "true" ]
then
meld $TEST/test_expected_fields.txt $TEST/test_response_fields.txt
fi
2022-12-11 14:20:23 +00:00
echo "Failure: $TESTNAME"
FAILED=true
2022-01-06 17:28:22 +00:00
fi
else
echo "wmbusmeters returned error code: $?"
cat $TEST/test_output_fields.txt
cat $TEST/test_stderr_fields.txt
2022-12-11 14:20:23 +00:00
echo "Failure: $TESTNAME"
FAILED=true
2022-01-06 17:28:22 +00:00
fi
2022-12-11 14:20:23 +00:00
if [ "$TESTRESULT" = "ERROR" ] || "$FAILED" = "true"
2022-01-06 17:28:22 +00:00
then
echo ERROR: $TESTNAME
exit 1
fi
done