diff --git a/.gitignore b/.gitignore
index 9b20783..e22ca50 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,6 +27,3 @@
 /update_engine_unittests
 /update_metadata.pb.cc
 /update_metadata.pb.h
-/UpdateAttempterTest/
-/omaha_request_action-test/
-/omaha_response_handler_action-test/
diff --git a/integration_unittest.cc b/integration_unittest.cc
index af5fee4..10e6633 100644
--- a/integration_unittest.cc
+++ b/integration_unittest.cc
@@ -32,12 +32,11 @@
 class IntegrationTest : public ::testing::Test { };
 
 namespace {
-const char* kTestDir = "/tmp/update_engine-integration-test";
 
 class IntegrationTestProcessorDelegate : public ActionProcessorDelegate {
  public:
-  IntegrationTestProcessorDelegate()
-      : loop_(NULL), processing_done_called_(false) {}
+  IntegrationTestProcessorDelegate(const string& test_dir)
+      : loop_(NULL), processing_done_called_(false), test_dir_(test_dir) {}
   virtual ~IntegrationTestProcessorDelegate() {
     EXPECT_TRUE(processing_done_called_);
   }
@@ -58,7 +57,7 @@
       InstallAction* install_action = static_cast<InstallAction*>(action);
       old_dev_ = install_action->GetOutputObject();
       string dev;
-      BindToUnusedDevice(kTestDir + "/dev2", &dev);
+      BindToUnusedDevice(test_dir_ + "/dev2", &dev);
       install_action->SetOutputObject(dev);
     } else if (action->Type() == PostinstallRunnerAction::StaticType()) {
       PostinstallRunnerAction* postinstall_runner_action =
@@ -85,6 +84,10 @@
   // but the PostinstallRunnerAction requires a real device. We set up a
   // loop device pointing to the file when necessary.
   string old_dev_;
+
+  // A per-instance, customizable test directory. Used for avoiding race
+  // conditions while running multiple tests concurrently.
+  string test_dir_;
 };
 
 gboolean TestStarter(gpointer data) {
@@ -99,8 +102,14 @@
   ASSERT_EQ(0, getuid());
   GMainLoop *loop = g_main_loop_new(g_main_context_default(), FALSE);
 
+  // Create a uniquely named test directory.
+  string test_dir;
+  ASSERT_TRUE(utils::MakeTempDirectory(
+          "/tmp/update_engine-integration-test-XXXXXX", &test_dir));
+  ScopedPathUnlinker test_dir_unlinker(test_dir);
+
   ActionProcessor processor;
-  IntegrationTestProcessorDelegate delegate;
+  IntegrationTestProcessorDelegate delegate(test_dir);
   delegate.set_loop(loop);
   processor.set_delegate(&delegate);
 
diff --git a/omaha_request_action_unittest.cc b/omaha_request_action_unittest.cc
index 6051f01..ffcb91a 100644
--- a/omaha_request_action_unittest.cc
+++ b/omaha_request_action_unittest.cc
@@ -1490,23 +1490,27 @@
 }
 
 TEST(OmahaRequestActionTest, TestChangingToMoreStableChannel) {
-  const string kTestDir = "omaha_request_action-test";
-  ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir + "/etc"));
-  ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir +
+  // Create a uniquely named test directory.
+  string test_dir;
+  ASSERT_TRUE(utils::MakeTempDirectory(
+          "omaha_request_action-test-XXXXXX", &test_dir));
+
+  ASSERT_EQ(0, System(string("mkdir -p ") + test_dir + "/etc"));
+  ASSERT_EQ(0, System(string("mkdir -p ") + test_dir +
                       kStatefulPartition + "/etc"));
   vector<char> post_data;
   NiceMock<PrefsMock> prefs;
   ASSERT_TRUE(WriteFileString(
-      kTestDir + "/etc/lsb-release",
+      test_dir + "/etc/lsb-release",
       "CHROMEOS_RELEASE_APPID={11111111-1111-1111-1111-111111111111}\n"
       "CHROMEOS_BOARD_APPID={22222222-2222-2222-2222-222222222222}\n"
       "CHROMEOS_RELEASE_TRACK=canary-channel\n"));
   ASSERT_TRUE(WriteFileString(
-      kTestDir + kStatefulPartition + "/etc/lsb-release",
+      test_dir + kStatefulPartition + "/etc/lsb-release",
       "CHROMEOS_IS_POWERWASH_ALLOWED=true\n"
       "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
   OmahaRequestParams params = kDefaultTestParams;
-  params.set_root(string("./") + kTestDir);
+  params.set_root(string("./") + test_dir);
   params.SetLockDown(false);
   params.Init("1.2.3.4", "", 0);
   EXPECT_EQ("canary-channel", params.current_channel());
@@ -1527,25 +1531,31 @@
       "appid=\"{22222222-2222-2222-2222-222222222222}\" "
       "version=\"0.0.0.0\" from_version=\"1.2.3.4\" "
       "track=\"stable-channel\" from_track=\"canary-channel\" "));
