You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2014/04/13 01:37:31 UTC

[2/5] git commit: Cleaned up master detector usage in tests.

Cleaned up master detector usage in tests.

Review: https://reviews.apache.org/r/19834


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/bafce319
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/bafce319
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/bafce319

Branch: refs/heads/master
Commit: bafce31921254459b0cf426f2d72637ec38a135f
Parents: 58241c0
Author: Benjamin Hindman <be...@gmail.com>
Authored: Sat Mar 29 14:06:41 2014 -0700
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Sat Apr 12 17:35:37 2014 -0600

----------------------------------------------------------------------
 src/tests/cluster.hpp                         | 121 +++++++++++----------
 src/tests/fault_tolerance_tests.cpp           |  98 ++++++++---------
 src/tests/master_contender_detector_tests.cpp |   5 +-
 src/tests/master_tests.cpp                    |  17 ++-
 src/tests/mesos.cpp                           |   6 +-
 src/tests/mesos.hpp                           |   6 +-
 6 files changed, 127 insertions(+), 126 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/bafce319/src/tests/cluster.hpp
----------------------------------------------------------------------
diff --git a/src/tests/cluster.hpp b/src/tests/cluster.hpp
index 11684d9..8479fe3 100644
--- a/src/tests/cluster.hpp
+++ b/src/tests/cluster.hpp
@@ -91,10 +91,9 @@ public:
     // the launched master.  If no allocator process is specified then
     // the default allocator will be instantiated.
     Try<process::PID<master::Master> > start(
-        Option<master::allocator::AllocatorProcess*> allocatorProcess,
+        const Option<master::allocator::AllocatorProcess*>& allocatorProcess,
         const master::Flags& flags = master::Flags());
 
-
     // Stops and cleans up a master at the specified PID.
     Try<Nothing> stop(const process::PID<master::Master>& pid);
 
@@ -110,9 +109,9 @@ public:
     Option<zookeeper::URL> url;
 
     // Encapsulates a single master's dependencies.
-    struct MasterInfo
+    struct Master
     {
-      MasterInfo()
+      Master()
         : master(NULL),
           allocator(NULL),
           allocatorProcess(NULL),
@@ -130,7 +129,7 @@ public:
       MasterDetector* detector;
     };
 
-    std::map<process::PID<master::Master>, MasterInfo> masters;
+    std::map<process::PID<master::Master>, Master> masters;
   };
 
   // Abstracts the slaves of a cluster.
@@ -159,12 +158,12 @@ public:
     // Detector. The detector is expected to outlive the launched
     // slave (i.e., until it is stopped via Slaves::stop).
     Try<process::PID<slave::Slave> > start(
-        process::Owned<MasterDetector> detector,
+        const Option<MasterDetector*>& detector,
         const slave::Flags& flags = slave::Flags());
 
     Try<process::PID<slave::Slave> > start(
         slave::Containerizer* containerizer,
-        process::Owned<MasterDetector> detector,
+        const Option<MasterDetector*>& detector,
         const slave::Flags& flags = slave::Flags());
 
     // Stops and cleans up a slave at the specified PID. If 'shutdown'
