Half-related change, if available, call mysql_library_end() at the end of the unit test run
{MySqlLeaseMgr::NUM_STATEMENTS, NULL}
};
-// Small RAII object for safer initialization, will close the database
-// connection upon destruction, unless release() has been called.
-class MySQLHolder {
-public:
- MySQLHolder(MYSQL* mysql) : mysql_(mysql) {}
-
- ~MySQLHolder() {
- if (mysql_) {
- mysql_close(mysql_);
- }
- }
-
- MYSQL* get_ptr() {
- return (mysql_);
- }
-
- MYSQL* release() {
- MYSQL* ptr = mysql_;
- mysql_ = NULL;
- return (ptr);
- }
-
-private:
- MYSQL* mysql_;
-};
-
}; // Anonymous namespace
// MySqlLeaseMgr Constructor and Destructor
MySqlLeaseMgr::MySqlLeaseMgr(const LeaseMgr::ParameterMap& parameters)
- : LeaseMgr(parameters), mysql_(NULL) {
-
- // Allocate context for MySQL
- MySQLHolder mysql_holder(mysql_init(NULL));
-
- mysql_ = mysql_holder.get_ptr();
- if (mysql_ == NULL) {
- isc_throw(DbOpenError, "unable to initialize MySQL");
- }
+ : LeaseMgr(parameters) {
// Open the database.
openDatabase();
// program and the database.
exchange4_.reset(new MySqlLease4Exchange());
exchange6_.reset(new MySqlLease6Exchange());
-
- // Let the real destructor take care of cleaning up now
- mysql_holder.release();
}
statements_[i] = NULL;
}
}
-
- // Close the database
- mysql_close(mysql_);
- mysql_ = NULL;
}
namespace isc {
namespace dhcp {
+/// Small RAII object for safer initialization, will close the database
+/// connection upon destruction
+class MySqlHolder {
+public:
+ MySqlHolder() : mysql_(mysql_init(NULL)) {
+ if (mysql_ == NULL) {
+ isc_throw(DbOpenError, "unable to initialize MySQL");
+ }
+ }
+
+ ~MySqlHolder() {
+ if (mysql_) {
+ mysql_close(mysql_);
+ }
+ }
+
+ operator MYSQL*() const {
+ return (mysql_);
+ }
+
+private:
+ MYSQL* mysql_;
+};
+
// Define the current database schema values
const uint32_t CURRENT_VERSION_VERSION = 1;
/// @param cltt Reference to location where client last transmit time
/// is put.
static
- void convertFromDatabaseTime(const MYSQL_TIME& expire,
+ void convertFromDatabaseTime(const MYSQL_TIME& expire,
uint32_t valid_lifetime, time_t& cltt);
///@}
/// declare them as "mutable".)
boost::scoped_ptr<MySqlLease4Exchange> exchange4_; ///< Exchange object
boost::scoped_ptr<MySqlLease6Exchange> exchange6_; ///< Exchange object
- MYSQL* mysql_; ///< MySQL context object
+ MySqlHolder mysql_;
std::vector<MYSQL_STMT*> statements_; ///< Prepared statements
std::vector<std::string> text_statements_; ///< Raw text of statements
};
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
+#include <config.h>
#include <log/logger_support.h>
#include <gtest/gtest.h>
+#ifdef HAVE_MYSQL
+#include <mysql/mysql.h>
+#endif
+
int
main(int argc, char* argv[]) {
::testing::InitGoogleTest(&argc, argv);
int result = RUN_ALL_TESTS();
+#ifdef HAVE_MYSQL
+ mysql_library_end();
+#endif
+
return (result);
}