+
+  ASSERT_TRUE(utils::RecursiveUnlinkDir(test_dir));
 }
 
 TEST(OmahaRequestActionTest, TestChangingToLessStableChannel) {
-  const string kTestDir = "omaha_request_action-test";
-  ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir + "/etc"));
-  ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir +
+  // Create a uniquely named test directory.
+  string test_dir;
+  ASSERT_TRUE(utils::MakeTempDirectory(
+          "omaha_request_action-test-XXXXXX", &test_dir));
+
+  ASSERT_EQ(0, System(string("mkdir -p ") + test_dir + "/etc"));
+  ASSERT_EQ(0, System(string("mkdir -p ") + test_dir +
                       kStatefulPartition + "/etc"));
   vector<char> post_data;
   NiceMock<PrefsMock> prefs;
   ASSERT_TRUE(WriteFileString(
-      kTestDir + "/etc/lsb-release",
+      test_dir + "/etc/lsb-release",
       "CHROMEOS_RELEASE_APPID={11111111-1111-1111-1111-111111111111}\n"
       "CHROMEOS_BOARD_APPID={22222222-2222-2222-2222-222222222222}\n"
       "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
   ASSERT_TRUE(WriteFileString(
-      kTestDir + kStatefulPartition + "/etc/lsb-release",
+      test_dir + kStatefulPartition + "/etc/lsb-release",
       "CHROMEOS_RELEASE_TRACK=canary-channel\n"));
   OmahaRequestParams params = kDefaultTestParams;
-  params.set_root(string("./") + kTestDir);
+  params.set_root(string("./") + test_dir);
   params.SetLockDown(false);
   params.Init("5.6.7.8", "", 0);
   EXPECT_EQ("stable-channel", params.current_channel());
@@ -1567,6 +1577,8 @@
       "version=\"5.6.7.8\" "
       "track=\"canary-channel\" from_track=\"stable-channel\""));
   EXPECT_EQ(string::npos, post_str.find( "from_version"));
+
+  ASSERT_TRUE(utils::RecursiveUnlinkDir(test_dir));
 }
 
 }  // namespace chromeos_update_engine
diff --git a/omaha_response_handler_action_unittest.cc b/omaha_response_handler_action_unittest.cc
index 06d1570..d5831d4 100644
--- a/omaha_response_handler_action_unittest.cc
+++ b/omaha_response_handler_action_unittest.cc
@@ -274,21 +274,25 @@
   in.hash = "HASHjk";
   in.size = 15;
 
