[Box Backup-commit] COMMIT r3205 - in box/trunk: lib/backupstore test/backupstorefix
subversion at boxbackup.org
subversion at boxbackup.org
Fri Feb 7 15:44:21 GMT 2014
Author: chris
Date: 2014-02-07 15:44:21 +0000 (Fri, 07 Feb 2014)
New Revision: 3205
Added:
box/trunk/lib/backupstore/BackupProtocol.h
Modified:
box/trunk/test/backupstorefix/testbackupstorefix.cpp
Log:
Add a BackupProtocolLocal2 convenience class.
Adds a nicer constructor and more helpful cleanup on QueryFinished()
to the auto-generated BackupProtocolLocal.
Added: box/trunk/lib/backupstore/BackupProtocol.h
===================================================================
--- box/trunk/lib/backupstore/BackupProtocol.h (rev 0)
+++ box/trunk/lib/backupstore/BackupProtocol.h 2014-02-07 15:44:21 UTC (rev 3205)
@@ -0,0 +1,57 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: BackupProtocol.h
+// Purpose: A thin wrapper around autogen_BackupProtocol.h
+// Created: 2014/01/05
+//
+// --------------------------------------------------------------------------
+
+#ifndef BACKUPPROTOCOL__H
+#define BACKUPPROTOCOL__H
+
+#include <autogen_BackupProtocol.h>
+#include <BackupStoreConstants.h>
+#include <BackupStoreContext.h>
+
+// --------------------------------------------------------------------------
+//
+// Class
+// Name: BackupProtocolLocal2
+// Purpose: BackupProtocolLocal with a few more IQ points
+// Created: 2003/08/21
+//
+// --------------------------------------------------------------------------
+class BackupProtocolLocal2 : public BackupProtocolLocal
+{
+private:
+ BackupStoreContext mContext;
+
+public:
+ BackupProtocolLocal2(int32_t AccountNumber,
+ const std::string& ConnectionDetails,
+ const std::string& AccountRootDir, int DiscSetNumber,
+ bool ReadOnly)
+ // This is rather ugly: the BackupProtocolLocal constructor must not
+ // touch the Context, because it's not initialised yet!
+ : BackupProtocolLocal(mContext),
+ mContext(AccountNumber, *(HousekeepingInterface *)NULL,
+ ConnectionDetails)
+ {
+ mContext.SetClientHasAccount(AccountRootDir, DiscSetNumber);
+ QueryVersion(BACKUP_STORE_SERVER_VERSION);
+ QueryLogin(0x01234567,
+ ReadOnly ? BackupProtocolLogin::Flags_ReadOnly : 0);
+ }
+ virtual ~BackupProtocolLocal2() { }
+
+ std::auto_ptr<BackupProtocolFinished> Query(const BackupProtocolFinished &rQuery)
+ {
+ std::auto_ptr<BackupProtocolFinished> finished =
+ BackupProtocolLocal::Query(rQuery);
+ mContext.ReleaseWriteLock();
+ return finished;
+ }
+};
+
+#endif // BACKUPPROTOCOL__H
Modified: box/trunk/test/backupstorefix/testbackupstorefix.cpp
===================================================================
--- box/trunk/test/backupstorefix/testbackupstorefix.cpp 2014-02-07 15:44:13 UTC (rev 3204)
+++ box/trunk/test/backupstorefix/testbackupstorefix.cpp 2014-02-07 15:44:21 UTC (rev 3205)
@@ -18,6 +18,7 @@
#include "Test.h"
#include "BackupClientCryptoKeys.h"
+#include "BackupProtocol.h"
#include "BackupStoreCheck.h"
#include "BackupStoreConstants.h"
#include "BackupStoreContext.h"
@@ -66,7 +67,7 @@
*/
-std::string storeRoot("backup/01234567/");
+std::string accountRootDir("backup/01234567/");
int discSetNum = 0;
std::map<std::string, int32_t> nameToID;
@@ -78,7 +79,7 @@
bool check_fix_internal(int expected_num_errors)
{
- BackupStoreCheck checker(storeRoot, discSetNum,
+ BackupStoreCheck checker(accountRootDir, discSetNum,
0x01234567, true /* FixErrors */, false /* Quiet */);
checker.Check();
if (expected_num_errors == -1)
@@ -110,7 +111,7 @@
std::string getObjectName(int32_t id)
{
std::string fn;
- StoreStructure::MakeObjectFilename(id, storeRoot, discSetNum, fn, false);
+ StoreStructure::MakeObjectFilename(id, accountRootDir, discSetNum, fn, false);
return fn;
}
@@ -378,7 +379,7 @@
void read_bb_dir(int64_t objectId, BackupStoreDirectory& dir)
{
std::string fn;
- StoreStructure::MakeObjectFilename(1 /* root */, storeRoot,
+ StoreStructure::MakeObjectFilename(1 /* root */, accountRootDir,
discSetNum, fn, true /* EnsureDirectoryExists */);
std::auto_ptr<RaidFileRead> file(RaidFileRead::Open(discSetNum,
@@ -397,9 +398,6 @@
static checkdepinfoen start_deps[] = {{-1, 0, 0}};
check_dir_dep(dir, start_deps);
- client.QueryVersion(BACKUP_STORE_SERVER_VERSION);
- client.QueryLogin(0x01234567, 0 /* read/write */);
-
read_bb_dir(1 /* root */, dir);
// Everything should be OK at the moment
@@ -470,11 +468,8 @@
"exist is really deleted");
{
- BackupStoreContext ctx(0x01234567,
- *(HousekeepingInterface *)NULL,
- "test" /* rConnectionDetails */);
- ctx.SetClientHasAccount(storeRoot, discSetNum);
- BackupProtocolLocal client(ctx);
+ BackupProtocolLocal2 client(0x01234567, "test", accountRootDir,
+ discSetNum, false);
login_client_and_check_empty(client);
std::string file_path = "testfiles/TestDir1/cannes/ict/metegoguered/oats";
@@ -483,7 +478,7 @@
// Now break the reverse dependency by deleting x1 (the file,
// not the directory entry)
std::string x1FileName;
- StoreStructure::MakeObjectFilename(x1id, storeRoot, discSetNum,
+ StoreStructure::MakeObjectFilename(x1id, accountRootDir, discSetNum,
x1FileName, true /* EnsureDirectoryExists */);
RaidFileWrite deleteX1(discSetNum, x1FileName);
deleteX1.Delete();
@@ -497,11 +492,8 @@
"exist is really deleted");
{
- BackupStoreContext ctx(0x01234567,
- *(HousekeepingInterface *)NULL,
- "test" /* rConnectionDetails */);
- ctx.SetClientHasAccount(storeRoot, discSetNum);
- BackupProtocolLocal client(ctx);
+ BackupProtocolLocal2 client(0x01234567, "test", accountRootDir,
+ discSetNum, false);
login_client_and_check_empty(client);
std::string file_path = "testfiles/TestDir1/cannes/ict/metegoguered/oats";
@@ -530,7 +522,7 @@
// Now break the reverse dependency by deleting x1a (the file,
// not the directory entry)
std::string x1aFileName;
- StoreStructure::MakeObjectFilename(x1aid, storeRoot, discSetNum,
+ StoreStructure::MakeObjectFilename(x1aid, accountRootDir, discSetNum,
x1aFileName, true /* EnsureDirectoryExists */);
RaidFileWrite deleteX1a(discSetNum, x1aFileName);
deleteX1a.Delete();
@@ -590,7 +582,7 @@
BackupStoreDirectory::Entry::Flags_File, 2);
std::string fn;
- StoreStructure::MakeObjectFilename(1 /* root */, storeRoot,
+ StoreStructure::MakeObjectFilename(1 /* root */, accountRootDir,
discSetNum, fn, true /* EnsureDirectoryExists */);
std::auto_ptr<RaidFileRead> file(RaidFileRead::Open(discSetNum,
@@ -604,7 +596,7 @@
TEST_THAT(dir.FindEntryByID(0x1234567890123456LL) != 0);
// Check it
- BackupStoreCheck checker(storeRoot, discSetNum,
+ BackupStoreCheck checker(accountRootDir, discSetNum,
0x01234567, true /* FixErrors */, false /* Quiet */);
checker.Check();
@@ -651,13 +643,13 @@
BOX_INFO(" === Delete store info, add random file");
{
// Delete store info
- RaidFileWrite del(discSetNum, storeRoot + "info");
+ RaidFileWrite del(discSetNum, accountRootDir + "info");
del.Delete();
}
{
// Add a spurious file
RaidFileWrite random(discSetNum,
- storeRoot + "randomfile");
+ accountRootDir + "randomfile");
random.Open();
random.Write("test", 4);
random.Commit(true);
@@ -672,7 +664,7 @@
// Check the random file doesn't exist
{
TEST_THAT(!RaidFileRead::FileExists(discSetNum,
- storeRoot + "01/randomfile"));
+ accountRootDir + "01/randomfile"));
}
// ------------------------------------------------------------------------------------------------
More information about the Boxbackup-commit
mailing list