diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/backupstore/StoreTestUtils.cpp | 48 | ||||
-rw-r--r-- | lib/backupstore/StoreTestUtils.h | 8 |
2 files changed, 54 insertions, 2 deletions
diff --git a/lib/backupstore/StoreTestUtils.cpp b/lib/backupstore/StoreTestUtils.cpp index abfddce8..48b6370c 100644 --- a/lib/backupstore/StoreTestUtils.cpp +++ b/lib/backupstore/StoreTestUtils.cpp @@ -54,7 +54,7 @@ bool delete_account() } std::vector<uint32_t> ExpectedRefCounts; -int bbstored_pid = 0; +int bbstored_pid = 0, bbackupd_pid = 0; std::string OriginalWorkingDir; bool setUp(const char* function_name) @@ -381,4 +381,50 @@ bool StopServer(bool wait_for_process) return true; } +#define FAIL { \ + /* \ + std::ostringstream os; \ + os << "failed at " << __FUNCTION__ << ":" << __LINE__; \ + s_test_status[current_test_name] = os.str(); \ + return fail(); \ + */ \ + return false; \ +} + +bool StartClient(const std::string& bbackupd_conf_file) +{ + TEST_THAT_OR(bbackupd_pid == 0, FAIL); + + std::string cmd = BBACKUPD " " + bbackupd_args + " " + bbackupd_conf_file; + bbackupd_pid = LaunchServer(cmd.c_str(), "testfiles/bbackupd.pid"); + + TEST_THAT_OR(bbackupd_pid != -1 && bbackupd_pid != 0, FAIL); + ::sleep(1); + TEST_THAT_OR(ServerIsAlive(bbackupd_pid), FAIL); + + return true; +} + +bool StopClient(bool wait_for_process) +{ + TEST_THAT_OR(bbackupd_pid != 0, FAIL); + TEST_THAT_OR(ServerIsAlive(bbackupd_pid), FAIL); + TEST_THAT_OR(KillServer(bbackupd_pid, wait_for_process), FAIL); + ::sleep(1); + + TEST_THAT_OR(!ServerIsAlive(bbackupd_pid), FAIL); + bbackupd_pid = 0; + #ifdef WIN32 + int unlink_result = unlink("testfiles/bbackupd.pid"); + TEST_EQUAL_LINE(0, unlink_result, "unlink testfiles/bbackupd.pid"); + if(unlink_result != 0) + { + FAIL; + } + #else + TestRemoteProcessMemLeaks("bbackupd.memleaks"); + #endif + + return true; +} diff --git a/lib/backupstore/StoreTestUtils.h b/lib/backupstore/StoreTestUtils.h index 335021d3..0740b3ec 100644 --- a/lib/backupstore/StoreTestUtils.h +++ b/lib/backupstore/StoreTestUtils.h @@ -21,7 +21,7 @@ class TLSContext; extern std::vector<uint32_t> ExpectedRefCounts; //! Holds the PID of the currently running bbstored test server. -extern int bbstored_pid; +extern int bbstored_pid, bbackupd_pid; //! Sets up (cleans up) test environment at the start of every test. bool setUp(const char* function_name); @@ -80,6 +80,12 @@ bool StartServer(); //! Stops the currently running bbstored test server. bool StopServer(bool wait_for_process = false); +//! Starts the bbackupd client running, which must not already be running. +bool StartClient(const std::string& bbackupd_conf_file = "testfiles/bbackupd.conf"); + +//! Stops the currently running bbackupd client. +bool StopClient(bool wait_for_process = false); + //! Creates the standard test account, for example after delete_account(). bool create_account(int soft, int hard); |