-  const string kTestDir = "omaha_response_handler_action-test";
-  ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir + "/etc"));
-  ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir +
+  // Create a uniquely named test directory.
+  string test_dir;
+  ASSERT_TRUE(utils::MakeTempDirectory(
+          "omaha_response_handler_action-test-XXXXXX", &test_dir));
+
+  ASSERT_EQ(0, System(string("mkdir -p ") + test_dir + "/etc"));
+  ASSERT_EQ(0, System(string("mkdir -p ") + test_dir +
                       kStatefulPartition + "/etc"));
   ASSERT_TRUE(WriteFileString(
-      kTestDir + "/etc/lsb-release",
+      test_dir + "/etc/lsb-release",
       "CHROMEOS_RELEASE_TRACK=canary-channel\n"));
   ASSERT_TRUE(WriteFileString(
-      kTestDir + kStatefulPartition + "/etc/lsb-release",
+      test_dir + kStatefulPartition + "/etc/lsb-release",
       "CHROMEOS_IS_POWERWASH_ALLOWED=true\n"
       "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
 
   MockSystemState mock_system_state;
   OmahaRequestParams params(&mock_system_state);
-  params.set_root(string("./") + kTestDir);
+  params.set_root(string("./") + test_dir);
   params.SetLockDown(false);
   params.Init("1.2.3.4", "", 0);
   EXPECT_EQ("canary-channel", params.current_channel());
@@ -301,6 +305,8 @@
   EXPECT_TRUE(DoTestCommon(&mock_system_state, in, "/dev/sda5", "",
                            &install_plan));
   EXPECT_TRUE(install_plan.powerwash_required);
+
+  ASSERT_TRUE(utils::RecursiveUnlinkDir(test_dir));
 }
 
 TEST_F(OmahaResponseHandlerActionTest, ChangeToLessStableChannelTest) {
@@ -312,20 +318,24 @@
   in.hash = "HASHjk";
   in.size = 15;
 
-  const string kTestDir = "omaha_response_handler_action-test";
-  ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir + "/etc"));
-  ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir +
+  // Create a uniquely named test directory.
+  string test_dir;
+  ASSERT_TRUE(utils::MakeTempDirectory(
+          "omaha_response_handler_action-test-XXXXXX", &test_dir));
+
+  ASSERT_EQ(0, System(string("mkdir -p ") + test_dir + "/etc"));
+  ASSERT_EQ(0, System(string("mkdir -p ") + test_dir +
                       kStatefulPartition + "/etc"));
   ASSERT_TRUE(WriteFileString(
-      kTestDir + "/etc/lsb-release",
+      test_dir + "/etc/lsb-release",
       "CHROMEOS_RELEASE_TRACK=stable-channel\n"));
   ASSERT_TRUE(WriteFileString(
-      kTestDir + kStatefulPartition + "/etc/lsb-release",
+      test_dir + kStatefulPartition + "/etc/lsb-release",
       "CHROMEOS_RELEASE_TRACK=canary-channel\n"));
 
   MockSystemState mock_system_state;
   OmahaRequestParams params(&mock_system_state);
-  params.set_root(string("./") + kTestDir);
+  params.set_root(string("./") + test_dir);
   params.SetLockDown(false);
   params.Init("5.6.7.8", "", 0);
   EXPECT_EQ("stable-channel", params.current_channel());
@@ -339,6 +349,8 @@
   EXPECT_TRUE(DoTestCommon(&mock_system_state, in, "/dev/sda5", "",
                            &install_plan));
   EXPECT_FALSE(install_plan.powerwash_required);
+
+  ASSERT_TRUE(utils::RecursiveUnlinkDir(test_dir));
 }
 
 }  // namespace chromeos_update_engine
diff --git a/update_attempter_unittest.cc b/update_attempter_unittest.cc
index b5df68c..91c6dfe 100644
--- a/update_attempter_unittest.cc
+++ b/update_attempter_unittest.cc
@@ -21,6 +21,7 @@
 #include "update_engine/test_utils.h"
 #include "update_engine/update_attempter.h"
 #include "update_engine/update_check_scheduler.h"
+#include "update_engine/utils.h"
 
 using std::string;
 using testing::_;
@@ -52,7 +53,10 @@
         loop_(NULL) {
     mock_system_state_.set_connection_manager(&mock_connection_manager);
   }
+
   virtual void SetUp() {
+    CHECK(utils::MakeTempDirectory("UpdateAttempterTest-XXXXXX", &test_dir_));
+
     EXPECT_EQ(NULL, attempter_.dbus_service_);
     EXPECT_TRUE(attempter_.system_state_ != NULL);
     EXPECT_EQ(NULL, attempter_.update_check_scheduler_);
@@ -70,6 +74,10 @@
     prefs_ = mock_system_state_.mock_prefs();
   }
 
+  virtual void TearDown() {
+    utils::RecursiveUnlinkDir(test_dir_);
+  }
+
   void QuitMainLoop();
   static gboolean StaticQuitMainLoop(gpointer data);
 
@@ -116,6 +124,8 @@
   NiceMock<PrefsMock>* prefs_; // shortcut to mock_system_state_->mock_prefs()
   NiceMock<MockConnectionManager> mock_connection_manager;
   GMainLoop* loop_;
+
+  string test_dir_;
 };
 
 TEST_F(UpdateAttempterTest, ActionCompletedDownloadTest) {
@@ -612,7 +622,8 @@
       DoAll(SetArgumentPointee<0>(std::string("beta-channel")),
       Return(true)));
 
-  attempter_.omaha_request_params_->set_root("./UpdateAttempterTest");
+  ASSERT_FALSE(test_dir_.empty());
+  attempter_.omaha_request_params_->set_root(test_dir_);
   attempter_.Update("", "", false, false, false);
   EXPECT_EQ("beta-channel",
             attempter_.omaha_request_params_->target_channel());
