diff options
Diffstat (limited to 'lib/backupstore')
-rw-r--r-- | lib/backupstore/StoreTestUtils.cpp | 75 | ||||
-rw-r--r-- | lib/backupstore/StoreTestUtils.h | 15 |
2 files changed, 65 insertions, 25 deletions
diff --git a/lib/backupstore/StoreTestUtils.cpp b/lib/backupstore/StoreTestUtils.cpp index b1c8e424..e173b8d1 100644 --- a/lib/backupstore/StoreTestUtils.cpp +++ b/lib/backupstore/StoreTestUtils.cpp @@ -87,9 +87,14 @@ bool setUp(const char* function_name) StopServer(); } - TEST_THAT_THROWONFAIL(system("rm -rf testfiles/0_0 testfiles/0_1 " - "testfiles/0_2 testfiles/accounts.txt testfiles/test* " - "testfiles/file*") == 0); + TEST_THAT_THROWONFAIL(system( + "rm -rf testfiles/TestDir* testfiles/0_0 testfiles/0_1 " + "testfiles/0_2 testfiles/accounts.txt " // testfiles/test* .tgz! + "testfiles/file* testfiles/notifyran testfiles/notifyran.* " + "testfiles/notifyscript.tag* " + "testfiles/restore* " + "testfiles/syncallowscript.control " + "testfiles/syncallowscript.notifyran.*") == 0); TEST_THAT_THROWONFAIL(mkdir("testfiles/0_0", 0755) == 0); TEST_THAT_THROWONFAIL(mkdir("testfiles/0_1", 0755) == 0); TEST_THAT_THROWONFAIL(mkdir("testfiles/0_2", 0755) == 0); @@ -102,11 +107,13 @@ bool setUp(const char* function_name) return true; } -void tearDown() +bool tearDown() { + bool status = true; + if (ServerIsAlive(bbstored_pid)) { - StopServer(); + TEST_THAT_OR(StopServer(), status = false); } if (FileExists("testfiles/0_0/backup/01234567/info.rf")) @@ -114,6 +121,14 @@ void tearDown() TEST_THAT(check_reference_counts()); TEST_THAT(check_account()); } + + return status; +} + +bool fail() +{ + TEST_THAT(tearDown()); + return false; } void set_refcount(int64_t ObjectID, uint32_t RefCount) @@ -143,21 +158,29 @@ std::auto_ptr<SocketStream> open_conn(const char *hostname, return static_cast<std::auto_ptr<SocketStream> >(conn); } -std::auto_ptr<BackupProtocolCallable> test_server_login(const char *hostname, - TLSContext& rContext, int flags) +std::auto_ptr<BackupProtocolCallable> connect_to_bbstored(TLSContext& rContext) { // Make a protocol std::auto_ptr<BackupProtocolCallable> protocol(new - BackupProtocolClient(open_conn(hostname, rContext))); + BackupProtocolClient(open_conn("localhost", rContext))); // Check the version std::auto_ptr<BackupProtocolVersion> serverVersion( protocol->QueryVersion(BACKUP_STORE_SERVER_VERSION)); TEST_THAT(serverVersion->GetVersion() == BACKUP_STORE_SERVER_VERSION); + return protocol; +} + +std::auto_ptr<BackupProtocolCallable> connect_and_login(TLSContext& rContext, + int flags) +{ + // Make a protocol + std::auto_ptr<BackupProtocolCallable> protocol = + connect_to_bbstored(rContext); + // Login - std::auto_ptr<BackupProtocolLoginConfirmed> loginConf( - protocol->QueryLogin(0x01234567, flags)); + protocol->QueryLogin(0x01234567, flags); return protocol; } @@ -203,6 +226,18 @@ bool check_num_blocks(BackupProtocolCallable& Client, int Current, int Old, Dirs == usage->GetBlocksInDirectories()); } +bool change_account_limits(const char* soft, const char* hard) +{ + std::string errs; + std::auto_ptr<Configuration> config( + Configuration::LoadAndVerify + ("testfiles/bbstored.conf", &BackupConfigFileVerify, errs)); + BackupStoreAccountsControl control(*config); + int result = control.SetLimit(0x01234567, soft, hard); + TEST_EQUAL(0, result); + return (result == 0); +} + int check_account_for_errors(Log::Level log_level) { Logger::LevelGuard guard(Logging::GetConsole(), log_level); @@ -296,31 +331,27 @@ bool check_reference_counts() bool StartServer() { - TEST_THAT_THROWONFAIL(bbstored_pid == 0); + TEST_THAT_OR(bbstored_pid == 0, return false); - std::string cmd = BBSTORED " " + bbstored_args + + std::string cmd = BBSTORED " " + bbstored_args + " testfiles/bbstored.conf"; bbstored_pid = LaunchServer(cmd.c_str(), "testfiles/bbstored.pid"); - TEST_THAT(bbstored_pid != -1 && bbstored_pid != 0); - if(bbstored_pid <= 0) - { - return false; - } + TEST_THAT_OR(bbstored_pid != -1 && bbstored_pid != 0, return false); ::sleep(1); - TEST_THAT_THROWONFAIL(ServerIsAlive(bbstored_pid)); + TEST_THAT_OR(ServerIsAlive(bbstored_pid), return false); return true; } bool StopServer(bool wait_for_process) { - TEST_THAT_THROWONFAIL(bbstored_pid != 0); - TEST_THAT_THROWONFAIL(ServerIsAlive(bbstored_pid)); - TEST_THAT_THROWONFAIL(KillServer(bbstored_pid, wait_for_process)); + TEST_THAT_OR(bbstored_pid != 0, return false); + TEST_THAT_OR(ServerIsAlive(bbstored_pid), return false); + TEST_THAT_OR(KillServer(bbstored_pid, wait_for_process), return false); ::sleep(1); - TEST_THAT_THROWONFAIL(!ServerIsAlive(bbstored_pid)); + TEST_THAT_OR(!ServerIsAlive(bbstored_pid), return false); bbstored_pid = 0; #ifdef WIN32 diff --git a/lib/backupstore/StoreTestUtils.h b/lib/backupstore/StoreTestUtils.h index 197a3345..2fc7ca64 100644 --- a/lib/backupstore/StoreTestUtils.h +++ b/lib/backupstore/StoreTestUtils.h @@ -30,7 +30,10 @@ extern int bbstored_pid; bool setUp(const char* function_name); //! Checks account for errors and shuts down daemons at end of every test. -void tearDown(); +bool tearDown(); + +//! Like tearDown() but returns false, because a test failure was detected. +bool fail(); //! Sets the expected refcount of an object, resizing vector if necessary. void set_refcount(int64_t ObjectID, uint32_t RefCount = 1); @@ -42,9 +45,12 @@ void init_context(TLSContext& rContext); std::auto_ptr<SocketStream> open_conn(const char *hostname, TLSContext& rContext); +//! Opens a connection to the server (bbstored) without logging in. +std::auto_ptr<BackupProtocolCallable> connect_to_bbstored(TLSContext& rContext); + //! Opens a connection to the server (bbstored) and logs in. -std::auto_ptr<BackupProtocolCallable> test_server_login(const char *hostname, - TLSContext& rContext, int flags = 0); +std::auto_ptr<BackupProtocolCallable> connect_and_login(TLSContext& rContext, + int flags = 0); //! Checks the number of files of each type in the store against expectations. bool check_num_files(int files, int old, int deleted, int dirs); @@ -53,6 +59,9 @@ bool check_num_files(int files, int old, int deleted, int dirs); bool check_num_blocks(BackupProtocolCallable& Client, int Current, int Old, int Deleted, int Dirs, int Total); +//! Change the soft and hard limits on the test account. +bool change_account_limits(const char* soft, const char* hard); + //! Checks an account for errors, returning the number of errors found and fixed. int check_account_for_errors(Log::Level log_level = Log::WARNING); |