summaryrefslogtreecommitdiff
path: root/p2pvr/daemon
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2015-04-28 21:02:14 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2015-04-28 21:02:14 +0100
commit1069fd56f363e34e6a56992e90776fb084f65495 (patch)
treeca1ddf45679263c301c5247d814e1dc20004df58 /p2pvr/daemon
parentMake the mock connector not PQ specific (diff)
downloadp2pvr-1069fd56f363e34e6a56992e90776fb084f65495.tar.bz2
p2pvr-1069fd56f363e34e6a56992e90776fb084f65495.tar.xz
p2pvr-1069fd56f363e34e6a56992e90776fb084f65495.zip
Move the mocked PQ db into the PQ module and start the basis of the SQL mod unit tests
Diffstat (limited to 'p2pvr/daemon')
-rw-r--r--p2pvr/daemon/unittests/mockDatasource.cpp70
-rw-r--r--p2pvr/daemon/unittests/mockDatasource.h32
2 files changed, 0 insertions, 102 deletions
diff --git a/p2pvr/daemon/unittests/mockDatasource.cpp b/p2pvr/daemon/unittests/mockDatasource.cpp
deleted file mode 100644
index cb3c95a..0000000
--- a/p2pvr/daemon/unittests/mockDatasource.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "mockDatasource.h"
-#include <misc.h>
-#include <scripts.h>
-#include <connection.h>
-#include <logger.h>
-#include <boost/filesystem/operations.hpp>
-#include <definedDirs.h>
-
-DECLARE_CUSTOM_COMPONENT_LOADER("mock", T, MockConnectionLoader, ConnectionLoader);
-
-std::map<std::string, MockConnectionLoader::ConnectionCreator> MockConnectionLoader::mocks;
-unsigned int MockConnectionLoader::mocked = 0;
-
-DB::Connection *
-MockConnectionLoader::create(const std::string & n) const
-{
- return mocks.find(n)->second();
-}
-
-MockDatabase::MockDatabase(const std::string & masterdb, const std::string & name, const std::vector<std::string> & ss) :
- master(InstanceMap<ConnectionLoader, std::string>::Get<std::invalid_argument>("postgresql")->create(masterdb)),
- testDbName(stringbf("test_%d_%d", getpid(), ++MockConnectionLoader::mocked)),
- mockName(name)
-{
- Logger()->messagebf(LOG_DEBUG, "Setting up new mocked database %s", testDbName);
- DropDatabase();
- CreateNewDatabase();
- try {
- for (auto s : ss) {
- Logger()->messagebf(LOG_DEBUG, "%s << %s", testDbName, s);
- system(("psql -q -1 -U postgres " + testDbName + " -f " + (RootDir / s).string()).c_str());
- }
- Logger()->messagebf(LOG_DEBUG, "%s initialized", testDbName);
- MockConnectionLoader::mocks[name] = boost::bind(MockDatabase::openConnection, stringbf("user=postgres dbname=%s", testDbName));
- }
- catch (...) {
- DropDatabase();
- throw;
- }
-}
-
-DB::Connection *
-MockDatabase::openConnection(const std::string & connStr)
-{
- return InstanceMap<ConnectionLoader, std::string>::Get<std::invalid_argument>("postgresql")->create(connStr);
-}
-
-MockDatabase::~MockDatabase()
-{
- Logger()->messagebf(LOG_DEBUG, "Tearing down mocked database %s", testDbName);
- DropDatabase();
- delete master;
- MockConnectionLoader::mocks.erase(mockName);
- Logger()->messagebf(LOG_DEBUG, "%s torn down", testDbName);
-}
-
-void MockDatabase::DropDatabase() const
-{
- Logger()->messagebf(LOG_INFO, "Killing any active connections to database %s", testDbName);
- master->execute("SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '" + testDbName + "'");
- Logger()->messagebf(LOG_INFO, "Dropping (if exists) old database %s", testDbName);
- master->execute("DROP DATABASE IF EXISTS " + testDbName);
-}
-
-void MockDatabase::CreateNewDatabase() const
-{
- Logger()->messagebf(LOG_INFO, "Creating new database %s", testDbName);
- master->execute("CREATE DATABASE " + testDbName);
-}
-
diff --git a/p2pvr/daemon/unittests/mockDatasource.h b/p2pvr/daemon/unittests/mockDatasource.h
deleted file mode 100644
index df68602..0000000
--- a/p2pvr/daemon/unittests/mockDatasource.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef TESTDATASOURCE_H
-#define TESTDATASOURCE_H
-
-#include <rdbmsDataSource.h>
-
-class MockConnectionLoader : public ConnectionLoader {
- public:
- DB::Connection * create(const std::string &) const;
-
- static unsigned int mocked;
- typedef boost::function<DB::Connection *()> ConnectionCreator;
- static std::map<std::string, ConnectionCreator> mocks;
-};
-
-class MockDatabase {
- public:
- MockDatabase(const std::string & master, const std::string & name, const std::vector<std::string> & ss);
- ~MockDatabase();
-
- protected:
- void DropDatabase() const;
- void CreateNewDatabase() const;
-
- private:
- static DB::Connection * openConnection(const std::string & connStr);
- const DB::Connection * master;
- const std::string testDbName;
- const std::string mockName;
-};
-
-#endif
-