void tearDown() { OdbcHandle handle = NULL; CPPUNIT_ASSERT((handle=odbcConnect(DATABASE_NAME, "localhost", POSTGRESQL_USER, "{PostgreSQL}"))!=NULL); if (handle) { char sqlStatement[256]; // Clear tables sprintf(sqlStatement, "DELETE FROM call_state_events *;"); CPPUNIT_ASSERT(odbcExecute(handle, sqlStatement)); sprintf(sqlStatement, "DELETE FROM observer_state_events *;"); CPPUNIT_ASSERT(odbcExecute(handle, sqlStatement)); } #ifdef ODBC_LOGGING OsSysLog::flush(); #endif }
/*------------ ! _ASK_SQL() !-----------------------------------------------------------------------*/ short PD_style _ASK_SQL( OpndType *lpOpnd, short ParaNum, \ short *OpndTop, short *CurState ) { char *szSQL = NULL, *sz; int i, j; if( *CurState == 0 || *CurState == LASTWORKTIMEOFACTION ) { *OpndTop -= ParaNum; return 0; } j = 0; for(i = 0; i < ParaNum; i++) { sz = xGetOpndString(&lpOpnd[i]); j += strlen(sz) + 2; if( szSQL == NULL ) szSQL = zeroMalloc(j); else szSQL = realloc(szSQL, j); strcat(szSQL, sz); } if( szSQL != NULL ) { sz = odbcExecute(szSQL); free( szSQL ); } else { sz = "szSQL"; } if( sz != NULL ) { ErrorSet.xERROR = iOPrError; strZcpy(ErrorSet.string, sz, XES_LENGTH); *OpndTop -= ParaNum; return 1; } *OpndTop -= ParaNum; /* maintain the opnd stack */ return 0; } /* end of function _ASK_SQL() */
void testOdbcValidateObserverData() { OdbcHandle handle = NULL; char sqlStatement[256]; CPPUNIT_ASSERT((handle=odbcConnect(DATABASE_NAME, "localhost", POSTGRESQL_USER, "{PostgreSQL}"))!=NULL); if (handle) { databaseWrite(handle); int cols; // Get data from call_state_observer_events sprintf(sqlStatement, "SELECT * FROM observer_state_events;"); CPPUNIT_ASSERT(odbcExecute(handle, sqlStatement)); CPPUNIT_ASSERT((cols=odbcResultColumns(handle)) == 6); CPPUNIT_ASSERT(odbcGetNextRow(handle)); char buffer[256]; CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 2, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "10.1.20.3:5060") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 3, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "0") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 4, buffer, 256)); // When returning a timestamp as string data the fractional component // is truncated - this is expected behavior CPPUNIT_ASSERT(strcmp(buffer, "2006-03-10 12:59:00") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 5, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "101") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 6, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "AuthProxyCseObserver") == 0); CPPUNIT_ASSERT(odbcDisconnect(handle)); } }
bool CallStateEventWriter_DB::writeLog(const char* event) { bool bRet = false; if (mbWriteable) { if (mHandle) { odbcExecute(mHandle, event); bRet = true; } Os::Logger::instance().log(FAC_CDR, PRI_DEBUG, "%s::writeLog", ModuleName); } else { Os::Logger::instance().log(FAC_CDR, PRI_ERR, "%s::writeLog log %s not writeable", ModuleName, mLogName.data()); } return bRet; }
void databaseWrite(OdbcHandle handle) { if (handle) { char sqlStatement[256]; // Clear tables sprintf(sqlStatement, "DELETE FROM call_state_events *;"); CPPUNIT_ASSERT(odbcExecute(handle, sqlStatement)); sprintf(sqlStatement, "DELETE FROM observer_state_events *;"); CPPUNIT_ASSERT(odbcExecute(handle, sqlStatement)); sprintf(sqlStatement, "INSERT INTO observer_state_events VALUES (DEFAULT," "\'10.1.20.3:5060\'," "0," "timestamp \'2006-03-10 12:59:00.666\'," "101," "\'AuthProxyCseObserver\');"); CPPUNIT_ASSERT(odbcExecute(handle, sqlStatement)); sprintf(sqlStatement, "INSERT INTO call_state_events VALUES (DEFAULT," "\'10.1.20.3:5060\'," "1," "timestamp \'2006-03-10 13:00:00.123\'," "\'R\'," "12," "\'call-111111\'," "\'12345\'," "\'67890\'," "\'sip:[email protected]\'," "\'sip:[email protected]\'," "\'10.1.1.71\'," "\'refer-to\'," "\'referred-by\'," "0," "\'No Reason\'," "\'\');"); CPPUNIT_ASSERT(odbcExecute(handle, sqlStatement)); sprintf(sqlStatement, "INSERT INTO call_state_events VALUES (DEFAULT," "\'10.1.20.3:5060\'," "2," "timestamp \'2006-03-10 13:00:10.573\'," "\'S\'," "13," "\'call-111112\'," "\'54321\'," "\'09876\'," "\'sip:[email protected]\'," "\'sip:[email protected]\'," "\'10.1.20.71\'," "\'refer-to-2\'," "\'referred-by-2\'," "0," "\'No Reason-2\'," "\'\');"); CPPUNIT_ASSERT(odbcExecute(handle, sqlStatement)); } }
void testOdbcValidateEventData() { OdbcHandle handle = NULL; char sqlStatement[256]; CPPUNIT_ASSERT((handle=odbcConnect(DATABASE_NAME, "localhost", POSTGRESQL_USER, "{PostgreSQL}"))!=NULL); if (handle) { databaseWrite(handle); int cols; // Get data from call_state_events sprintf(sqlStatement, "SELECT * FROM call_state_events;"); CPPUNIT_ASSERT(odbcExecute(handle, sqlStatement)); CPPUNIT_ASSERT((cols=odbcResultColumns(handle)) == 17); CPPUNIT_ASSERT(odbcGetNextRow(handle)); char buffer[256]; // First record CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 2, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "10.1.20.3:5060") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 3, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "1") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 4, buffer, 256)); // When returning a timestamp as string data the fractional component // is truncated - this is expected behavior CPPUNIT_ASSERT(strcmp(buffer, "2006-03-10 13:00:00") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 5, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "R") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 7, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "call-111111") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 8, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "12345") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 9, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "67890") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 10, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "sip:[email protected]") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 11, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "sip:[email protected]") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 12, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "10.1.1.71") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 13, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "refer-to") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 14, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "referred-by") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 15, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "0") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 16, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "No Reason") == 0); CPPUNIT_ASSERT(odbcGetNextRow(handle)); // Second record CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 2, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "10.1.20.3:5060") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 3, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "2") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 4, buffer, 256)); // When returning a timestamp as string data the fractional component // is truncated - this is expected behavior CPPUNIT_ASSERT(strcmp(buffer, "2006-03-10 13:00:10") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 5, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "S") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 7, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "call-111112") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 8, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "54321") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 9, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "09876") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 10, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "sip:[email protected]") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 11, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "sip:[email protected]") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 12, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "10.1.20.71") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 13, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "refer-to-2") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 14, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "referred-by-2") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 15, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "0") == 0); CPPUNIT_ASSERT(odbcGetColumnStringData(handle, 16, buffer, 256)); CPPUNIT_ASSERT(strcmp(buffer, "No Reason-2") == 0); // End of rows CPPUNIT_ASSERT(!odbcGetNextRow(handle)); CPPUNIT_ASSERT(odbcDisconnect(handle)); } }