[Box Backup-commit] COMMIT r1581 - box/chris/merge/test/bbackupd
boxbackup-dev at fluffy.co.uk
boxbackup-dev at fluffy.co.uk
Sun Apr 22 22:43:59 BST 2007
Author: chris
Date: 2007-04-22 22:43:59 +0100 (Sun, 22 Apr 2007)
New Revision: 1581
Modified:
box/chris/merge/test/bbackupd/testbbackupd.cpp
Log:
Check that Exclude and AlwaysInclude configurations actually work as
they should. (refs #3, merges [711])
Modified: box/chris/merge/test/bbackupd/testbbackupd.cpp
===================================================================
--- box/chris/merge/test/bbackupd/testbbackupd.cpp 2007-04-22 21:19:51 UTC (rev 1580)
+++ box/chris/merge/test/bbackupd/testbbackupd.cpp 2007-04-22 21:43:59 UTC (rev 1581)
@@ -1879,6 +1879,93 @@
TEST_RETURN(compareReturnValue, 2);
TestRemoteProcessMemLeaks("bbackupquery.memleaks");
+ TEST_THAT(ServerIsAlive(bbackupd_pid));
+ TEST_THAT(ServerIsAlive(bbstored_pid));
+ if (!ServerIsAlive(bbackupd_pid)) return 1;
+ if (!ServerIsAlive(bbstored_pid)) return 1;
+
+ // check that the excluded files did not make it
+ // into the store, and the included files did
+ printf("\n==== 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();
+ }
+
+ TEST_THAT(ServerIsAlive(bbackupd_pid));
+ TEST_THAT(ServerIsAlive(bbstored_pid));
+ if (!ServerIsAlive(bbackupd_pid)) return 1;
+ if (!ServerIsAlive(bbstored_pid)) return 1;
+
#ifndef WIN32
// These tests only work as non-root users.
if(::getuid() != 0)
More information about the Boxbackup-commit
mailing list