#!/bin/bash ./src/ebusd/ebusd --help >/dev/null ./src/ebusd/ebusd -r -f -x >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -d "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -d "tcp:192.168.999.999:1" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -d "enh:192.168.999.999:1" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -d "/dev/ttyUSBx9" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --nodevicecheck >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --readonly >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --scanconfig=full -r >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --latency 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -c "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -r --scanconfig=fe >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -r --configlang=en >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --pollinterval 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --inject 01fe030400/ >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --address 999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --acquiretimeout 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --acquireretries 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --sendretries 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --receivetimeout 9999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --numbermasters 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -r --answer >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -r --generatesyn >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -r --initsend >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -r --scanconfig=0 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --pidfile "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -p 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --localhost >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --httpport 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --htmlpath "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --updatecheck=off >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -l "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --log "all debug" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --logareas some >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --loglevel unknown >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --lograwdata >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --lograwdata=bytes >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --lograwdatafile=/xyz >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --lograwdatasize=9999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --dump >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --dumpfile "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --dumpsize 9999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --dumpflush >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --accesslevel=inst >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --aclfile=/ >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --enablehex >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --enabledefine >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --mqttport= >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --mqttport=9999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --mqttuser=username --mqttpass=password --mqttclientid=1234 --mqttport=1883 --mqtttopic=ebusd/%circuit/%name/%field --mqttretain --mqttjson --mqttverbose --mqttlog --mqttignoreinvalid --mqttchanges --mqtthost "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --mqttca=/cafile/ --mqttcert=/cert --mqttkey=12345678 --mqttkeypass=secret --mqttinsecure >/dev/null 2>/dev/null ./src/ebusd/ebusd -c contrib/etc/ebusd --checkconfig --dumpconfig -s -f -i "ff08070400/0ab5303132333431313131" >/dev/null ./src/ebusd/ebusd -c contrib/etc/ebusd --checkconfig --dumpconfig -s -f -i "ff08070400" >/dev/null 2>/dev/null ./src/ebusd/ebusd -c contrib/etc/ebusd --checkconfig --dumpconfig -s -f -i "ff080704/" >/dev/null 2>/dev/null cat >contrib/etc/ebusd/bad.csv </dev/null rm -f contrib/etc/ebusd/bad.csv echo > dump ./src/tools/ebusctl -s testserver -p 100000 >/dev/null 2>/dev/null ./src/tools/ebusctl -s "" >/dev/null 2>/dev/null ./src/tools/ebusctl -p "" >/dev/null 2>/dev/null ./src/tools/ebusctl -x >/dev/null 2>/dev/null ./src/tools/ebusctl 'help x' >/dev/null 2>/dev/null #server: php -r 'echo "php is available";'|egrep 'php is available' if [ ! "$?" = 0 ]; then echo `date` "php is not available" exit 1 fi php -r ' error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush(); if (($srv=socket_create_listen(8876))===false) { die("server: create_listen socket"); } socket_set_block($srv); echo "server: waiting\n"; if (($cli=socket_accept($srv))===false) { @socket_close($srv); die("server: socket accept"); } echo "server: connection accepted\n"; socket_set_block($cli); $output=""; $input=$hexinput=""; echo "server: running\n"; $endtime=time()+15; $firstsend=time()+5; $secondsend=$firstsend+5; $expectnext=""; $error=0; while (time()<$endtime) { if (($r=@socket_read($cli, 1))===false) break; if (strlen($r)==0) break; socket_write($cli, $r, 1); if (ord($r[0])==0xaa) { if (strlen($output)>0) { echo "server: <$output\n"; if ($expectnext) { if ($expectnext!=$output) { if (substr($output,0,2)!="ff") { echo "server: arbitration lost for ".substr($output,0,2).", retry\n"; $firstsend=time()+5; $secondsend=$firstsend+5; } else { echo "server: error unexpected answer (should be $expectnext)\n"; $error=1; } } $expectnext=""; } $output=""; } if ($firstsend && time()>$firstsend) { echo "server: sending ID query to 36\n"; socket_write($cli, "\xff\x36\x07\x04\x00\x06\xaa",8); $expectnext="000afd6562757364030001006c"; $firstsend=0; } else if ($secondsend && time()>$secondsend) { echo "server: sending brodcast message\n"; socket_write($cli, "\xff\xfe\xb5\x16\x03\x01\x50\x30\x86\xaa",10); $secondsend=0; } } else { $output.=substr(dechex(0x100|ord($r[0])),1); if ("31040704006f"==$output) { // answer on first ident query socket_write($cli, "\x00\x0a\x99\x42\x42\x42\x42\x42\x30\x31\x30\x31\x71",13); $output.=">answered with ACK 0a99424242424230313031"; } else if ("315307040091"==$output) { // answer on second ident query socket_write($cli, "\x00\x0a\x99\x42\x42\x42\x42\x42\x30\x31\x30\x31\x71",13); $output.=">answered with ACK 0a99424242424230313031"; } else if ("315407040090"==$output) { // answer on third ident query with invalid CRC socket_write($cli, "\x00\x0a\x99\x42\x42\x42\x42\x42\x30\x31\x30\x31\x72",13); $output.=">answered with ACK 0a99424242424230313031 + invalid CRC"; } else if ("315407040090"==$output) { // answer on fourth ident query with short reply socket_write($cli, "\x00\x09\x99\x42\x42\x42\x42\x42\x30\x31\x30\x25",12); $output.=">answered with ACK 09994242424242303130"; } else if ("3155070400ce"==$output) { // answer NAK on sixth ident query socket_write($cli, "\x01",1); $output.=">answered with NACK"; } else if ("311cb509030d0000e1"==$output || "3152b509030d0600c9"==$output || "3153b509030d060034"==$output) { socket_write($cli, "\x00\x02\x40\x50\xb4",5); $output.=">answered with ACK 024050"; } else if ("3153b505080290909090909003f6"==$output || "3153b509050e3500190030"==$output || "3153b5050802008f030515240161"==$output) { socket_write($cli, "\x00\x00\x00",3); $output.=">answered with ACK 00"; } else { $endtime=time()+20; // keep further alive } } } @socket_close($cli); @socket_close($srv); echo "server: done\n"; if ($error) { exit($error); } ' & srvpid=$! if [ -z "$srvpid" ]; then echo `date` "unable to start echo server" exit 1 fi sleep 1 ps -p $srvpid >/dev/null status="$?" if [ ! "$status" = 0 ]; then echo `date` "unable to start echo server" exit 1 fi echo `date` "server: $srvpid" cat >contrib/etc/ebusd/test.csv <"$PWD/contrib/etc/ebusd/153/_templates.csv" <"$PWD/contrib/etc/ebusd/153/53.bbbbb.csv" < ./passwd #ebusd: ./src/ebusd/ebusd -d tcp:127.0.0.1:8876 --initsend --latency 10 -n -c "$PWD/contrib/etc/ebusd" --pollinterval=10 -s -a 31 --acquireretries 3 --answer --generatesyn --receivetimeout 40000 --sendretries 1 --enablehex --htmlpath "$PWD/contrib/html" --httpport 8878 --pidfile "$PWD/ebusd.pid" --localhost -p 8877 -l "$PWD/ebusd.log" --logareas all --loglevel debug --lograwdata=bytes --lograwdatafile "$PWD/ebusd.raw" --lograwdatasize 1 --dumpfile "$PWD/ebusd.dump" --dumpsize 100 -D --scanconfig --aclfile=./passwd --mqttport=1883 sleep 3 pid=`head -n 1 "$PWD/ebusd.pid"` if [ -z "$pid" ]; then echo `date` "unable to start ebusd" kill $srvpid cat "$PWD/ebusd.log" exit 1 fi echo `date` "ebusd: $pid" kill -1 $pid #client: readarray lines </dev/null 2>/dev/null for line in "${lines[@]}"; do if [ -n "$line" ]; then echo `date` "send: $line" ./src/tools/ebusctl -p 8877 $line if [ $? -eq 1 ]; then echo "not connectable, exit" status=1 failed=1 break fi fi done scancnt=0 failed=0 while [ "$status" = 0 ]; do sleep 3 ./src/tools/ebusctl -p 8877 scan result | egrep -q "still running" status=$? if [ $status -ne 0 ]; then echo "scan result status=$status" failed=1 break fi scancnt=$(( scancnt + 1 )) done echo `date` "scan result after $scancnt checks:" ./src/tools/ebusctl -p 8877 scan result if [ $? -ne 0 ]; then failed=1 fi curl -s "http://localhost:8878/data/" >/dev/null curl -s "http://localhost:8878/data/broadcast/?since=1&exact=1&required=" >/dev/null curl -s "http://localhost:8878/data/mc.4/outsidetemp?poll=1" >/dev/null curl -s "http://localhost:8878/data/?verbose=1" >/dev/null curl -s "http://localhost:8878/data/?indexed=1&numeric=1" >/dev/null curl -s "http://localhost:8878/data/?full&valuename&write&raw&def" >/dev/null curl -s "http://localhost:8878/datatypes" >/dev/null curl -s "http://localhost:8878/raw" >/dev/null curl -s "http://localhost:8878/decode?def=UCH&raw=1f" >/dev/null curl -s "http://localhost:8878/data/mc.5/installparam?poll=1&user=test&secret=testpass" >/dev/null curl -T test_coverage.sh http://localhost:8878/data/ echo `date` "commands done" kill $lstpid verify=`./src/tools/ebusctl -p 8877 info|egrep "^address 04:"` if [ "x$verify" != 'xaddress 04: slave #25, scanned "MF=153;ID=BBBBB;SW=3031;HW=3031"' ]; then echo `date` "error unexpected result from info command: $verify" kill $pid kill $srvpid echo `date` "ebusd log:" cat "$PWD/ebusd.log" exit 1 fi sleep 2 kill $pid echo `date` "ebusd log:" cat "$PWD/ebusd.log" echo `date` "done." wait $srvpid exit $failed