[Box Backup-commit] COMMIT r1987 - in box/chris/general/test/bbackupd: . testfiles
boxbackup-dev at fluffy.co.uk
boxbackup-dev at fluffy.co.uk
Sun Dec 9 01:44:44 GMT 2007
Author: chris
Date: 2007-12-09 01:44:44 +0000 (Sun, 09 Dec 2007)
New Revision: 1987
Added:
box/chris/general/test/bbackupd/testfiles/bbackupd-temploc.conf
Modified:
box/chris/general/test/bbackupd/testbbackupd.cpp
box/chris/general/test/bbackupd/testfiles/bbackupd.conf.in
Log:
Test that redundant locations are really deleted after the time
expires. (merges [1867])
Modified: box/chris/general/test/bbackupd/testbbackupd.cpp
===================================================================
--- box/chris/general/test/bbackupd/testbbackupd.cpp 2007-12-09 01:39:11 UTC (rev 1986)
+++ box/chris/general/test/bbackupd/testbbackupd.cpp 2007-12-09 01:44:44 UTC (rev 1987)
@@ -598,6 +598,42 @@
TEST_THAT(id != BackupProtocolClientListDirectory::RootDirectory);
return id;
}
+
+SocketStreamTLS sSocket;
+
+std::auto_ptr<BackupProtocolClient> Connect(TLSContext& rContext, int flags)
+{
+ sSocket.Open(rContext, Socket::TypeINET,
+ "localhost", BOX_PORT_BBSTORED);
+ std::auto_ptr<BackupProtocolClient> connection;
+ connection.reset(new BackupProtocolClient(sSocket));
+ 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(0x01234567, flags);
+ return connection;
+}
+
+std::auto_ptr<BackupStoreDirectory> ReadDirectory
+(
+ BackupProtocolClient& rClient,
+ int64_t id
+)
+{
+ std::auto_ptr<BackupProtocolClientSuccess> dirreply(
+ rClient.QueryListDirectory(id, false, 0, false));
+ std::auto_ptr<IOStream> dirstream(rClient.ReceiveStream());
+ std::auto_ptr<BackupStoreDirectory> apDir(new BackupStoreDirectory());
+ apDir->ReadFromStream(*dirstream, rClient.GetTimeout());
+ return apDir;
+}
int start_internal_daemon()
{
@@ -1526,40 +1562,25 @@
// Check that we can find it in directory listing
{
- SocketStreamTLS conn;
- conn.Open(context, Socket::TypeINET, "localhost",
- BOX_PORT_BBSTORED);
- BackupProtocolClient protocol(conn);
- protocol.QueryVersion(BACKUP_STORE_SERVER_VERSION);
- protocol.QueryLogin(0x01234567, 0);
+ std::auto_ptr<BackupProtocolClient> client =
+ Connect(context, 0);
- int64_t rootDirId = BackupProtocolClientListDirectory
- ::RootDirectory;
- std::auto_ptr<BackupProtocolClientSuccess> dirreply(
- protocol.QueryListDirectory(
- rootDirId, false, 0, false));
- std::auto_ptr<IOStream> dirstream(
- protocol.ReceiveStream());
- BackupStoreDirectory dir;
- dir.ReadFromStream(*dirstream, protocol.GetTimeout());
+ std::auto_ptr<BackupStoreDirectory> dir = ReadDirectory(
+ *client,
+ BackupProtocolClientListDirectory::RootDirectory);
- int64_t baseDirId = SearchDir(dir, "Test1");
+ int64_t baseDirId = SearchDir(*dir, "Test1");
TEST_THAT(baseDirId != 0);
- dirreply = protocol.QueryListDirectory(baseDirId,
- false, 0, false);
- dirstream = protocol.ReceiveStream();
- dir.ReadFromStream(*dirstream, protocol.GetTimeout());
+ dir = ReadDirectory(*client, baseDirId);
int64_t testDirId = SearchDir(dir, dirname.c_str());
TEST_THAT(testDirId != 0);
- dirreply = protocol.QueryListDirectory(testDirId,
- false, 0, false);
- dirstream = protocol.ReceiveStream();
- dir.ReadFromStream(*dirstream, protocol.GetTimeout());
+ dir = ReadDirectory(*client, testDirId);
TEST_THAT(SearchDir(dir, filename.c_str()) != 0);
// Log out
- protocol.QueryFinished();
+ client->QueryFinished();
+ sSocket.Close();
}
@@ -2310,75 +2331,37 @@
"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"),
+ std::auto_ptr<BackupProtocolClient> client = Connect(
+ context,
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());
+ std::auto_ptr<BackupStoreDirectory> dir = ReadDirectory(
+ *client,
+ BackupProtocolClientListDirectory::RootDirectory);
- int64_t testDirId = SearchDir(dir, "Test1");
+ 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"));
+ dir = ReadDirectory(*client, testDirId);
+
+ 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"));
+ 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");
+ 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();
+ dir = ReadDirectory(*client, sub23id);
+
+ TEST_THAT(!SearchDir(*dir, "xx_not_this_dir_22"));
+ TEST_THAT(!SearchDir(*dir, "somefile.excludethis"));
+ client->QueryFinished();
+ sSocket.Close();
}
TEST_THAT(ServerIsAlive(bbackupd_pid));
@@ -2521,22 +2504,17 @@
int64_t restoredirid = 0;
{
// connect and log in
- 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,
- BackupProtocolClientLogin::Flags_ReadOnly));
+ std::auto_ptr<BackupProtocolClient> client = Connect(
+ context,
+ BackupProtocolClientLogin::Flags_ReadOnly);
// Find the ID of the Test1 directory
- restoredirid = GetDirID(protocol, "Test1",
+ restoredirid = GetDirID(*client, "Test1",
BackupProtocolClientListDirectory::RootDirectory);
TEST_THAT(restoredirid != 0);
// Test the restoration
- TEST_THAT(BackupClientRestore(protocol, restoredirid,
+ TEST_THAT(BackupClientRestore(*client, restoredirid,
"testfiles/restore-Test1",
true /* print progress dots */)
== Restore_Complete);
@@ -2545,32 +2523,33 @@
// to the server, so we'll compare later.
// Make sure you can't restore a restored directory
- TEST_THAT(BackupClientRestore(protocol, restoredirid,
+ TEST_THAT(BackupClientRestore(*client, restoredirid,
"testfiles/restore-Test1",
true /* print progress dots */)
== Restore_TargetExists);
// Make sure you can't restore to a nonexistant path
printf("Try to restore to a path that doesn't exist\n");
- TEST_THAT(BackupClientRestore(protocol, restoredirid,
+ TEST_THAT(BackupClientRestore(*client, restoredirid,
"testfiles/no-such-path/subdir",
true /* print progress dots */)
== Restore_TargetPathNotFound);
// Find ID of the deleted directory
- deldirid = GetDirID(protocol, "x1", restoredirid);
+ deldirid = GetDirID(*client, "x1", restoredirid);
TEST_THAT(deldirid != 0);
// Just check it doesn't bomb out -- will check this
// properly later (when bbackupd is stopped)
- TEST_THAT(BackupClientRestore(protocol, deldirid,
+ TEST_THAT(BackupClientRestore(*client, deldirid,
"testfiles/restore-Test1-x1",
true /* print progress dots */,
true /* deleted files */)
== Restore_Complete);
// Log out
- protocol.QueryFinished();
+ client->QueryFinished();
+ sSocket.Close();
}
// Compare the restored files
@@ -2877,24 +2856,19 @@
printf("\n==== Resume restore\n");
- 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 */));
+ std::auto_ptr<BackupProtocolClient> client = Connect(
+ context,
+ BackupProtocolClientLogin::Flags_ReadOnly);
// Check that the restore fn returns resume possible,
// rather than doing anything
- TEST_THAT(BackupClientRestore(protocol, restoredirid,
+ TEST_THAT(BackupClientRestore(*client, restoredirid,
"testfiles/restore-interrupt",
true /* print progress dots */)
== Restore_ResumePossible);
// Then resume it
- TEST_THAT(BackupClientRestore(protocol, restoredirid,
+ TEST_THAT(BackupClientRestore(*client, restoredirid,
"testfiles/restore-interrupt",
true /* print progress dots */,
false /* deleted files */,
@@ -2902,7 +2876,8 @@
true /* resume */)
== Restore_Complete);
- protocol.QueryFinished();
+ client->QueryFinished();
+ sSocket.Close();
// Then check it has restored the correct stuff
compareReturnValue = ::system(BBACKUPQUERY " -q "
@@ -2923,24 +2898,19 @@
printf("\n==== Check restore deleted files\n");
{
- 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 */));
+ std::auto_ptr<BackupProtocolClient> client = Connect(
+ context, 0 /* read-write */);
// Do restore and undelete
- TEST_THAT(BackupClientRestore(protocol, deldirid,
+ TEST_THAT(BackupClientRestore(*client, deldirid,
"testfiles/restore-Test1-x1-2",
true /* print progress dots */,
true /* deleted files */,
true /* undelete on server */)
== Restore_Complete);
- protocol.QueryFinished();
+ client->QueryFinished();
+ sSocket.Close();
// Do a compare with the now undeleted files
compareReturnValue = ::system(BBACKUPQUERY " -q "
Copied: box/chris/general/test/bbackupd/testfiles/bbackupd-temploc.conf (from rev 1867, box/trunk/test/bbackupd/testfiles/bbackupd-temploc.conf)
===================================================================
--- box/chris/general/test/bbackupd/testfiles/bbackupd-temploc.conf (rev 0)
+++ box/chris/general/test/bbackupd/testfiles/bbackupd-temploc.conf 2007-12-09 01:44:44 UTC (rev 1987)
@@ -0,0 +1,54 @@
+
+CertificateFile = testfiles/clientCerts.pem
+PrivateKeyFile = testfiles/clientPrivKey.pem
+TrustedCAsFile = testfiles/clientTrustedCAs.pem
+
+KeysFile = testfiles/bbackupd.keys
+
+DataDirectory = testfiles/bbackupd-data
+
+StoreHostname = localhost
+AccountNumber = 0x01234567
+
+UpdateStoreInterval = 3
+MinimumFileAge = 4
+MaxUploadWait = 24
+
+FileTrackingSizeThreshold = 1024
+DiffingUploadSizeThreshold = 1024
+
+MaximumDiffingTime = 3
+KeepAliveTime = 1
+
+ExtendedLogging = no
+ExtendedLogFile = testfiles/bbackupd.log
+
+CommandSocket = testfiles/bbackupd.sock
+
+Server
+{
+ PidFile = testfiles/bbackupd.pid
+}
+
+BackupLocations
+{
+ Test1
+ {
+ Path = testfiles/TestDir1
+
+ ExcludeFile = testfiles/TestDir1/excluded_1
+ ExcludeFile = testfiles/TestDir1/excluded_2
+ ExcludeFilesRegex = \.excludethis$
+ ExcludeFilesRegex = EXCLUDE
+ AlwaysIncludeFile = testfiles/TestDir1/dont.excludethis
+ ExcludeDir = testfiles/TestDir1/exclude_dir
+ ExcludeDir = testfiles/TestDir1/exclude_dir_2
+ ExcludeDirsRegex = not_this_dir
+ AlwaysIncludeDirsRegex = ALWAYSINCLUDE
+ }
+ Test2
+ {
+ Path = testfiles/TestDir1
+ }
+}
+
Modified: box/chris/general/test/bbackupd/testfiles/bbackupd.conf.in
===================================================================
--- box/chris/general/test/bbackupd/testfiles/bbackupd.conf.in 2007-12-09 01:39:11 UTC (rev 1986)
+++ box/chris/general/test/bbackupd/testfiles/bbackupd.conf.in 2007-12-09 01:44:44 UTC (rev 1987)
@@ -13,6 +13,7 @@
UpdateStoreInterval = 3
MinimumFileAge = 4
MaxUploadWait = 24
+DeleteRedundantLocationsAfter = 10
FileTrackingSizeThreshold = 1024
DiffingUploadSizeThreshold = 1024
More information about the Boxbackup-commit
mailing list