From b83fe6411a334ad78d8dafc6cb5634fa2c2a5968 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Wed, 6 Sep 2017 16:50:37 +0200 Subject: [PATCH] feat(EventsDb): fixes + add new test --- src/db/abstract/abstract-db.cpp | 15 ++++++++-- src/db/events-db.cpp | 14 ++++----- tester/CMakeLists.txt | 19 ++++++++---- tester/db/linphone.db | Bin 0 -> 12288 bytes tester/{ => db}/messages.db | Bin tester/events-db-tester.cpp | 50 ++++++++++++++++++++++++++++++++ tester/liblinphone_tester.h | 1 + tester/tester.c | 1 + 8 files changed, 85 insertions(+), 15 deletions(-) create mode 100644 tester/db/linphone.db rename tester/{ => db}/messages.db (100%) create mode 100644 tester/events-db-tester.cpp diff --git a/src/db/abstract/abstract-db.cpp b/src/db/abstract/abstract-db.cpp index 81df3a33f..9345ec688 100644 --- a/src/db/abstract/abstract-db.cpp +++ b/src/db/abstract/abstract-db.cpp @@ -18,6 +18,7 @@ #include "abstract-db-p.h" #include "db/provider/db-session-provider.h" +#include "logger/logger.h" #include "abstract-db.h" @@ -32,12 +33,22 @@ AbstractDb::AbstractDb (AbstractDbPrivate &p) : Object(*new AbstractDbPrivate) { bool AbstractDb::connect (Backend backend, const string ¶meters) { L_D(AbstractDb); + d->backend = backend; d->dbSession = DbSessionProvider::getInstance()->getSession( (backend == Mysql ? "mysql://" : "sqlite3://") + parameters ); - if (d->dbSession) - init(); + if (d->dbSession) { + try { + init(); + } catch (const exception &e) { + lWarning() << "Unable to init database: " << e.what(); + + // Reset session. + d->dbSession = DbSession(); + } + } + return d->dbSession; } diff --git a/src/db/events-db.cpp b/src/db/events-db.cpp index fd849132b..044561015 100644 --- a/src/db/events-db.cpp +++ b/src/db/events-db.cpp @@ -140,7 +140,7 @@ EventsDb::EventsDb () : AbstractDb(*new EventsDbPrivate) {} *session << "CREATE TABLE IF NOT EXISTS event_type (" - " id" + primaryKeyAutoIncrementStr("TINYINT") + "," + " id TINYINT UNSIGNED," " value VARCHAR(255) NOT NULL" ")"; @@ -156,14 +156,14 @@ EventsDb::EventsDb () : AbstractDb(*new EventsDbPrivate) {} *session << "CREATE TABLE IF NOT EXISTS message_state (" - " id" + primaryKeyAutoIncrementStr("TINYINT") + "," - " state VARCHAR(255) NOT NULL" + " id TINYINT UNSIGNED," + " value VARCHAR(255) NOT NULL" ")"; *session << "CREATE TABLE IF NOT EXISTS message_direction (" - " id" + primaryKeyAutoIncrementStr("TINYINT") + "," - " direction VARCHAR(255) NOT NULL" + " id TINYINT UNSIGNED," + " value VARCHAR(255) NOT NULL" ")"; *session << @@ -188,9 +188,9 @@ EventsDb::EventsDb () : AbstractDb(*new EventsDbPrivate) {} " state_id TINYINT UNSIGNED NOT NULL," " direction_id TINYINT UNSIGNED NOT NULL," " imdn_message_id VARCHAR(255) NOT NULL," // See: https://tools.ietf.org/html/rfc5438#section-6.3 - " content_type VARCHAR(255) NOT NULL," + " content_type VARCHAR(255) NOT NULL," // Content type of text. (Html or text for example.) " is_secured BOOLEAN NOT NULL," - " app_data VARCHAR(2048)," + " app_data VARCHAR(2048)," // App user data. " FOREIGN KEY (dialog_id)" " REFERENCES dialog(id)" " ON DELETE CASCADE," diff --git a/tester/CMakeLists.txt b/tester/CMakeLists.txt index a66b026cf..3cbaf88e1 100644 --- a/tester/CMakeLists.txt +++ b/tester/CMakeLists.txt @@ -76,6 +76,11 @@ set(CERTIFICATE_CLIENT_FILES set(CERTIFICATE_FILES ${CERTIFICATE_ALT_FILES} ${CERTIFICATE_CN_FILES} ${CERTIFICATE_CLIENT_FILES}) +set(DB_FILES + db/linphone.db + db/messages.db +) + set(RC_FILES rcfiles/account_creator_rc rcfiles/assistant_create.rc @@ -146,11 +151,11 @@ set(VCARD_FILES set(OTHER_FILES tester_hosts local_tester_hosts - messages.db ) set(IOS_RESOURCES_FILES ${OTHER_FILES} + ${DB_FILES} certificates images rcfiles @@ -195,6 +200,7 @@ set(SOURCE_FILES_C set(SOURCE_FILES_CXX clonable-object-tester.cpp cpim-tester.cpp + events-db-tester.cpp ) set(SOURCE_FILES_OBJC ) @@ -308,14 +314,15 @@ if (NOT ANDROID AND NOT CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) - install(FILES ${OTHER_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester") - install(FILES ${SOUND_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/sounds") - install(FILES ${SIPP_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/sipp") install(FILES ${CERTIFICATE_ALT_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/certificates/altname") - install(FILES ${CERTIFICATE_CN_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/certificates/cn") install(FILES ${CERTIFICATE_CLIENT_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/certificates/client") - install(FILES ${RC_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/rcfiles") + install(FILES ${CERTIFICATE_CN_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/certificates/cn") + install(FILES ${DB_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/db") install(FILES ${IMAGE_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/images") + install(FILES ${OTHER_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester") + install(FILES ${RC_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/rcfiles") + install(FILES ${SIPP_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/sipp") + install(FILES ${SOUND_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/sounds") install(FILES ${VCARD_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/liblinphone_tester/vcards") endif() endif() diff --git a/tester/db/linphone.db b/tester/db/linphone.db new file mode 100644 index 0000000000000000000000000000000000000000..607cb323e2930ad2d0a1fa756e736168e6d01b80 GIT binary patch literal 12288 zcmeHN-*4Mg6!!H=;{HfVC8(kaP26gr#_FmfSS2K0$P#yiB~Ectq)JGUiSH^4$Ifi0 zXphk*;9uBZ!2`VWFoe*Acm?r@gpl?M8bZ8q>@1F*ChJ;}tyS(-liqvJ@ww-G*C)rx z{Td%uO`p+Qj@!|F`nHe~2oc_+R1kz5zOwilHVHea;Q;@WSbthKCv5#Dr%@`x<3J}1 z|H5OU2|o%yOuOXF^Qk^$r2O_a>F@aZCl>24&(jZC%P?Km_D#n=HX)TXrPx$xvv|F# z&|_j+pwu*Iv!WhU)F$0m8V&(czU zV}ta!5>9x&?nfSlgUrOmL($n5?thw+^7%ZuI|!d0G20K{(utMAsV6I7Sjr7WqkCGV zR@4sYP33?V_nY;KikH+BwTZEY`Yr!Xm$fE<5yg#~zKIa}dZ&w!)s#lFSlf$>ck7yh z0EUYc5>{o3O;dIiO;JlqBerD0G(urrrDdh6;9ixAjZ(3!$Tmp%^>xzU2w@(X8}(Ah z!w$nZ8@hX9Ccn8!4#MTU+ZJX`%VW2D%x<%>AtV+a6BcZ}!>;0$a$h7;{>l~7zd5jJ zc3Zk(xOmrkqpp~=H4>a+2an&am}5&pIxnV!Bu`{@Fy@UTz!8`W1bF_>#WwRGIRXfcVx&bzTD<2d;v)h6hCkpJ_#VE3`*06>V8O>wgLmO|SP}n0 z1>QIU7aD=wDv;L}%BI(~^gGOW`6VEmQkhxi5mr&7>Fj&VePsp6R%X|zZ``~+99)K79Hb<7p4{&82Z_$OS!M}UDVxTh(2D8QfaJLdnx3%$kMd5*x`B9O(; zfXiaN=N~$zeYgy;c)4P?oemDNnEf#k=6)pN&;N6K!|=d40^uQl8V}@&Mt&A$@jiU< ze9q=)0sZ+n|9^qUy3uL7{QsX;KkxJQ`C>D?Fw#g+|3&gZAP>X}`F0jr$!*RSfpbE8 zx_eEM@|P}=&r2bj#V~ctIUKw%BseUCxl_%vl>=bi#D%%MIOW2(l7eXtNRjK6Gzm3By54vDXc!E&PRCPb$wzk_=Hv?>~M zmQNxFM=b1<6wQudw}#GQrJu;M#)8;(klt+j14{2SCDTKaZo7v+@YCz{dQ~Z^@rMPy w+ihV@*GFr-dF>r}yx2wnj2GB};F*i|5T. + */ + +#include "db/events-db.h" + +#include "liblinphone_tester.h" + +// ============================================================================= + +using namespace std; + +using namespace LinphonePrivate; + +// ----------------------------------------------------------------------------- + +static const string getDatabasePath () { + static const string path = string(bc_tester_get_resource_dir_prefix()) + "/db/linphone.db"; + return path; +} + +// ----------------------------------------------------------------------------- + +static void open_database () { + EventsDb eventsDb; + eventsDb.connect(EventsDb::Sqlite3, getDatabasePath()); +} + +test_t events_db_tests[] = { + TEST_NO_TAG("Open database", open_database) +}; + +test_suite_t events_db_test_suite = { + "EventsDb", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each, + sizeof(events_db_tests) / sizeof(events_db_tests[0]), events_db_tests +}; diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 058aaa66e..8bd915e62 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -46,6 +46,7 @@ extern test_suite_t clonable_object_test_suite; extern test_suite_t cpim_test_suite; extern test_suite_t dtmf_test_suite; extern test_suite_t event_test_suite; +extern test_suite_t events_db_test_suite; extern test_suite_t flexisip_test_suite; extern test_suite_t log_collection_test_suite; extern test_suite_t message_test_suite; diff --git a/tester/tester.c b/tester/tester.c index 49558cff1..0ba670dc7 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -575,6 +575,7 @@ void liblinphone_tester_add_suites() { bc_tester_add_suite(&dtmf_test_suite); bc_tester_add_suite(&cpim_test_suite); bc_tester_add_suite(&clonable_object_test_suite); + bc_tester_add_suite(&events_db_test_suite); #if defined(VIDEO_ENABLED) && defined(HAVE_GTK) bc_tester_add_suite(&video_test_suite); #endif