@@ -239,7 +238,7 @@ inline Cluster::Masters::~Masters()
 inline void Cluster::Masters::shutdown()
 {
   // TODO(benh): Use utils::copy from stout once namespaced.
-  std::map<process::PID<master::Master>, MasterInfo> copy(masters);
+  std::map<process::PID<master::Master>, Master> copy(masters);
   foreachkey (const process::PID<master::Master>& pid, copy) {
     stop(pid);
   }
@@ -255,7 +254,7 @@ inline Try<process::PID<master::Master> > Cluster::Masters::start(
 
 
 inline Try<process::PID<master::Master> > Cluster::Masters::start(
-    Option<master::allocator::AllocatorProcess*> allocatorProcess,
+    const Option<master::allocator::AllocatorProcess*>& allocatorProcess,
     const master::Flags& flags)
 {
   // Disallow multiple masters when not using ZooKeeper.
@@ -263,16 +262,16 @@ inline Try<process::PID<master::Master> > Cluster::Masters::start(
     return Error("Can not start multiple masters when not using ZooKeeper");
   }
 
-  MasterInfo masterInfo;
+  Master master;
 
   if (allocatorProcess.isNone()) {
-    masterInfo.allocatorProcess =
+    master.allocatorProcess =
         new master::allocator::HierarchicalDRFAllocatorProcess();
-    masterInfo.allocator =
-        new master::allocator::Allocator(masterInfo.allocatorProcess);
+    master.allocator =
+        new master::allocator::Allocator(master.allocatorProcess);
   } else {
-    masterInfo.allocatorProcess = NULL;
-    masterInfo.allocator =
+    master.allocatorProcess = NULL;
+    master.allocator =
         new master::allocator::Allocator(allocatorProcess.get());
   }
 
@@ -281,44 +280,44 @@ inline Try<process::PID<master::Master> > Cluster::Masters::start(
   }
 
   if (flags.registry == "in_memory") {
-    masterInfo.storage = new state::InMemoryStorage();
+    master.storage = new state::InMemoryStorage();
   } else {
     return Error("'" + flags.registry + "' is not a supported"
                  " option for registry persistence");
   }
 
-  CHECK_NOTNULL(masterInfo.storage);
+  CHECK_NOTNULL(master.storage);
 
-  masterInfo.state = new state::protobuf::State(masterInfo.storage);
-  masterInfo.registrar = new master::Registrar(flags, masterInfo.state);
-  masterInfo.repairer = new master::Repairer();
+  master.state = new state::protobuf::State(master.storage);
+  master.registrar = new master::Registrar(flags, master.state);
+  master.repairer = new master::Repairer();
 
   if (url.isSome()) {
-    masterInfo.contender = new ZooKeeperMasterContender(url.get());
-    masterInfo.detector = new ZooKeeperMasterDetector(url.get());
+    master.contender = new ZooKeeperMasterContender(url.get());
+    master.detector = new ZooKeeperMasterDetector(url.get());
   } else {
-    masterInfo.contender = new StandaloneMasterContender();
-    masterInfo.detector = new StandaloneMasterDetector();
+    master.contender = new StandaloneMasterContender();
+    master.detector = new StandaloneMasterDetector();
   }
 
-  masterInfo.master = new master::Master(
-      masterInfo.allocator,
-      masterInfo.registrar,
-      masterInfo.repairer,
+  master.master = new master::Master(
+      master.allocator,
+      master.registrar,
+      master.repairer,
       &cluster->files,
-      masterInfo.contender,
-      masterInfo.detector,
+      master.contender,
+      master.detector,
       flags);
 
   if (url.isNone()) {
     // This means we are using the StandaloneMasterDetector.
-    CHECK_NOTNULL(dynamic_cast<StandaloneMasterDetector*>(masterInfo.detector))
-        ->appoint(masterInfo.master->info());
+    CHECK_NOTNULL(dynamic_cast<StandaloneMasterDetector*>(master.detector))
+        ->appoint(master.master->info());
   }
 
-  process::PID<master::Master> pid = process::spawn(masterInfo.master);
+  process::PID<master::Master> pid = process::spawn(master.master);
 
-  masters[pid] = masterInfo;
+  masters[pid] = master;
 
   return pid;
 }
@@ -331,22 +330,22 @@ inline Try<Nothing> Cluster::Masters::stop(
     return Error("No master found to stop");
   }
 
-  MasterInfo masterInfo = masters[pid];
+  Master master = masters[pid];
 
-  process::terminate(masterInfo.master);
-  process::wait(masterInfo.master);
-  delete masterInfo.master;
+  process::terminate(master.master);
+  process::wait(master.master);
+  delete master.master;
 
-  delete masterInfo.allocator; // Terminates and waits for allocator process.
-  delete masterInfo.allocatorProcess; // May be NULL.
+  delete master.allocator; // Terminates and waits for allocator process.
+  delete master.allocatorProcess; // May be NULL.
 
-  delete masterInfo.registrar;
-  delete masterInfo.repairer;
-  delete masterInfo.state;
-  delete masterInfo.storage;
+  delete master.registrar;
+  delete master.repairer;
+  delete master.state;
+  delete master.storage;
 
-  delete masterInfo.contender;
-  delete masterInfo.detector;
+  delete master.contender;
+  delete master.detector;
 
   masters.erase(pid);
 
@@ -422,12 +421,12 @@ inline Try<process::PID<slave::Slave> > Cluster::Slaves::start(
     slave::Containerizer* containerizer,
     const slave::Flags& flags)
 {
-  return start(containerizer, masters->detector(), flags);
+  return start(containerizer, None(), flags);
 }
 
 
 inline Try<process::PID<slave::Slave> > Cluster::Slaves::start(
-    process::Owned<MasterDetector> detector,
+    const Option<MasterDetector*>& detector,
     const slave::Flags& flags)
 {
   // TODO(benh): Create a work directory if using the default.
@@ -443,11 +442,17 @@ inline Try<process::PID<slave::Slave> > Cluster::Slaves::start(
 
   slave.containerizer = containerizer.get();
 
-  // Get a detector for the master(s).
-  slave.detector = detector;
+  // Get a detector for the master(s) if one wasn't provided.
+  if (detector.isNone()) {
+    slave.detector = masters->detector();
+  }
 
   slave.slave = new slave::Slave(
-      flags, slave.detector.get(), slave.containerizer, &cluster->files);
+      flags,
+      detector.get(slave.detector.get()),
+      slave.containerizer,
+      &cluster->files);
+
   process::PID<slave::Slave> pid = process::spawn(slave.slave);
 
   slaves[pid] = slave;
@@ -458,7 +463,7 @@ inline Try<process::PID<slave::Slave> > Cluster::Slaves::start(
 
 inline Try<process::PID<slave::Slave> > Cluster::Slaves::start(
     slave::Containerizer* containerizer,
-    process::Owned<MasterDetector> detector,
+    const Option<MasterDetector*>& detector,
     const slave::Flags& flags)
 {
   // TODO(benh): Create a work directory if using the default.
@@ -467,11 +472,17 @@ inline Try<process::PID<slave::Slave> > Cluster::Slaves::start(
 
   slave.flags = flags;
 
-  // Get a detector for the master(s).
-  slave.detector = detector;
+  // Get a detector for the master(s) if one wasn't provided.
+  if (detector.isNone()) {
+    slave.detector = masters->detector();
+  }
 
   slave.slave = new slave::Slave(
-      flags, slave.detector.get(), containerizer, &cluster->files);
+      flags,
+      detector.get(slave.detector.get()),
+      containerizer,
+      &cluster->files);
+
   process::PID<slave::Slave> pid = process::spawn(slave.slave);
 
   slaves[pid] = slave;

http://git-wip-us.apache.org/repos/asf/mesos/blob/bafce319/src/tests/fault_tolerance_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/fault_tolerance_tests.cpp b/src/tests/fault_tolerance_tests.cpp
index 99311c3..4796149 100644
--- a/src/tests/fault_tolerance_tests.cpp
+++ b/src/tests/fault_tolerance_tests.cpp
@@ -222,10 +222,9 @@ TEST_F(FaultToleranceTest, PartitionedSlaveReregistration)
 
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
-  StandaloneMasterDetector* detector =
-    new StandaloneMasterDetector(master.get());
+  StandaloneMasterDetector detector(master.get());
 
-  Try<PID<Slave> > slave = StartSlave(&exec, Owned<MasterDetector>(detector));
+  Try<PID<Slave> > slave = StartSlave(&exec, &detector);
   ASSERT_SOME(slave);
 
   MockScheduler sched;
@@ -327,7 +326,7 @@ TEST_F(FaultToleranceTest, PartitionedSlaveReregistration)
   // We now complete the partition on the slave side as well. This
   // is done by simulating a master loss event which would normally
   // occur during a network partition.
-  detector->appoint(None());
+  detector.appoint(None());
 
   Future<Nothing> shutdown;
   EXPECT_CALL(exec, shutdown(_))
@@ -336,7 +335,7 @@ TEST_F(FaultToleranceTest, PartitionedSlaveReregistration)
   shutdownMessage = FUTURE_PROTOBUF(ShutdownMessage(), _, slave.get());
 
   // Have the slave re-register with the master.
-  detector->appoint(master.get());
+  detector.appoint(master.get());
 
   // Upon re-registration, the master will shutdown the slave.
   // The slave will then shut down the executor.
@@ -609,9 +608,8 @@ TEST_F(FaultToleranceTest, MasterFailover)
   ASSERT_SOME(master);
 
   MockScheduler sched;
-  StandaloneMasterDetector* detector =
-    new StandaloneMasterDetector(master.get());
-  TestingMesosSchedulerDriver driver(&sched, detector);
+  StandaloneMasterDetector detector(master.get());
+  TestingMesosSchedulerDriver driver(&sched, &detector);
 
   Future<process::Message> frameworkRegisteredMessage =
     FUTURE_MESSAGE(Eq(FrameworkRegisteredMessage().GetTypeName()), _, _);
@@ -641,7 +639,7 @@ TEST_F(FaultToleranceTest, MasterFailover)
     .WillOnce(FutureSatisfy(&registered2));
 
   // Simulate a new master detected message to the scheduler.
-  detector->appoint(master.get());
+  detector.appoint(master.get());
 
   // Scheduler should retry authentication.
   AWAIT_READY(authenticateMessage);
@@ -652,8 +650,6 @@ TEST_F(FaultToleranceTest, MasterFailover)
   driver.stop();
   driver.join();
 
-  delete detector;
-
   Shutdown();
 }
 
@@ -681,12 +677,12 @@ TEST_F(FaultToleranceTest, ReregisterCompletedFrameworks)
   ASSERT_SOME(master);
 
   MockExecutor executor(DEFAULT_EXECUTOR_ID);
+
   TestContainerizer containerizer(&executor);
 
-  Owned<MasterDetector> slaveDetector(
-      new StandaloneMasterDetector(master.get()));
+  StandaloneMasterDetector slaveDetector(master.get());
 
-  Try<PID<Slave> > slave = StartSlave(&containerizer, slaveDetector);
+  Try<PID<Slave> > slave = StartSlave(&containerizer, &slaveDetector);
   ASSERT_SOME(slave);
 
   // Verify master/slave have 0 completed/running frameworks.
@@ -810,8 +806,8 @@ TEST_F(FaultToleranceTest, ReregisterCompletedFrameworks)
   Future<SlaveReregisteredMessage> slaveReregisteredMessage =
     FUTURE_PROTOBUF(SlaveReregisteredMessage(), _, _);
 
-  dynamic_cast<StandaloneMasterDetector*>(slaveDetector.get())->appoint(
-      master.get());
+  // Simulate a new master detected message to the slave.
+  slaveDetector.appoint(master.get());
 
   AWAIT_READY(slaveReregisteredMessage);
 
@@ -1045,19 +1041,17 @@ TEST_F(FaultToleranceTest, FrameworkReregister)
   Try<PID<Master> > master = StartMaster();
   ASSERT_SOME(master);
 
-  Owned<MasterDetector> slaveDetector(
-      new StandaloneMasterDetector(master.get()));
-  Try<PID<Slave> > slave = StartSlave(slaveDetector);
-  ASSERT_SOME(slave);
+  StandaloneMasterDetector slaveDetector(master.get());
 
+  Try<PID<Slave> > slave = StartSlave(&slaveDetector);
+  ASSERT_SOME(slave);
 
   // Create a detector for the scheduler driver because we want the
   // spurious leading master change to be known by the scheduler
   // driver only.
-  Owned<MasterDetector> schedDetector(
-      new StandaloneMasterDetector(master.get()));
+  StandaloneMasterDetector schedDetector(master.get());
   MockScheduler sched;
-  TestingMesosSchedulerDriver driver(&sched, schedDetector.get());
+  TestingMesosSchedulerDriver driver(&sched, &schedDetector);
 
   Future<Nothing> registered;
   EXPECT_CALL(sched, registered(&driver, _, _))
@@ -1093,8 +1087,7 @@ TEST_F(FaultToleranceTest, FrameworkReregister)
     .Times(AtMost(1));
 
   // Simulate a spurious leading master change at the scheduler.
-  dynamic_cast<StandaloneMasterDetector*>(schedDetector.get())->appoint(
-      master.get());
+  schedDetector.appoint(master.get());
 
   AWAIT_READY(disconnected);
 
@@ -1119,9 +1112,8 @@ TEST_F(FaultToleranceTest, TaskLost)
   ASSERT_SOME(slave);
 
   MockScheduler sched;
-  StandaloneMasterDetector* detector =
-    new StandaloneMasterDetector(master.get());
-  TestingMesosSchedulerDriver driver(&sched, detector);
+  StandaloneMasterDetector detector(master.get());
+  TestingMesosSchedulerDriver driver(&sched, &detector);
 
   EXPECT_CALL(sched, registered(&driver, _, _));
 
@@ -1145,7 +1137,7 @@ TEST_F(FaultToleranceTest, TaskLost)
     .WillOnce(FutureSatisfy(&disconnected));
 
   // Simulate a spurious master loss event at the scheduler.
-  detector->appoint(None());
+  detector.appoint(None());
 
   AWAIT_READY(disconnected);
 
@@ -1301,15 +1293,14 @@ TEST_F(FaultToleranceTest, ReregisterFrameworkExitedExecutor)
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
   TestContainerizer containerizer(&exec);
 
-  Owned<MasterDetector> slaveDetector(
-      new StandaloneMasterDetector(master.get()));
-  Try<PID<Slave> > slave = StartSlave(&containerizer, slaveDetector);
+  StandaloneMasterDetector slaveDetector(master.get());
+
+  Try<PID<Slave> > slave = StartSlave(&containerizer, &slaveDetector);
   ASSERT_SOME(slave);
 
   MockScheduler sched;
-  Owned<StandaloneMasterDetector> schedDetector(
-      new StandaloneMasterDetector(master.get()));
-  TestingMesosSchedulerDriver driver(&sched, schedDetector.get());
+  StandaloneMasterDetector schedDetector(master.get());
+  TestingMesosSchedulerDriver driver(&sched, &schedDetector);
 
   Future<process::Message> frameworkRegisteredMessage =
     FUTURE_MESSAGE(Eq(FrameworkRegisteredMessage().GetTypeName()), _, _);
@@ -1361,8 +1352,7 @@ TEST_F(FaultToleranceTest, ReregisterFrameworkExitedExecutor)
   Future<SlaveReregisteredMessage> slaveReregisteredMessage =
     FUTURE_PROTOBUF(SlaveReregisteredMessage(), _, _);
 
-  dynamic_cast<StandaloneMasterDetector*>(slaveDetector.get())->appoint(
-      master.get());
+  slaveDetector.appoint(master.get());
 
   // Wait for the slave to re-register.
   AWAIT_READY(slaveReregisteredMessage);
@@ -1386,7 +1376,7 @@ TEST_F(FaultToleranceTest, ReregisterFrameworkExitedExecutor)
 
   EXPECT_CALL(sched, registered(&driver, _, _));
 
-  schedDetector->appoint(master.get());
+  schedDetector.appoint(master.get());
 
   AWAIT_READY(frameworkRegisteredMessage2);
 
@@ -1822,8 +1812,9 @@ TEST_F(FaultToleranceTest, SlaveReregisterOnZKExpiration)
   Future<SlaveRegisteredMessage> slaveRegisteredMessage =
     FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
 
-  StandaloneMasterDetector* detector = new StandaloneMasterDetector(master.get());
-  Try<PID<Slave> > slave = StartSlave(Owned<MasterDetector>(detector));
+  StandaloneMasterDetector detector(master.get());
+
+  Try<PID<Slave> > slave = StartSlave(&detector);
   ASSERT_SOME(slave);
 
   AWAIT_READY(slaveRegisteredMessage);
@@ -1848,7 +1839,7 @@ TEST_F(FaultToleranceTest, SlaveReregisterOnZKExpiration)
 
   // Simulate a spurious master change event (e.g., due to ZooKeeper
   // expiration) at the slave.
-  detector->appoint(master.get());
+  detector.appoint(master.get());
 
   AWAIT_READY(slaveReregisteredMessage);
 
@@ -1872,10 +1863,9 @@ TEST_F(FaultToleranceTest, SlaveReregisterTerminatedExecutor)
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
   TestContainerizer containerizer(&exec);
 
-  StandaloneMasterDetector* detector =
-    new StandaloneMasterDetector(master.get());
-  Try<PID<Slave> > slave =
-    StartSlave(&containerizer, Owned<MasterDetector>(detector));
+  StandaloneMasterDetector detector(master.get());
+
+  Try<PID<Slave> > slave = StartSlave(&containerizer, &detector);
   ASSERT_SOME(slave);
 
   MockScheduler sched;
@@ -1923,7 +1913,7 @@ TEST_F(FaultToleranceTest, SlaveReregisterTerminatedExecutor)
   EXPECT_CALL(sched, statusUpdate(&driver, _))
     .WillOnce(FutureArg<1>(&status2));
 
-  detector->appoint(master.get());
+  detector.appoint(master.get());
 
   AWAIT_READY(status2);
   EXPECT_EQ(TASK_LOST, status2.get().state());
@@ -1943,9 +1933,9 @@ TEST_F(FaultToleranceTest, ReconcileLostTasks)
   Try<PID<Master> > master = StartMaster();
   ASSERT_SOME(master);
 
-  StandaloneMasterDetector* detector =
-    new StandaloneMasterDetector(master.get());
-  Try<PID<Slave> > slave = StartSlave(Owned<MasterDetector>(detector));
+  StandaloneMasterDetector detector(master.get());
+
+  Try<PID<Slave> > slave = StartSlave(&detector);
   ASSERT_SOME(slave);
 
   MockScheduler sched;
@@ -1993,7 +1983,7 @@ TEST_F(FaultToleranceTest, ReconcileLostTasks)
 
   // Simulate a spurious master change event (e.g., due to ZooKeeper
   // expiration) at the slave to force re-registration.
-  detector->appoint(master.get());
+  detector.appoint(master.get());
 
   AWAIT_READY(slaveReregisteredMessage);
 
@@ -2019,9 +2009,9 @@ TEST_F(FaultToleranceTest, ReconcileIncompleteTasks)
 
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
-  StandaloneMasterDetector* detector =
-    new StandaloneMasterDetector(master.get());
-  Try<PID<Slave> > slave = StartSlave(&exec, Owned<MasterDetector>(detector));
+  StandaloneMasterDetector detector(master.get());
+
+  Try<PID<Slave> > slave = StartSlave(&exec, &detector);
   ASSERT_SOME(slave);
 
   MockScheduler sched;
@@ -2078,7 +2068,7 @@ TEST_F(FaultToleranceTest, ReconcileIncompleteTasks)
 
   // Simulate a spurious master change event (e.g., due to ZooKeeper
   // expiration) at the slave to force re-registration.
-  detector->appoint(master.get());
+  detector.appoint(master.get());
 
   AWAIT_READY(slaveReregisteredMessage);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/bafce319/src/tests/master_contender_detector_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_contender_detector_tests.cpp b/src/tests/master_contender_detector_tests.cpp
index 8da7420..42051bf 100644
--- a/src/tests/master_contender_detector_tests.cpp
+++ b/src/tests/master_contender_detector_tests.cpp
@@ -102,7 +102,8 @@ TEST_F(MasterContenderDetectorTest, File)
 
   ASSERT_SOME(detector);
 
-  StartSlave(Owned<MasterDetector>(detector.get()), flags);
+  Try<PID<Slave> > slave = StartSlave(detector.get(), flags);
+  ASSERT_SOME(slave);
 
   MockScheduler sched;
   MesosSchedulerDriver driver(
@@ -123,6 +124,8 @@ TEST_F(MasterContenderDetectorTest, File)
   driver.join();
 
   Shutdown();
+
+  delete detector.get();
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/bafce319/src/tests/master_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_tests.cpp b/src/tests/master_tests.cpp
index 599f4a0..c047397 100644
--- a/src/tests/master_tests.cpp
+++ b/src/tests/master_tests.cpp
@@ -722,14 +722,13 @@ TEST_F(MasterTest, MasterInfoOnReElection)
   Try<PID<Master> > master = StartMaster();
   ASSERT_SOME(master);
 
-  StandaloneMasterDetector* detector =
-    new StandaloneMasterDetector(master.get());
+  StandaloneMasterDetector detector(master.get());
 
-  Try<PID<Slave> > slave = StartSlave(Owned<MasterDetector>(detector));
+  Try<PID<Slave> > slave = StartSlave(&detector);
   ASSERT_SOME(slave);
 
   MockScheduler sched;
-  TestingMesosSchedulerDriver driver(&sched, detector);
+  TestingMesosSchedulerDriver driver(&sched, &detector);
 
   EXPECT_CALL(sched, registered(&driver, _, _))
     .Times(1);
@@ -761,7 +760,7 @@ TEST_F(MasterTest, MasterInfoOnReElection)
 
   // Simulate a spurious event (e.g., due to ZooKeeper
   // expiration) at the scheduler.
-  detector->appoint(master.get());
+  detector.appoint(master.get());
 
   AWAIT_READY(disconnected);
 
@@ -841,15 +840,13 @@ TEST_F(MasterTest, MasterLost)
   Try<PID<Master> > master = StartMaster();
   ASSERT_SOME(master);
 
-  Owned<StandaloneMasterDetector> detector(
-      new StandaloneMasterDetector());
-  detector->appoint(master.get());
+  StandaloneMasterDetector detector(master.get());
 
   Try<PID<Slave> > slave = StartSlave();
   ASSERT_SOME(slave);
 
   MockScheduler sched;
-  TestingMesosSchedulerDriver driver(&sched, detector.get());
+  TestingMesosSchedulerDriver driver(&sched, &detector);
 
   EXPECT_CALL(sched, registered(&driver, _, _))
     .Times(1);
@@ -869,7 +866,7 @@ TEST_F(MasterTest, MasterLost)
     .WillOnce(FutureSatisfy(&disconnected));
 
   // Simulate a spurious event at the scheduler.
-  detector->appoint(None());
+  detector.appoint(None());
 
   AWAIT_READY(disconnected);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/bafce319/src/tests/mesos.cpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.cpp b/src/tests/mesos.cpp
index ae3aeee..a9844e4 100644
--- a/src/tests/mesos.cpp
+++ b/src/tests/mesos.cpp
@@ -176,7 +176,7 @@ Try<process::PID<slave::Slave> > MesosTest::StartSlave(
 
 Try<process::PID<slave::Slave> > MesosTest::StartSlave(
     slave::Containerizer* containerizer,
-    Owned<MasterDetector> detector,
+    MasterDetector* detector,
     const Option<slave::Flags>& flags)
 {
   return cluster.slaves.start(
@@ -187,7 +187,7 @@ Try<process::PID<slave::Slave> > MesosTest::StartSlave(
 
 
 Try<PID<slave::Slave> > MesosTest::StartSlave(
-    Owned<MasterDetector> detector,
+    MasterDetector* detector,
     const Option<slave::Flags>& flags)
 {
   return cluster.slaves.start(
@@ -197,7 +197,7 @@ Try<PID<slave::Slave> > MesosTest::StartSlave(
 
 Try<PID<slave::Slave> > MesosTest::StartSlave(
     MockExecutor* executor,
-    Owned<MasterDetector> detector,
+    MasterDetector* detector,
     const Option<slave::Flags>& flags)
 {
   slave::Containerizer* containerizer = new TestContainerizer(executor);

http://git-wip-us.apache.org/repos/asf/mesos/blob/bafce319/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index f77fbfe..7bc5e98 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -113,19 +113,19 @@ protected:
   // Starts a slave with the specified containerizer, detector and flags.
   virtual Try<process::PID<slave::Slave> > StartSlave(
       slave::Containerizer* containerizer,
-      process::Owned<MasterDetector> detector,
+      MasterDetector* detector,
       const Option<slave::Flags>& flags = None());
 
   // Starts a slave with the specified MasterDetector and flags.
   virtual Try<process::PID<slave::Slave> > StartSlave(
-      process::Owned<MasterDetector> detector,
+      MasterDetector* detector,
       const Option<slave::Flags>& flags = None());
 
   // Starts a slave with the specified mock executor, MasterDetector
   // and flags.
   virtual Try<process::PID<slave::Slave> > StartSlave(
       MockExecutor* executor,
-      process::Owned<MasterDetector> detector,
+      MasterDetector* detector,
       const Option<slave::Flags>& flags = None());
 
   // Stop the specified master.