Translation update done using Pootle.
[gammu.git] / smsd / test-smsd.sh.in
blob86a2674bc9a796dd6ce00210ba71cd8558c11b2f
1 #!@SH_BIN@
3 set -x
4 set -e
5 SMSD_PID=0
7 SERVICE="$1"
9 TEST_MATCH=";999999999999999;3;9;0;100;42"
11 if [ "x@HAVE_KILL@" = x1 ] ; then
12 SMSD_EXTRA_PARAMS="-p @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/smsd.pid"
15 echo "NOTICE: This test is quite tricky about timing, if you run it on really slow platform, it might fail."
16 echo "NOTICE: Testing service $SERVICE"
18 cleanup() {
19 if [ $SMSD_PID -ne 0 ] ; then
20 kill $SMSD_PID
21 sleep 1
25 trap cleanup INT QUIT EXIT
27 cd @CMAKE_CURRENT_BINARY_DIR@
29 rm -rf smsd-test-$SERVICE
30 mkdir smsd-test-$SERVICE
31 cd smsd-test-$SERVICE
33 # Dummy backend storage
34 mkdir gammu-dummy
35 # Create config file
36 cat > .smsdrc <<EOT
37 [gammu]
38 model = dummy
39 connection = none
40 port = @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/gammu-dummy
41 gammuloc = /dev/null
42 loglevel = textall
44 [smsd]
45 commtimeout = 5
46 multiparttimeout = 5
47 debuglevel = 255
48 logfile = stderr
49 runonreceive = @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/received.sh
50 EOT
52 # Add driver specific configuration
53 case $SERVICE in
54 dbi-sqlite3)
55 cat >> .smsdrc <<EOT
56 service = dbi
57 driver = sqlite3
58 database = smsd.db
59 dbdir = @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/
60 EOT
62 dbi-pgsql)
63 cat >> .smsdrc <<EOT
64 service = dbi
65 driver = pgsql
66 pc = @PSQL_HOST@
67 database = @PSQL_DATABASE@
68 user = @PSQL_USER@
69 password = @PSQL_PASSWORD@
70 EOT
72 pgsql)
73 cat >> .smsdrc <<EOT
74 service = pgsql
75 pc = @PSQL_HOST@
76 database = @PSQL_DATABASE@
77 user = @PSQL_USER@
78 password = @PSQL_PASSWORD@
79 EOT
81 dbi-mysql)
82 cat >> .smsdrc <<EOT
83 service = dbi
84 driver = mysql
85 pc = @MYSQL_HOST@
86 database = @MYSQL_DATABASE@
87 user = @MYSQL_USER@
88 password = @MYSQL_PASSWORD@
89 EOT
91 mysql)
92 cat >> .smsdrc <<EOT
93 service = mysql
94 pc = @MYSQL_HOST@
95 database = @MYSQL_DATABASE@
96 user = @MYSQL_USER@
97 password = @MYSQL_PASSWORD@
98 EOT
100 odbc)
101 cat >> .smsdrc <<EOT
102 service = sql
103 driver = odbc
104 pc = @ODBC_DSN@
105 user = @MYSQL_USER@
106 password = @MYSQL_PASSWORD@
109 null)
110 TEST_MATCH=";999999999999999;0;9;0;100;42"
111 cat >> .smsdrc <<EOT
112 service = null
115 files*)
116 INBOXF=`echo $SERVICE | sed 's/.*-//'`
117 cat >> .smsdrc <<EOT
118 service = files
119 inboxpath = @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/inbox/
120 outboxpath = @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/outbox/
121 sentsmspath = @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/sent/
122 errorsmspath = @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/error/
123 inboxformat = $INBOXF
124 transmitformat = auto
127 esac
129 # Create database structures
130 case $SERVICE in
131 *sqlite3)
132 @SQLITE_BIN@ smsd.db < @CMAKE_CURRENT_SOURCE_DIR@/../docs/sql/sqlite.sql
134 *pgsql)
135 echo "DROP TABLE IF EXISTS daemons, gammu, inbox, outbox, outbox_multipart, pbk, pbk_groups, phones, sentitems;" | PGPASSWORD=@PSQL_PASSWORD@ @PSQL_BIN@ -h @PSQL_HOST@ -U @PSQL_USER@ @PSQL_DATABASE@
136 PGPASSWORD=@PSQL_PASSWORD@ @PSQL_BIN@ -h @PSQL_HOST@ -U @PSQL_USER@ @PSQL_DATABASE@ < @CMAKE_CURRENT_SOURCE_DIR@/../docs/sql/pgsql.sql 2>&1 | grep -v 'ERROR.*language "plpgsql" already exists'
138 *mysql|odbc)
139 echo "DROP TABLE IF EXISTS daemons, gammu, inbox, outbox, outbox_multipart, pbk, pbk_groups, phones, sentitems;" | @MYSQL_BIN@ -u@MYSQL_USER@ -h@MYSQL_HOST@ -p@MYSQL_PASSWORD@ @MYSQL_DATABASE@
140 @MYSQL_BIN@ -h@MYSQL_HOST@ -u@MYSQL_USER@ -p@MYSQL_PASSWORD@ @MYSQL_DATABASE@ < @CMAKE_CURRENT_SOURCE_DIR@/../docs/sql/mysql.sql
142 files*)
143 mkdir -p @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/inbox/
144 mkdir -p @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/outbox/
145 mkdir -p @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/sent/
146 mkdir -p @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/error/
148 esac
150 cat > @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/received.sh << EOT
151 #!@SH_BIN@
152 echo "\$@" >> @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/received.log
153 env >> @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/env.log
154 exit 4
156 chmod +x @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/received.sh
158 CONFIG_PATH="@CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/.smsdrc"
159 DUMMY_PATH="@CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/gammu-dummy"
161 mkdir -p $sms $DUMMY_PATH/sms/1
162 mkdir -p $sms $DUMMY_PATH/sms/2
163 mkdir -p $sms $DUMMY_PATH/sms/3
164 mkdir -p $sms $DUMMY_PATH/sms/4
165 mkdir -p $sms $DUMMY_PATH/sms/5
167 for sms in 62 68 74 ; do
168 cp @CMAKE_CURRENT_SOURCE_DIR@/../tests/at-sms-encode/$sms.backup $DUMMY_PATH/sms/1/$sms
169 done
170 cp @CMAKE_CURRENT_SOURCE_DIR@/../tests/smsbackups/mms.smsbackup $DUMMY_PATH/sms/1/42
172 # Insert message manually
173 case $SERVICE in
174 *sqlite3)
175 echo "INSERT INTO outbox(DestinationNumber,TextDecoded,CreatorID,Coding) VALUES('800123465', 'This is a SQL test message', 'T3st', 'Default_No_Compression');" | @SQLITE_BIN@ smsd.db
177 *pgsql)
178 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@
180 *mysql|odbc)
181 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@
183 files*)
184 cp @CMAKE_CURRENT_SOURCE_DIR@/tests/OUT+4201234567890.txt @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/outbox/
186 esac
188 @CMAKE_CURRENT_BINARY_DIR@/gammu-smsd-inject@GAMMU_TEST_SUFFIX@ -c "$CONFIG_PATH" TEXT 123465 -text "Lorem ipsum." &
189 @CMAKE_CURRENT_BINARY_DIR@/gammu-smsd-inject@GAMMU_TEST_SUFFIX@ -c "$CONFIG_PATH" TEXT 123465 -text "Lorem ipsum."
191 @CMAKE_CURRENT_BINARY_DIR@/gammu-smsd@GAMMU_TEST_SUFFIX@ -c "$CONFIG_PATH" $SMSD_EXTRA_PARAMS &
192 SMSD_PID=$!
194 sleep 10
196 for sms in 10 16 26 ; do
197 cp @CMAKE_CURRENT_SOURCE_DIR@/../tests/at-sms-encode/$sms.backup $DUMMY_PATH/sms/3/$sms
198 done
199 cp @CMAKE_CURRENT_SOURCE_DIR@/../tests/smsbackups/mms-part.smsbackup $DUMMY_PATH/sms/1/666
201 TIMEOUT=0
202 while ! @CMAKE_CURRENT_BINARY_DIR@/gammu-smsd-monitor@GAMMU_TEST_SUFFIX@ -C -c "$CONFIG_PATH" -n 1 -d 0 | grep -q "$TEST_MATCH" ; do
203 @CMAKE_CURRENT_BINARY_DIR@/gammu-smsd-monitor@GAMMU_TEST_SUFFIX@ -C -c "$CONFIG_PATH" -n 1 -d 0
204 sleep 5
205 TIMEOUT=$(($TIMEOUT + 1))
206 if [ $TIMEOUT -gt 60 ] ; then
207 echo "ERROR: Wrong timeout!"
208 exit 1
210 done
212 sleep 5
214 @CMAKE_CURRENT_BINARY_DIR@/gammu-smsd-monitor@GAMMU_TEST_SUFFIX@ -C -c "$CONFIG_PATH" -n 1 -d 0
216 if [ `wc -l < @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/received.log` -ne 8 ] ; then
217 echo "ERROR: Wrong number of messages received!"
218 exit 1
221 if ! grep -q -F 'MMS_ADDRESS=http://mmscz/?m=m5da5a9jn210ma56q20' @CMAKE_CURRENT_BINARY_DIR@/smsd-test-$SERVICE/env.log ; then
222 echo "ERROR: Wrong MMS message received!"
223 exit 1