DboFixture.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include <boost/test/unit_test.hpp>
  2. #include <Wt/Dbo/Dbo>
  3. #include <Wt/Dbo/backend/Postgres>
  4. #include <Wt/Dbo/backend/MySQL>
  5. #include <Wt/Dbo/backend/Sqlite3>
  6. #include <Wt/Dbo/backend/Firebird>
  7. #include <Wt/Dbo/FixedSqlConnectionPool>
  8. #include <Wt/WDate>
  9. #include <Wt/WDateTime>
  10. #include <Wt/WTime>
  11. #include <Wt/Dbo/WtSqlTraits>
  12. #include <Wt/Dbo/ptr_tuple>
  13. #include <Wt/Dbo/QueryModel>
  14. #include <boost/date_time/posix_time/posix_time.hpp>
  15. #include <boost/date_time/gregorian/gregorian.hpp>
  16. namespace dbo = Wt::Dbo;
  17. struct DboFixtureBase
  18. {
  19. dbo::SqlConnectionPool *connectionPool_;
  20. dbo::Session *session_;
  21. DboFixtureBase(bool showQueries = true)
  22. {
  23. static bool logged = false;
  24. dbo::SqlConnection *connection;
  25. #ifdef SQLITE3
  26. if (!logged) {
  27. std::cerr << "DboTest.C created a Sqlite3 connector" << std::endl;
  28. logged = true;
  29. }
  30. dbo::backend::Sqlite3 *sqlite3 = new dbo::backend::Sqlite3(":memory:");
  31. sqlite3->setDateTimeStorage(dbo::SqlDate,
  32. dbo::backend::Sqlite3::JulianDaysAsReal);
  33. connection = sqlite3;
  34. #endif // SQLITE3
  35. #ifdef POSTGRES
  36. if (!logged) {
  37. std::cerr << "DboTest.C created a Postgres connector" << std::endl;
  38. logged = true;
  39. }
  40. connection = new dbo::backend::Postgres
  41. ("user=postgres_test password=postgres_test port=5432 dbname=wt_test");
  42. // use host=vendetta for testing.
  43. #endif // POSTGRES");
  44. #ifdef MYSQL
  45. if (!logged) {
  46. std::cerr << "DboTest.C created a MySQL connector" << std::endl;
  47. logged = true;
  48. }
  49. connection = new dbo::backend::MySQL("wt_test_db", "test_user",
  50. "test_pw", "vendetta", 3306);
  51. #endif // MYSQL
  52. #ifdef FIREBIRD
  53. // gsec.exe -user sysdba -pass masterkey
  54. // add test_user -pw test_pwd
  55. // isql.exe
  56. // create database 'C:\opt\db\firebird\wt_test.fdb' user 'test_user' password 'test_pwd'
  57. std::string file;
  58. #ifdef WT_WIN32
  59. file = "C:\\opt\\db\\firebird\\wt_test.fdb";
  60. #else
  61. file = "/opt/db/firebird/wt_test.fdb";
  62. #endif
  63. if (!logged) {
  64. std::cerr << "DboTest.C created a Firebird connector" << std::endl;
  65. logged = true;
  66. }
  67. connection = new dbo::backend::Firebird ("vendetta",
  68. file,
  69. "test_user", "test_pwd",
  70. "", "", "");
  71. #endif // FIREBIRD
  72. if (showQueries)
  73. connection->setProperty("show-queries", "true");
  74. connectionPool_ = new dbo::FixedSqlConnectionPool(connection, 5);
  75. session_ = new dbo::Session();
  76. session_->setConnectionPool(*connectionPool_);
  77. }
  78. ~DboFixtureBase()
  79. {
  80. try {
  81. session_->dropTables();
  82. } catch (...) {
  83. }
  84. delete session_;
  85. delete connectionPool_;
  86. }
  87. };