[Box Backup-dev] COMMIT r711 - box/chris/general/test/bbackupd
boxbackup-dev at fluffy.co.uk
boxbackup-dev at fluffy.co.uk
Sat Aug 5 21:22:51 BST 2006
Author: chris
Date: 2006-08-05 20:22:45 +0000 (Sat, 05 Aug 2006)
New Revision: 711
Modified:
box/chris/general/test/bbackupd/testbbackupd.cpp
Log:
* testbbackupd.cpp
- Added tests that file exclusion is working properly
- Improved comments on existing exclusion tests
Modified: box/chris/general/test/bbackupd/testbbackupd.cpp
===================================================================
--- box/chris/general/test/bbackupd/testbbackupd.cpp 2006-07-27 23:18:35 UTC (rev 710)
+++ box/chris/general/test/bbackupd/testbbackupd.cpp 2006-08-05 20:22:45 UTC (rev 711)
@@ -47,6 +47,8 @@
#include "BoxTime.h"
#include "BoxTimeToUnix.h"
#include "ServerControl.h"
+#include "Configuration.h"
+#include "BackupDaemonConfigVerify.h"
#include "MemLeakFindOn.h"
@@ -575,6 +577,19 @@
return success;
}
+int64_t SearchDir(BackupStoreDirectory& rDir,
+ const std::string& rChildName)
+{
+ BackupStoreDirectory::Iterator i(rDir);
+ BackupStoreFilenameClear child(rChildName.c_str());
+ BackupStoreDirectory::Entry *en = i.FindMatchingClearName(child);
+ if (en == 0) return 0;
+ int64_t id = en->GetObjectID();
+ TEST_THAT(id > 0);
+ TEST_THAT(id != BackupProtocolClientListDirectory::RootDirectory);
+ return id;
+}
+
int test_bbackupd()
{
// // First, wait for a normal period to make sure the last changes attributes are within a normal backup timeframe.
@@ -845,15 +860,97 @@
wait_for_sync_end();
wait_for_sync_end();
- compareReturnValue = ::system(BBACKUPQUERY " -q -c testfiles/bbackupd.conf -l testfiles/query3c.log \"compare -ac\" quit");
+ // compare with exclusions, should not find differences
+ compareReturnValue = ::system(BBACKUPQUERY " -q "
+ "-c testfiles/bbackupd.conf -l testfiles/query3c.log "
+ "\"compare -ac\" quit");
TEST_RETURN(compareReturnValue, 1);
TestRemoteProcessMemLeaks("bbackupquery.memleaks");
- compareReturnValue = ::system(BBACKUPQUERY " -q -c testfiles/bbackupd.conf -l testfiles/query3d.log \"compare -acE\" quit");
- // should find differences
+ // compare without exclusions, should find differences
+ compareReturnValue = ::system(BBACKUPQUERY " -q "
+ "-c testfiles/bbackupd.conf -l testfiles/query3d.log "
+ "\"compare -acE\" quit");
TEST_RETURN(compareReturnValue, 2);
TestRemoteProcessMemLeaks("bbackupquery.memleaks");
+ // check that the excluded files did not make it
+ // into the store, and the included files did
+ printf("Check that exclude/alwaysinclude commands "
+ "actually work\n");
+
+ {
+ std::string errs;
+ std::auto_ptr<Configuration> config(
+ Configuration::LoadAndVerify(
+ "testfiles/bbackupd.conf",
+ &BackupDaemonConfigVerify, errs));
+ Configuration& conf(*config);
+ SSLLib::Initialise();
+ TLSContext tlsContext;
+ std::string certFile(conf.GetKeyValue("CertificateFile"));
+ std::string keyFile (conf.GetKeyValue("PrivateKeyFile"));
+ std::string caFile (conf.GetKeyValue("TrustedCAsFile"));
+ tlsContext.Initialise(false, certFile.c_str(),
+ keyFile.c_str(), caFile.c_str());
+ BackupClientCryptoKeys_Setup(
+ conf.GetKeyValue("KeysFile").c_str());
+ SocketStreamTLS socket;
+ socket.Open(tlsContext, Socket::TypeINET,
+ conf.GetKeyValue("StoreHostname").c_str(),
+ BOX_PORT_BBSTORED);
+ BackupProtocolClient connection(socket);
+ connection.Handshake();
+ std::auto_ptr<BackupProtocolClientVersion>
+ serverVersion(connection.QueryVersion(
+ BACKUP_STORE_SERVER_VERSION));
+ if(serverVersion->GetVersion() !=
+ BACKUP_STORE_SERVER_VERSION)
+ {
+ THROW_EXCEPTION(BackupStoreException,
+ WrongServerVersion);
+ }
+ connection.QueryLogin(
+ conf.GetKeyValueInt("AccountNumber"),
+ BackupProtocolClientLogin::Flags_ReadOnly);
+
+ int64_t rootDirId = BackupProtocolClientListDirectory
+ ::RootDirectory;
+ std::auto_ptr<BackupProtocolClientSuccess> dirreply(
+ connection.QueryListDirectory(
+ rootDirId, false, 0, false));
+ std::auto_ptr<IOStream> dirstream(
+ connection.ReceiveStream());
+ BackupStoreDirectory dir;
+ dir.ReadFromStream(*dirstream, connection.GetTimeout());
+
+ int64_t testDirId = SearchDir(dir, "Test1");
+ TEST_THAT(testDirId != 0);
+ dirreply = connection.QueryListDirectory(testDirId, false, 0, false);
+ dirstream = connection.ReceiveStream();
+ dir.ReadFromStream(*dirstream, connection.GetTimeout());
+
+ TEST_THAT(!SearchDir(dir, "excluded_1"));
+ TEST_THAT(!SearchDir(dir, "excluded_2"));
+ TEST_THAT(!SearchDir(dir, "exclude_dir"));
+ TEST_THAT(!SearchDir(dir, "exclude_dir_2"));
+ // xx_not_this_dir_22 should not be excluded by
+ // ExcludeDirsRegex, because it's a file
+ TEST_THAT(SearchDir (dir, "xx_not_this_dir_22"));
+ TEST_THAT(!SearchDir(dir, "zEXCLUDEu"));
+ TEST_THAT(SearchDir (dir, "dont.excludethis"));
+ TEST_THAT(SearchDir (dir, "xx_not_this_dir_ALWAYSINCLUDE"));
+
+ int64_t sub23id = SearchDir(dir, "sub23");
+ TEST_THAT(sub23id != 0);
+ dirreply = connection.QueryListDirectory(sub23id, false, 0, false);
+ dirstream = connection.ReceiveStream();
+ dir.ReadFromStream(*dirstream, connection.GetTimeout());
+ TEST_THAT(!SearchDir(dir, "xx_not_this_dir_22"));
+ TEST_THAT(!SearchDir(dir, "somefile.excludethis"));
+ connection.QueryFinished();
+ }
+
#ifndef WIN32
// These tests only work as non-root users.
if(::getuid() != 0)
More information about the Boxbackup-dev
mailing list