diff options
author | Chris Wilson <chris+github@qwirx.com> | 2008-03-01 22:50:02 +0000 |
---|---|---|
committer | Chris Wilson <chris+github@qwirx.com> | 2008-03-01 22:50:02 +0000 |
commit | 0e3ed7e8c48d00e18f9bff183201772aecb7c606 (patch) | |
tree | 3ddd809b707a94fd9fa96318ac1bc7d37af471f8 | |
parent | 5131b1ecc84eae0e091617cf6fa6c3f5154b9f5f (diff) |
Fix multiple connections to server (not supported on Windows) in test
that redundant locations are deleted on time.
Commonise some more login code to simplify tests.
-rw-r--r-- | test/bbackupd/testbbackupd.cpp | 138 |
1 files changed, 82 insertions, 56 deletions
diff --git a/test/bbackupd/testbbackupd.cpp b/test/bbackupd/testbbackupd.cpp index 830f1dde..d9109d1f 100644 --- a/test/bbackupd/testbbackupd.cpp +++ b/test/bbackupd/testbbackupd.cpp @@ -603,7 +603,7 @@ int64_t SearchDir(BackupStoreDirectory& rDir, SocketStreamTLS sSocket; -std::auto_ptr<BackupProtocolClient> Connect(TLSContext& rContext, int flags) +std::auto_ptr<BackupProtocolClient> Connect(TLSContext& rContext) { sSocket.Open(rContext, Socket::TypeINET, "localhost", BOX_PORT_BBSTORED); @@ -619,10 +619,17 @@ std::auto_ptr<BackupProtocolClient> Connect(TLSContext& rContext, int flags) THROW_EXCEPTION(BackupStoreException, WrongServerVersion); } - connection->QueryLogin(0x01234567, flags); return connection; } +std::auto_ptr<BackupProtocolClient> ConnectAndLogin(TLSContext& rContext, + int flags) +{ + std::auto_ptr<BackupProtocolClient> connection(Connect(rContext)); + connection->QueryLogin(0x01234567, flags); + return connection; +} + std::auto_ptr<BackupStoreDirectory> ReadDirectory ( BackupProtocolClient& rClient, @@ -1249,23 +1256,27 @@ int test_bbackupd() printf("\n==== Testing that redundant locations are deleted on time\n"); { - std::auto_ptr<BackupProtocolClient> client = Connect( - context, - BackupProtocolClientLogin::Flags_ReadOnly); - - std::auto_ptr<BackupStoreDirectory> dir = ReadDirectory( - *client, - BackupProtocolClientListDirectory::RootDirectory); + { + std::auto_ptr<BackupProtocolClient> client = + ConnectAndLogin(context, + BackupProtocolClientLogin::Flags_ReadOnly); + + std::auto_ptr<BackupStoreDirectory> dir = + ReadDirectory(*client, + BackupProtocolClientListDirectory::RootDirectory); - // int64_t testDirId = SearchDir(*dir, "Test2"); - // TEST_THAT(testDirId == 0); + // int64_t testDirId = SearchDir(*dir, "Test2"); + // TEST_THAT(testDirId == 0); - sync_and_wait(); + sync_and_wait(); - dir = ReadDirectory(*client, - BackupProtocolClientListDirectory::RootDirectory); - int64_t testDirId = SearchDir(*dir, "Test2"); - TEST_THAT(testDirId != 0); + dir = ReadDirectory(*client, + BackupProtocolClientListDirectory::RootDirectory); + int64_t testDirId = SearchDir(*dir, "Test2"); + TEST_THAT(testDirId != 0); + client->QueryFinished(); + sSocket.Close(); + } // Kill the daemon terminate_bbackupd(bbackupd_pid); @@ -1288,28 +1299,43 @@ int test_bbackupd() wait_for_sync_end(); wait_for_sync_end(); - dir = ReadDirectory(*client, - BackupProtocolClientListDirectory::RootDirectory); - testDirId = SearchDir(*dir, "Test2"); - TEST_THAT(testDirId != 0); + { + std::auto_ptr<BackupProtocolClient> client = + ConnectAndLogin(context, + BackupProtocolClientLogin::Flags_ReadOnly); + + std::auto_ptr<BackupStoreDirectory> dir = + ReadDirectory(*client, + BackupProtocolClientListDirectory::RootDirectory); + int64_t testDirId = SearchDir(*dir, "Test2"); + TEST_THAT(testDirId != 0); + client->QueryFinished(); + sSocket.Close(); + } wait_for_sync_end(); - - dir = ReadDirectory(*client, - BackupProtocolClientListDirectory::RootDirectory); - testDirId = SearchDir(*dir, "Test2"); - TEST_THAT(testDirId != 0); - - BackupStoreDirectory::Iterator i(*dir); - BackupStoreFilenameClear dirname("Test2"); - BackupStoreDirectory::Entry *en = i.FindMatchingClearName(dirname); - TEST_THAT(en != 0); - int16_t en_flags = en->GetFlags(); - TEST_THAT(en_flags && BackupStoreDirectory::Entry::Flags_Deleted); - - // Log out. - client->QueryFinished(); - sSocket.Close(); + + { + std::auto_ptr<BackupProtocolClient> client = + ConnectAndLogin(context, + BackupProtocolClientLogin::Flags_ReadOnly); + + std::auto_ptr<BackupStoreDirectory> dir = + ReadDirectory(*client, + BackupProtocolClientListDirectory::RootDirectory); + int64_t testDirId = SearchDir(*dir, "Test2"); + TEST_THAT(testDirId != 0); + + BackupStoreDirectory::Iterator i(*dir); + BackupStoreFilenameClear dirname("Test2"); + BackupStoreDirectory::Entry *en = + i.FindMatchingClearName(dirname); + TEST_THAT(en != 0); + int16_t en_flags = en->GetFlags(); + TEST_THAT(en_flags && BackupStoreDirectory::Entry::Flags_Deleted); + client->QueryFinished(); + sSocket.Close(); + } } TEST_THAT(ServerIsAlive(bbackupd_pid)); @@ -1567,7 +1593,7 @@ int test_bbackupd() // Check that we can find it in directory listing { std::auto_ptr<BackupProtocolClient> client = - Connect(context, 0); + ConnectAndLogin(context, 0); std::auto_ptr<BackupStoreDirectory> dir = ReadDirectory( *client, @@ -1577,11 +1603,11 @@ int test_bbackupd() TEST_THAT(baseDirId != 0); dir = ReadDirectory(*client, baseDirId); - int64_t testDirId = SearchDir(dir, dirname.c_str()); + int64_t testDirId = SearchDir(*dir, dirname.c_str()); TEST_THAT(testDirId != 0); dir = ReadDirectory(*client, testDirId); - TEST_THAT(SearchDir(dir, filename.c_str()) != 0); + TEST_THAT(SearchDir(*dir, filename.c_str()) != 0); // Log out client->QueryFinished(); sSocket.Close(); @@ -2335,8 +2361,8 @@ int test_bbackupd() "actually work\n"); { - std::auto_ptr<BackupProtocolClient> client = Connect( - context, + std::auto_ptr<BackupProtocolClient> client = + ConnectAndLogin(context, BackupProtocolClientLogin::Flags_ReadOnly); std::auto_ptr<BackupStoreDirectory> dir = ReadDirectory( @@ -2508,8 +2534,8 @@ int test_bbackupd() int64_t restoredirid = 0; { // connect and log in - std::auto_ptr<BackupProtocolClient> client = Connect( - context, + std::auto_ptr<BackupProtocolClient> client = + ConnectAndLogin(context, BackupProtocolClientLogin::Flags_ReadOnly); // Find the ID of the Test1 directory @@ -2781,23 +2807,23 @@ int test_bbackupd() { try { - SocketStreamTLS conn; - conn.Open(context, Socket::TypeINET, - "localhost", BOX_PORT_BBSTORED); - BackupProtocolClient protocol(conn); - protocol.QueryVersion(BACKUP_STORE_SERVER_VERSION); - std::auto_ptr<BackupProtocolClientLoginConfirmed> loginConf(protocol.QueryLogin(0x01234567, 0)); // read-write - // Make sure the marker isn't zero, because that's the default, and it should have changed + std::auto_ptr<BackupProtocolClient> + protocol = Connect(context); + // Make sure the marker isn't zero, + // because that's the default, and + // it should have changed + std::auto_ptr<BackupProtocolClientLoginConfirmed> loginConf(protocol->QueryLogin(0x01234567, 0)); TEST_THAT(loginConf->GetClientStoreMarker() != 0); // Change it to something else - protocol.QuerySetClientStoreMarker(12); + protocol->QuerySetClientStoreMarker(12); // Success! done = true; // Log out - protocol.QueryFinished(); + protocol->QueryFinished(); + sSocket.Close(); } catch(...) { @@ -2860,8 +2886,8 @@ int test_bbackupd() printf("\n==== Resume restore\n"); - std::auto_ptr<BackupProtocolClient> client = Connect( - context, + std::auto_ptr<BackupProtocolClient> client = + ConnectAndLogin(context, BackupProtocolClientLogin::Flags_ReadOnly); // Check that the restore fn returns resume possible, @@ -2902,8 +2928,8 @@ int test_bbackupd() printf("\n==== Check restore deleted files\n"); { - std::auto_ptr<BackupProtocolClient> client = Connect( - context, 0 /* read-write */); + std::auto_ptr<BackupProtocolClient> client = + ConnectAndLogin(context, 0 /* read-write */); // Do restore and undelete TEST_THAT(BackupClientRestore(*client, deldirid, |