#!@SH_BIN@ set -x set -e SMSD_PID=0 SERVICE="$1" SMSD_CMD="$2" SMSD_INJECT_CMD="$3" SMSD_MONITOR_CMD="$4" TEST_MATCH=";999999999999999;994299429942994;4;10;0;100;42" INCOMING_USSD=1 if [ "x@HAVE_KILL@" = x1 ] ; then SMSD_EXTRA_PARAMS="-p @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/smsd.pid" fi echo "NOTICE: This test is quite tricky about timing, if you run it on really slow platform, it might fail." echo "NOTICE: Testing service $SERVICE" cleanup() { if [ $SMSD_PID -ne 0 ] ; then kill $SMSD_PID sleep 1 fi } trap cleanup INT QUIT EXIT cd @CMAKE_CURRENT_BINARY_DIR@ rm -rf smsd-test-$SERVICE mkdir smsd-test-$SERVICE cd smsd-test-$SERVICE # Dummy backend storage mkdir gammu-dummy # Create config file cat > .smsdrc <> .smsdrc <> .smsdrc <> .smsdrc <> .smsdrc <> .smsdrc <> .smsdrc <> .smsdrc <> .smsdrc <&1 | grep -v 'ERROR.*language "plpgsql" already exists' ;; *mysql|odbc) echo "DROP TABLE IF EXISTS gammu, inbox, outbox, outbox_multipart, phones, sentitems;" | "@MYSQL_BIN@" "-u@MYSQL_USER@" "-h@MYSQL_HOST@" "-p@MYSQL_PASSWORD@" "@MYSQL_DATABASE@" "@MYSQL_BIN@" "-h@MYSQL_HOST@" "-u@MYSQL_USER@" "-p@MYSQL_PASSWORD@" "@MYSQL_DATABASE@" < "@CMAKE_CURRENT_SOURCE_DIR@/../docs/sql/mysql.sql" ;; files*) mkdir -p "@CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/inbox/" mkdir -p "@CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/outbox/" mkdir -p "@CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/sent/" mkdir -p "@CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/error/" ;; esac cat > @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/received.sh << EOT #!@SH_BIN@ echo "\$@" >> @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/received.log env >> @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/env.log echo "Executed script!" exit 4 EOT chmod +x @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/received.sh CONFIG_PATH="@CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/.smsdrc" DUMMY_PATH="@CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/gammu-dummy" mkdir -p $sms $DUMMY_PATH/sms/1 mkdir -p $sms $DUMMY_PATH/sms/2 mkdir -p $sms $DUMMY_PATH/sms/3 mkdir -p $sms $DUMMY_PATH/sms/4 mkdir -p $sms $DUMMY_PATH/sms/5 for sms in 62 68 74 ; do cp @CMAKE_CURRENT_SOURCE_DIR@/../tests/at-sms-encode/$sms.backup $DUMMY_PATH/sms/1/$sms done cp @CMAKE_CURRENT_SOURCE_DIR@/../tests/smsbackups/mms.smsbackup $DUMMY_PATH/sms/1/42 # Insert message manually case $SERVICE in *sqlite3) echo "INSERT INTO outbox(DestinationNumber,TextDecoded,CreatorID,Coding) VALUES('800123465', 'This is a SQL test message', 'T3st', 'Default_No_Compression');" | @SQLITE_BIN@ smsd.db ;; *pgsql) echo "INSERT INTO outbox(\"DestinationNumber\",\"TextDecoded\",\"CreatorID\",\"Coding\") VALUES('800123465', 'This is a SQL test message', 'T3st', 'Default_No_Compression');" | PGPASSWORD="@PSQL_PASSWORD@" "@PSQL_BIN@" -h "@PSQL_HOST@" -U "@PSQL_USER@" "@PSQL_DATABASE@" ;; *mysql|odbc) echo "INSERT INTO outbox(DestinationNumber,TextDecoded,CreatorID,Coding) VALUES('800123465', 'This is a SQL test message', 'T3st', 'Default_No_Compression');" | "@MYSQL_BIN@" "-u@MYSQL_USER@" "-h@MYSQL_HOST@" "-p@MYSQL_PASSWORD@" "@MYSQL_DATABASE@" ;; files*) cp @CMAKE_CURRENT_SOURCE_DIR@/tests/OUT+4201234567890.txt @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/outbox/ ;; esac $SMSD_INJECT_CMD -c "$CONFIG_PATH" TEXT 123465 -text "Lorem ipsum." & $SMSD_INJECT_CMD -c "$CONFIG_PATH" TEXT 123465 -text "Lorem ipsum." & $SMSD_INJECT_CMD -c "$CONFIG_PATH" USSD 123465 $SMSD_CMD -c "$CONFIG_PATH" $SMSD_EXTRA_PARAMS & SMSD_PID=$! sleep 5 # Incoming messages for sms in 10 16 26 ; do cp @CMAKE_CURRENT_SOURCE_DIR@/../tests/at-sms-encode/$sms.backup $DUMMY_PATH/sms/3/$sms done cp @CMAKE_CURRENT_SOURCE_DIR@/../tests/smsbackups/mms-part.smsbackup $DUMMY_PATH/sms/1/666 TIMEOUT=0 while ! $SMSD_MONITOR_CMD -C -c "$CONFIG_PATH" -n 1 -d 0 | grep -q "$TEST_MATCH" ; do $SMSD_MONITOR_CMD -C -c "$CONFIG_PATH" -n 1 -d 0 sleep 5 TIMEOUT=$(($TIMEOUT + 1)) if [ $TIMEOUT -gt 60 ] ; then echo "ERROR: Wrong timeout!" exit 1 fi done sleep 5 $SMSD_MONITOR_CMD -C -c "$CONFIG_PATH" -n 1 -d 0 if [ `wc -l < @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/received.log` -ne $((8 + $INCOMING_USSD)) ] ; then echo "ERROR: Wrong number of messages received!" exit 1 fi if ! grep -q -F 'MMS_ADDRESS=http://mmscz/?m=m5da5a9jn210ma56q20' @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/env.log ; then echo "ERROR: Wrong MMS message received!" exit 1 fi if [ $INCOMING_USSD -gt 0 ] && ! grep -q -F 'Reply for 123465' @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/env.log ; then echo "ERROR: Got no correct USSD reply!" exit 1 fi