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 2012/11/08 06:51:51 UTC
svn commit: r1406932 [2/2] - in /incubator/mesos/trunk/src: ./ local/
master/ sched/ tests/
Modified: incubator/mesos/trunk/src/tests/master_tests.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/tests/master_tests.cpp?rev=1406932&r1=1406931&r2=1406932&view=diff
==============================================================================
--- incubator/mesos/trunk/src/tests/master_tests.cpp (original)
+++ incubator/mesos/trunk/src/tests/master_tests.cpp Thu Nov 8 05:51:50 2012
@@ -32,8 +32,10 @@
#include "flags/flags.hpp"
+#include "master/allocator.hpp"
#include "master/flags.hpp"
#include "master/frameworks_manager.hpp"
+#include "master/hierarchical_allocator_process.hpp"
#include "master/master.hpp"
#include <process/dispatch.hpp>
@@ -48,9 +50,10 @@ using namespace mesos;
using namespace mesos::internal;
using namespace mesos::internal::tests;
+using mesos::internal::master::Allocator;
using mesos::internal::master::FrameworksManager;
using mesos::internal::master::FrameworksStorage;
-
+using mesos::internal::master::HierarchicalDRFAllocatorProcess;
using mesos::internal::master::Master;
using mesos::internal::slave::Slave;
@@ -75,7 +78,8 @@ TEST(MasterTest, TaskRunning)
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
Master m(&a, &files);
PID<Master> master = process::spawn(&m);
@@ -122,7 +126,8 @@ TEST(MasterTest, TaskRunning)
.WillRepeatedly(Return());
EXPECT_CALL(sched, statusUpdate(&driver, _))
- .WillOnce(DoAll(SaveArg<1>(&status), Trigger(&statusUpdateCall)));
+ .WillOnce(DoAll(SaveArg<1>(&status),
+ Trigger(&statusUpdateCall)));
driver.start();
@@ -169,7 +174,8 @@ TEST(MasterTest, KillTask)
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
Master m(&a, &files);
PID<Master> master = process::spawn(&m);
@@ -219,7 +225,8 @@ TEST(MasterTest, KillTask)
.WillRepeatedly(Return());
EXPECT_CALL(sched, statusUpdate(&driver, _))
- .WillOnce(DoAll(SaveArg<1>(&status), Trigger(&statusUpdateCall)));
+ .WillOnce(DoAll(SaveArg<1>(&status),
+ Trigger(&statusUpdateCall)));
driver.start();
@@ -267,7 +274,8 @@ TEST(MasterTest, StatusUpdateAck)
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
Master m(&a, &files);
PID<Master> master = process::spawn(&m);
@@ -364,7 +372,8 @@ TEST(MasterTest, RecoverResources)
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
Master m(&a, &files);
PID<Master> master = process::spawn(&m);
@@ -414,7 +423,7 @@ TEST(MasterTest, RecoverResources)
EXPECT_CALL(sched, statusUpdate(&driver, _))
.WillRepeatedly(DoAll(SaveArg<1>(&status),
- Trigger(&statusUpdateCall)));
+ Trigger(&statusUpdateCall)));
driver.start();
@@ -506,7 +515,8 @@ TEST(MasterTest, FrameworkMessage)
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
Master m(&a, &files);
PID<Master> master = process::spawn(&m);
@@ -564,7 +574,8 @@ TEST(MasterTest, FrameworkMessage)
.WillRepeatedly(Return());
EXPECT_CALL(sched, statusUpdate(&schedDriver, _))
- .WillOnce(DoAll(SaveArg<1>(&status), Trigger(&statusUpdateCall)));
+ .WillOnce(DoAll(SaveArg<1>(&status),
+ Trigger(&statusUpdateCall)));
EXPECT_CALL(sched, frameworkMessage(&schedDriver, _, _, _))
.WillOnce(DoAll(SaveArg<3>(&schedData),
@@ -627,7 +638,8 @@ TEST(MasterTest, MultipleExecutors)
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
Master m(&a, &files);
PID<Master> master = process::spawn(&m);
@@ -698,8 +710,10 @@ TEST(MasterTest, MultipleExecutors)
.WillRepeatedly(Return());
EXPECT_CALL(sched, statusUpdate(&driver, _))
- .WillOnce(DoAll(SaveArg<1>(&status1), Trigger(&statusUpdateCall1)))
- .WillOnce(DoAll(SaveArg<1>(&status2), Trigger(&statusUpdateCall2)));
+ .WillOnce(DoAll(SaveArg<1>(&status1),
+ Trigger(&statusUpdateCall1)))
+ .WillOnce(DoAll(SaveArg<1>(&status2),
+ Trigger(&statusUpdateCall2)));
driver.start();
@@ -767,7 +781,8 @@ TEST(MasterTest, MasterInfo)
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
Master m(&a, &files);
PID<Master> master = process::spawn(&m);
@@ -822,7 +837,8 @@ TEST(MasterTest, MasterInfoOnReElection)
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
Master m(&a, &files);
PID<Master> master = process::spawn(&m);
@@ -852,7 +868,8 @@ TEST(MasterTest, MasterInfoOnReElection)
.WillOnce(Trigger(®isteredCall));
EXPECT_CALL(sched, reregistered(&driver, _))
- .WillOnce(DoAll(SaveArg<1>(&masterInfo),Trigger(&reregisteredCall)));
+ .WillOnce(DoAll(SaveArg<1>(&masterInfo),
+ Trigger(&reregisteredCall)));
EXPECT_CALL(sched, resourceOffers(&driver, _))
.WillRepeatedly(Return());
@@ -916,7 +933,8 @@ TEST_F(WhitelistFixture, WhitelistSlave)
string hosts = hostname.get() + "\n" + "dummy-slave";
ASSERT_SOME(os::write(path, hosts)) << "Error writing whitelist";
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
flags::Flags<logging::Flags, master::Flags> flags;
flags.whitelist = "file://" + path;
@@ -926,7 +944,8 @@ TEST_F(WhitelistFixture, WhitelistSlave)
trigger slaveRegisteredMsg;
EXPECT_MESSAGE(Eq(SlaveRegisteredMessage().GetTypeName()), _, _)
- .WillOnce(DoAll(Trigger(&slaveRegisteredMsg), Return(false)));
+ .WillOnce(DoAll(Trigger(&slaveRegisteredMsg),
+ Return(false)));
MockExecutor exec;
@@ -992,7 +1011,8 @@ TEST(MasterTest, MasterLost)
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
Master m(&a, &files);
PID<Master> master = process::spawn(&m);
Modified: incubator/mesos/trunk/src/tests/resource_offers_tests.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/tests/resource_offers_tests.cpp?rev=1406932&r1=1406931&r2=1406932&view=diff
==============================================================================
--- incubator/mesos/trunk/src/tests/resource_offers_tests.cpp (original)
+++ incubator/mesos/trunk/src/tests/resource_offers_tests.cpp Thu Nov 8 05:51:50 2012
@@ -29,6 +29,8 @@
#include "local/local.hpp"
+#include "master/allocator.hpp"
+#include "master/hierarchical_allocator_process.hpp"
#include "master/master.hpp"
#include "slave/slave.hpp"
@@ -39,6 +41,8 @@ using namespace mesos;
using namespace mesos::internal;
using namespace mesos::internal::tests;
+using mesos::internal::master::Allocator;
+using mesos::internal::master::HierarchicalDRFAllocatorProcess;
using mesos::internal::master::Master;
using mesos::internal::slave::Slave;
@@ -453,28 +457,27 @@ TEST(ResourceOffersTest, Request)
ASSERT_TRUE(GTEST_IS_THREADSAFE);
MockScheduler sched;
- MockAllocator<TestAllocatorProcess > allocator;
- EXPECT_CALL(allocator, initialize(_, _))
- .WillOnce(Return());
+ MockAllocatorProcess<HierarchicalDRFAllocatorProcess> allocator;
- EXPECT_CALL(allocator, frameworkAdded(_, _, _))
- .WillOnce(Return());
+ EXPECT_CALL(allocator, initialize(_, _));
- EXPECT_CALL(allocator, frameworkDeactivated(_))
- .WillRepeatedly(Return());
+ EXPECT_CALL(allocator, frameworkAdded(_, _, _));
- EXPECT_CALL(allocator, frameworkRemoved(_))
- .WillRepeatedly(Return());
+ EXPECT_CALL(allocator, frameworkDeactivated(_));
+
+ EXPECT_CALL(allocator, frameworkRemoved(_));
EXPECT_CALL(allocator, slaveAdded(_, _, _))
- .WillRepeatedly(Return());
+ .WillRepeatedly(Return()); // Test may finish before slave registers.
EXPECT_CALL(allocator, slaveRemoved(_))
- .WillRepeatedly(Return());
+ .WillRepeatedly(Return()); // Test may finish before slave registers.
+
+ Allocator a(&allocator);
PID<Master> master = local::launch(
- 1, 2, 1 * Gigabyte, 1 * Gigabyte, false, &allocator);
+ 1, 2, 1 * Gigabyte, 1 * Gigabyte, false, &a);
MesosSchedulerDriver driver(&sched, DEFAULT_FRAMEWORK_INFO, master);
@@ -494,7 +497,6 @@ TEST(ResourceOffersTest, Request)
requestsSent.push_back(request);
trigger resourcesRequestedCall;
-
EXPECT_CALL(allocator, resourcesRequested(_, _))
.WillOnce(DoAll(SaveArg<1>(&requestsReceived),
Trigger(&resourcesRequestedCall)));
@@ -518,7 +520,8 @@ TEST(ResourceOffersTest, TasksExecutorIn
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
- TestAllocatorProcess a;
+ HierarchicalDRFAllocatorProcess allocator;
+ Allocator a(&allocator);
Files files;
Master m(&a, &files);
PID<Master> master = process::spawn(&m);
Modified: incubator/mesos/trunk/src/tests/utils.hpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/tests/utils.hpp?rev=1406932&r1=1406931&r2=1406932&view=diff
==============================================================================
--- incubator/mesos/trunk/src/tests/utils.hpp (original)
+++ incubator/mesos/trunk/src/tests/utils.hpp Thu Nov 8 05:51:50 2012
@@ -233,46 +233,57 @@ public:
template <typename T = master::AllocatorProcess>
-class MockAllocator : public master::AllocatorProcess
+class MockAllocatorProcess : public master::AllocatorProcess
{
public:
- MockAllocator() {
+ MockAllocatorProcess()
+ {
+ // Spawn the underlying allocator process.
+ process::spawn(real);
+
ON_CALL(*this, initialize(_, _))
- .WillByDefault(Invoke(&real, &T::initialize));
+ .WillByDefault(InvokeInitialize(this));
ON_CALL(*this, frameworkAdded(_, _, _))
- .WillByDefault(Invoke(&real, &T::frameworkAdded));
+ .WillByDefault(InvokeFrameworkAdded(this));
ON_CALL(*this, frameworkRemoved(_))
- .WillByDefault(Invoke(&real, &T::frameworkRemoved));
+ .WillByDefault(InvokeFrameworkRemoved(this));
ON_CALL(*this, frameworkActivated(_, _))
- .WillByDefault(Invoke(&real, &T::frameworkActivated));
+ .WillByDefault(InvokeFrameworkActivated(this));
ON_CALL(*this, frameworkDeactivated(_))
- .WillByDefault(Invoke(&real, &T::frameworkDeactivated));
+ .WillByDefault(InvokeFrameworkDeactivated(this));
ON_CALL(*this, slaveAdded(_, _, _))
- .WillByDefault(Invoke(&real, &T::slaveAdded));
+ .WillByDefault(InvokeSlaveAdded(this));
ON_CALL(*this, slaveRemoved(_))
- .WillByDefault(Invoke(&real, &T::slaveRemoved));
+ .WillByDefault(InvokeSlaveRemoved(this));
ON_CALL(*this, updateWhitelist(_))
- .WillByDefault(Invoke(&real, &T::updateWhitelist));
+ .WillByDefault(InvokeUpdateWhitelist(this));
ON_CALL(*this, resourcesRequested(_, _))
- .WillByDefault(Invoke(&real, &T::resourcesRequested));
+ .WillByDefault(InvokeResourcesRequested(this));
ON_CALL(*this, resourcesUnused(_, _, _, _))
- .WillByDefault(Invoke(&real, &T::resourcesUnused));
+ .WillByDefault(InvokeResourcesUnused(this));
ON_CALL(*this, resourcesRecovered(_, _, _))
- .WillByDefault(Invoke(&real, &T::resourcesRecovered));
+ .WillByDefault(InvokeResourcesRecovered(this));
ON_CALL(*this, offersRevived(_))
- .WillByDefault(Invoke(&real, &T::offersRevived));
+ .WillByDefault(InvokeOffersRevived(this));
}
+
+ ~MockAllocatorProcess()
+ {
+ process::terminate(real);
+ process::wait(real);
+ }
+
MOCK_METHOD2(initialize, void(const master::Flags&,
const process::PID<master::Master>&));
MOCK_METHOD3(frameworkAdded, void(const FrameworkID&,
@@ -292,7 +303,7 @@ public:
MOCK_METHOD4(resourcesUnused, void(const FrameworkID&,
const SlaveID&,
const Resources&,
- const Option<Filters>& filters));
+ const Option<Filters>& filters));
MOCK_METHOD3(resourcesRecovered, void(const FrameworkID&,
const SlaveID&,
const Resources&));
@@ -302,12 +313,8 @@ public:
};
-class TestAllocatorProcess
- : public master::HierarchicalAllocatorProcess<master::DRFSorter, master::DRFSorter>
-{};
-
-
-typedef ::testing::Types<master::HierarchicalAllocatorProcess<master::DRFSorter, master::DRFSorter> > AllocatorTypes;
+typedef ::testing::Types<master::HierarchicalDRFAllocatorProcess>
+AllocatorTypes;
// The following actions make up for the fact that DoDefault
@@ -315,51 +322,104 @@ typedef ::testing::Types<master::Hierarc
// EXPECT_CALL(allocator, frameworkAdded(_, _, _))
// .WillOnce(DoAll(InvokeFrameworkAdded(&allocator),
// Trigger(&frameworkAddedTrigger)));
+
+ACTION_P(InvokeInitialize, allocator)
+{
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::initialize,
+ arg0,
+ arg1);
+}
+
+
ACTION_P(InvokeFrameworkAdded, allocator)
{
- allocator->real.frameworkAdded(arg0, arg1, arg2);
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::frameworkAdded,
+ arg0,
+ arg1,
+ arg2);
}
ACTION_P(InvokeFrameworkRemoved, allocator)
{
- allocator->real.frameworkRemoved(arg0);
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::frameworkRemoved, arg0);
}
ACTION_P(InvokeFrameworkActivated, allocator)
{
- allocator->real.frameworkActivated(arg0, arg1);
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::frameworkActivated,
+ arg0,
+ arg1);
}
ACTION_P(InvokeFrameworkDeactivated, allocator)
{
- allocator->real.frameworkDeactivated(arg0);
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::frameworkDeactivated,
+ arg0);
}
ACTION_P(InvokeSlaveAdded, allocator)
{
- allocator->real.slaveAdded(arg0, arg1, arg2);
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::slaveAdded,
+ arg0,
+ arg1,
+ arg2);
}
ACTION_P(InvokeSlaveRemoved, allocator)
{
- allocator->real.slaveRemoved(arg0);
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::slaveRemoved,
+ arg0);
}
ACTION_P(InvokeUpdateWhitelist, allocator)
{
- allocator->real.updateWhitelist(arg0);
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::updateWhitelist,
+ arg0);
}
+ACTION_P(InvokeResourcesRequested, allocator)
+{
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::resourcesRequested,
+ arg0,
+ arg1);
+}
+
+
+
ACTION_P(InvokeResourcesUnused, allocator)
{
- allocator->real.resourcesUnused(arg0, arg1, arg2, arg3);
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::resourcesUnused,
+ arg0,
+ arg1,
+ arg2,
+ arg3);
}
@@ -367,7 +427,34 @@ ACTION_P2(InvokeUnusedWithFilters, alloc
{
Filters filters;
filters.set_refuse_seconds(timeout);
- allocator->real.resourcesUnused(arg0, arg1, arg2, filters);
+
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::resourcesUnused,
+ arg0,
+ arg1,
+ arg2,
+ filters);
+}
+
+
+ACTION_P(InvokeResourcesRecovered, allocator)
+{
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::resourcesRecovered,
+ arg0,
+ arg1,
+ arg2);
+}
+
+
+ACTION_P(InvokeOffersRevived, allocator)
+{
+ process::dispatch(
+ allocator->real,
+ &master::AllocatorProcess::offersRevived,
+ arg0);
}