From 0e3ed7e8c48d00e18f9bff183201772aecb7c606 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sat, 1 Mar 2008 22:50:02 +0000 Subject: 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. --- test/bbackupd/testbbackupd.cpp | 138 ++++++++++++++++++++++++----------------- 1 file changed, 82 insertions(+), 56 deletions(-) (limited to 'test/bbackupd') 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 Connect(TLSContext& rContext, int flags) +std::auto_ptr Connect(TLSContext& rContext) { sSocket.Open(rContext, Socket::TypeINET, "localhost", BOX_PORT_BBSTORED); @@ -619,10 +619,17 @@ std::auto_ptr Connect(TLSContext& rContext, int flags) THROW_EXCEPTION(BackupStoreException, WrongServerVersion); } - connection->QueryLogin(0x01234567, flags); return connection; } +std::auto_ptr ConnectAndLogin(TLSContext& rContext, + int flags) +{ + std::auto_ptr connection(Connect(rContext)); + connection->QueryLogin(0x01234567, flags); + return connection; +} + std::auto_ptr ReadDirectory ( BackupProtocolClient& rClient, @@ -1249,23 +1256,27 @@ int test_bbackupd() printf("\n==== Testing that redundant locations are deleted on time\n"); { - std::auto_ptr client = Connect( - context, - BackupProtocolClientLogin::Flags_ReadOnly); - - std::auto_ptr dir = ReadDirectory( - *client, - BackupProtocolClientListDirectory::RootDirectory); + { + std::auto_ptr client = + ConnectAndLogin(context, + BackupProtocolClientLogin::Flags_ReadOnly); + + std::auto_ptr 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 client = + ConnectAndLogin(context, + BackupProtocolClientLogin::Flags_ReadOnly); + + std::auto_ptr 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 client = + ConnectAndLogin(context, + BackupProtocolClientLogin::Flags_ReadOnly); + + std::auto_ptr 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 client = - Connect(context, 0); + ConnectAndLogin(context, 0); std::auto_ptr 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 client = Connect( - context, + std::auto_ptr client = + ConnectAndLogin(context, BackupProtocolClientLogin::Flags_ReadOnly); std::auto_ptr dir = ReadDirectory( @@ -2508,8 +2534,8 @@ int test_bbackupd() int64_t restoredirid = 0; { // connect and log in - std::auto_ptr client = Connect( - context, + std::auto_ptr 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 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 + protocol = Connect(context); + // Make sure the marker isn't zero, + // because that's the default, and + // it should have changed + std::auto_ptr 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 client = Connect( - context, + std::auto_ptr 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 client = Connect( - context, 0 /* read-write */); + std::auto_ptr client = + ConnectAndLogin(context, 0 /* read-write */); // Do restore and undelete TEST_THAT(BackupClientRestore(*client, deldirid, -- cgit v1.2.3