Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Unified Diff: test_utils.h

Issue 5684002: Add support for bsdiff of file system metadata blocks (Closed) Base URL: http://git.chromium.org/git/update_engine.git@master
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test_utils.h
diff --git a/test_utils.h b/test_utils.h
index 4c8288892b37eb82dd4e904d0f40b62965efa8ee..889d579e5764415b924b660c84cf60e4cfde943a 100644
--- a/test_utils.h
+++ b/test_utils.h
@@ -10,6 +10,7 @@
#include <vector>
#include <gtest/gtest.h>
#include "base/scoped_ptr.h"
+#include "base/string_util.h"
petkov 2010/12/10 00:46:55 since you've touched the headers -- "new" style is
thieule 2010/12/14 23:11:21 Done.
#include "update_engine/action.h"
#include "update_engine/subprocess.h"
#include "update_engine/utils.h"
@@ -92,6 +93,11 @@ const unsigned char kRandomString[] = {
const char* const kMountPath = "/tmp/UpdateEngineTests_mnt";
} // namespace {}
+// Creates an empty ext image.
petkov 2010/12/10 00:46:55 ext2, ext3, ext4?
thieule 2010/12/14 23:11:21 This is a little bit more involved than just here.
+void CreateEmptyExtImageAtPath(const std::string& path,
+ size_t size,
+ int block_size);
+
// Creates an ext image with some files in it. The paths creates are
// returned in out_paths.
void CreateExtImageAtPath(const std::string& path,
@@ -211,6 +217,28 @@ struct ObjectCollectorAction : public Action<ObjectCollectorAction<T> > {
T object_;
};
+class ScopedLoopMounter {
+ public:
+ explicit ScopedLoopMounter(const std::string& file_path,
+ std::string* mnt_path,
+ unsigned long flags) {
+ EXPECT_TRUE(utils::MakeTempDirectory("/tmp/mnt.XXXXXX", mnt_path));
petkov 2010/12/10 00:46:55 lots of code for a header file. could you please m
thieule 2010/12/14 23:11:21 Done.
+ dir_remover_.reset(new ScopedDirRemover(*mnt_path));
+
+ std::string loop_dev = GetUnusedLoopDevice();
+ EXPECT_EQ(0, system(StringPrintf("losetup %s %s", loop_dev.c_str(),
+ file_path.c_str()).c_str()));
+ loop_releaser_.reset(new ScopedLoopbackDeviceReleaser(loop_dev));
+
+ EXPECT_TRUE(utils::MountFilesystem(loop_dev, *mnt_path, flags));
+ unmounter_.reset(new ScopedFilesystemUnmounter(*mnt_path));
+ }
+ private:
petkov 2010/12/10 00:46:55 blank line before private
thieule 2010/12/14 23:11:21 Done.
+ scoped_ptr<ScopedDirRemover> dir_remover_;
petkov 2010/12/10 00:46:55 i guess this is not new code but... is there any r
thieule 2010/12/14 23:11:21 There is an explicit order that these objects must
+ scoped_ptr<ScopedLoopbackDeviceReleaser> loop_releaser_;
+ scoped_ptr<ScopedFilesystemUnmounter> unmounter_;
+};
+
} // namespace chromeos_update_engine
#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_TEST_UTILS_H__

Powered by Google App Engine
This is Rietveld 408576698