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