The following commit has been merged in the master branch:
commit 9cd2bbf14323c57aaecafb2ce18b8927c257c933
Author: Michal Čihař <mci...@novell.com>
Date:   Thu Mar 3 13:04:18 2011 +0100

    Prepare testsuite for ODBC

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ae50f7f..c7093c8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,6 +25,7 @@ option (COVERAGE "Add flags for Coverage analysis" OFF)
 option (ONLINE_TESTING "Enable testing of parts which use remote servers" OFF)
 option (PSQL_TESTING "Enable testing of PostgreSQL SMSD backend" OFF)
 option (MYSQL_TESTING "Enable testing of MySQL SMSD backend" OFF)
+option (ODBC_TESTING "Enable testing of ODBC MySQL SMSD backend" OFF)
 
 option (LARGE_FILES "Support for large files" ON)
 if (LARGE_FILES)
diff --git a/smsd/CMakeTests.txt b/smsd/CMakeTests.txt
index a0790e5..d294c5a 100644
--- a/smsd/CMakeTests.txt
+++ b/smsd/CMakeTests.txt
@@ -13,6 +13,8 @@ if (WITH_BACKUP)
     set(MYSQL_USER smsd CACHE STRING "User to use for MySQL tests")
     set(MYSQL_PASSWORD smsd CACHE STRING "Password to use for MySQL tests")
 
+    set(ODBC_HOST smsd CACHE STRING "ODBC connection to use for MySQL tests")
+
     configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/test-smsd.sh" 
"${CMAKE_CURRENT_BINARY_DIR}/run-test-smsd.sh" ESCAPE_QUOTES)
     configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/test-smsd-files-include.sh" 
"${CMAKE_CURRENT_BINARY_DIR}/run-test-smsd-files-include.sh" ESCAPE_QUOTES)
 
@@ -53,6 +55,9 @@ if (WITH_BACKUP)
         if (LIBDBI_FOUND)
             smsd_testsuite("dbi-mysql")
         endif (LIBDBI_FOUND)
+        if (ODBC_FOUND)
+            smsd_testsuite("odbc")
+        endif (ODBC_FOUND)
     endif (MYSQL_TESTING)
 
     if (PSQL_TESTING)
diff --git a/smsd/services/odbc.c b/smsd/services/odbc.c
index 5ac032d..f190a04 100644
--- a/smsd/services/odbc.c
+++ b/smsd/services/odbc.c
@@ -216,8 +216,35 @@ char * SMSDODBC_QuoteString(GSM_SMSDConfig * Config, 
SQL_conn *conn, const char
 /* LAST_INSERT_ID */
 unsigned long long SMSDODBC_SeqID(GSM_SMSDConfig * Config, const char *id)
 {
-       /* TODO */
-       return 0;
+       SQLRETURN ret;
+       SQLHSTMT stmt;
+       SQLINTEGER value;
+
+       ret = SQLAllocHandle(SQL_HANDLE_STMT, Config->conn.odbc.dbc, &stmt);
+       if (!SQL_SUCCEEDED(ret)) {
+               return 0;
+       }
+
+       ret = SQLExecDirect (stmt, (SQLCHAR*)"SELECT @@IDENTITY", SQL_NTS);
+       if (!SQL_SUCCEEDED(ret)) {
+               SQLFreeHandle (SQL_HANDLE_STMT, stmt);
+               return 0;
+       }
+
+       ret = SQLFetch(stmt);
+       if (!SQL_SUCCEEDED(ret)) {
+               SQLFreeHandle (SQL_HANDLE_STMT, stmt);
+               return 0;
+       }
+
+       ret = SQLGetData(stmt, 1, SQL_C_SLONG, &value, 0, NULL);
+       if (!SQL_SUCCEEDED(ret)) {
+               SQLFreeHandle (SQL_HANDLE_STMT, stmt);
+               return 0;
+       }
+       SQLFreeHandle (SQL_HANDLE_STMT, stmt);
+
+       return value;
 }
 
 unsigned long SMSDODBC_AffectedRows(GSM_SMSDConfig * Config, SQL_result res)
diff --git a/smsd/test-smsd.sh b/smsd/test-smsd.sh
index bb170b1..d185578 100755
--- a/smsd/test-smsd.sh
+++ b/smsd/test-smsd.sh
@@ -97,6 +97,15 @@ user = @MYSQL_USER@
 password = @MYSQL_PASSWORD@
 EOT
         ;;
+    odbc)
+        cat >> .smsdrc <<EOT
+service = sql
+driver = odbc
+pc = smsd
+user = @MYSQL_USER@
+password = @MYSQL_PASSWORD@
+EOT
+        ;;
     null)
         TEST_MATCH=";999999999999999;0;9;0;100;42"
         cat >> .smsdrc <<EOT
@@ -126,7 +135,7 @@ case $SERVICE in
         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@
         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'
         ;;
-    *mysql)
+    *mysql|odbc)
         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@
         @MYSQL_BIN@ -h@MYSQL_HOST@ -u@MYSQL_USER@ -p@MYSQL_PASSWORD@ 
@MYSQL_DATABASE@ < @CMAKE_CURRENT_SOURCE_DIR@/../docs/sql/mysql.sql
         ;;
@@ -168,7 +177,7 @@ case $SERVICE in
     *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)
+    *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*)

-- 
Gammu

_______________________________________________
Gammu-svn mailing list
Gammu-svn@lists.cihar.com
https://lists.cihar.com/cgi-bin/mailman/listinfo/gammu-svn

Reply via email to