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 2013/04/04 22:57:51 UTC
svn commit: r1464753 - in /incubator/mesos/trunk/src: Makefile.am
master/frameworks_manager.cpp master/frameworks_manager.hpp
tests/master_tests.cpp
Author: benh
Date: Thu Apr 4 20:57:51 2013
New Revision: 1464753
URL: http://svn.apache.org/r1464753
Log:
Removed unused FrameworksManager and FrameworksStorage.
Review: https://reviews.apache.org/r/10261
Removed:
incubator/mesos/trunk/src/master/frameworks_manager.cpp
incubator/mesos/trunk/src/master/frameworks_manager.hpp
Modified:
incubator/mesos/trunk/src/Makefile.am
incubator/mesos/trunk/src/tests/master_tests.cpp
Modified: incubator/mesos/trunk/src/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/Makefile.am?rev=1464753&r1=1464752&r2=1464753&view=diff
==============================================================================
--- incubator/mesos/trunk/src/Makefile.am (original)
+++ incubator/mesos/trunk/src/Makefile.am Thu Apr 4 20:57:51 2013
@@ -160,7 +160,6 @@ libmesos_no_third_party_la_SOURCES =
local/local.cpp \
master/constants.cpp \
master/drf_sorter.cpp \
- master/frameworks_manager.cpp \
master/http.cpp \
master/master.cpp \
master/slaves_manager.cpp \
@@ -222,7 +221,6 @@ libmesos_no_third_party_la_SOURCES += co
logging/check_some.hpp logging/flags.hpp logging/logging.hpp \
master/allocator.hpp \
master/constants.hpp master/drf_sorter.hpp master/flags.hpp \
- master/frameworks_manager.hpp \
master/hierarchical_allocator_process.hpp master/http.hpp \
master/master.hpp master/slaves_manager.hpp master/sorter.hpp \
messages/messages.hpp slave/constants.hpp \
Modified: incubator/mesos/trunk/src/tests/master_tests.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/tests/master_tests.cpp?rev=1464753&r1=1464752&r2=1464753&view=diff
==============================================================================
--- incubator/mesos/trunk/src/tests/master_tests.cpp (original)
+++ incubator/mesos/trunk/src/tests/master_tests.cpp Thu Apr 4 20:57:51 2013
@@ -40,7 +40,6 @@
#include "master/allocator.hpp"
#include "master/flags.hpp"
-#include "master/frameworks_manager.hpp"
#include "master/hierarchical_allocator_process.hpp"
#include "master/master.hpp"
@@ -55,8 +54,6 @@ 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;
@@ -1146,21 +1143,6 @@ TEST_F(WhitelistTest, WhitelistSlave)
}
-// FrameworksManager test cases.
-
-class MockFrameworksStorage : public FrameworksStorage
-{
-public:
- // We need this typedef because MOCK_METHOD is a macro.
- typedef map<FrameworkID, FrameworkInfo> Map_FrameworkId_FrameworkInfo;
-
- MOCK_METHOD0(list, Future<Result<Map_FrameworkId_FrameworkInfo> >());
- MOCK_METHOD2(add, Future<Result<bool> >(const FrameworkID&,
- const FrameworkInfo&));
- MOCK_METHOD1(remove, Future<Result<bool> >(const FrameworkID&));
-};
-
-
TEST_F(MasterTest, MasterLost)
{
ASSERT_TRUE(GTEST_IS_THREADSAFE);
@@ -1221,326 +1203,3 @@ TEST_F(MasterTest, MasterLost)
process::terminate(master);
process::wait(master);
}
-
-// This fixture sets up expectations on the storage class
-// and spawns both storage and frameworks manager.
-class FrameworksManagerTestFixture : public ::testing::Test
-{
-protected:
- virtual void SetUp()
- {
- ASSERT_TRUE(GTEST_IS_THREADSAFE);
-
- storage = new MockFrameworksStorage();
- process::spawn(storage);
-
- EXPECT_CALL(*storage, list())
- .WillOnce(Return(Result<map<FrameworkID, FrameworkInfo> >(infos)));
-
- EXPECT_CALL(*storage, add(_, _))
- .WillRepeatedly(Return(Result<bool>::some(true)));
-
- EXPECT_CALL(*storage, remove(_))
- .WillRepeatedly(Return(Result<bool>::some(true)));
-
- manager = new FrameworksManager(storage);
- process::spawn(manager);
- }
-
- virtual void TearDown()
- {
- process::terminate(manager);
- process::wait(manager);
- delete manager;
-
- process::terminate(storage);
- process::wait(storage);
- delete storage;
- }
-
- map<FrameworkID, FrameworkInfo> infos;
-
- MockFrameworksStorage* storage;
- FrameworksManager* manager;
-};
-
-
-TEST_F(FrameworksManagerTestFixture, AddFramework)
-{
- // Test if initially FM returns empty list.
- Future<Result<map<FrameworkID, FrameworkInfo> > > future =
- process::dispatch(manager, &FrameworksManager::list);
-
- ASSERT_TRUE(future.await(Seconds(2.0)));
- EXPECT_TRUE(future.get().get().empty());
-
- // Add a dummy framework.
- FrameworkID id;
- id.set_value("id");
-
- FrameworkInfo info;
- info.set_name("test name");
- info.set_user("test user");
-
- // Add the framework.
- Future<Result<bool> > future2 =
- process::dispatch(manager, &FrameworksManager::add, id, info);
-
- ASSERT_TRUE(future2.await(Seconds(2.0)));
- EXPECT_TRUE(future2.get().get());
-
- // Check if framework manager returns the added framework.
- Future<Result<map<FrameworkID, FrameworkInfo> > > future3 =
- process::dispatch(manager, &FrameworksManager::list);
-
- ASSERT_TRUE(future3.await(Seconds(2.0)));
-
- map<FrameworkID, FrameworkInfo> result = future3.get().get();
-
- ASSERT_EQ(1u, result.count(id));
- EXPECT_EQ("test name", result[id].name());
- EXPECT_EQ("test user", result[id].user());
-
- // Check if the framework exists.
- Future<Result<bool> > future4 =
- process::dispatch(manager, &FrameworksManager::exists, id);
-
- ASSERT_TRUE(future4.await(Seconds(2.0)));
- EXPECT_TRUE(future4.get().get());
-}
-
-
-TEST_F(FrameworksManagerTestFixture, RemoveFramework)
-{
- Clock::pause();
-
- // Remove a non-existent framework.
- FrameworkID id;
- id.set_value("non-existent framework");
-
- Future<Result<bool> > future1 =
- process::dispatch(manager, &FrameworksManager::remove, id, Seconds(0));
-
- ASSERT_TRUE(future1.await(Seconds(2.0)));
- EXPECT_TRUE(future1.get().isError());
-
- // Remove an existing framework.
-
- // First add a dummy framework.
- FrameworkID id2;
- id2.set_value("id2");
-
- FrameworkInfo info2;
- info2.set_name("test name");
- info2.set_user("test user");
-
- // Add the framework.
- Future<Result<bool> > future2 =
- process::dispatch(manager, &FrameworksManager::add, id2, info2);
-
- ASSERT_TRUE(future2.await(Seconds(2.0)));
- EXPECT_TRUE(future2.get().get());
-
- // Now remove the added framework.
- Future<Result<bool> > future3 =
- process::dispatch(manager, &FrameworksManager::remove, id2, Seconds(1.0));
-
- Clock::update(Clock::now(manager) + 1.0);
-
- ASSERT_TRUE(future3.await(Seconds(2.0)));
- EXPECT_TRUE(future2.get().get());
-
- // Now check if the removed framework exists...it shouldn't.
- Future<Result<bool> > future4 =
- process::dispatch(manager, &FrameworksManager::exists, id2);
-
- ASSERT_TRUE(future4.await(Seconds(2.0)));
- EXPECT_FALSE(future4.get().get());
-
- Clock::resume();
-}
-
-
-TEST_F(FrameworksManagerTestFixture, ResurrectFramework)
-{
- // Resurrect a non-existent framework.
- FrameworkID id;
- id.set_value("non-existent framework");
-
- Future<Result<bool> > future1 =
- process::dispatch(manager, &FrameworksManager::resurrect, id);
-
- ASSERT_TRUE(future1.await(Seconds(2.0)));
- EXPECT_FALSE(future1.get().get());
-
- // Resurrect an existent framework that is NOT being removed.
- // Add a dummy framework.
- FrameworkID id2;
- id2.set_value("id2");
-
- FrameworkInfo info2;
- info2.set_name("test name");
- info2.set_user("test user");
-
- // Add the framework.
- Future<Result<bool> > future2 =
- process::dispatch(manager, &FrameworksManager::add, id2, info2);
-
- ASSERT_TRUE(future2.await(Seconds(2.0)));
- EXPECT_TRUE(future2.get().get());
-
- Future<Result<bool> > future3 =
- process::dispatch(manager, &FrameworksManager::resurrect, id2);
-
- ASSERT_TRUE(future3.await(Seconds(2.0)));
- EXPECT_TRUE(future3.get().get());
-}
-
-
-// TODO(vinod): Using a paused clock in the tests means that
-// future.await() may wait forever. This makes debugging hard.
-TEST_F(FrameworksManagerTestFixture, ResurrectExpiringFramework)
-{
- // This is the crucial test.
- // Resurrect an existing framework that is being removed,is being removed,
- // which should cause the remove to be unsuccessful.
-
- // Add a dummy framework.
- FrameworkID id;
- id.set_value("id");
-
- FrameworkInfo info;
- info.set_name("test name");
- info.set_user("test user");
-
- // Add the framework.
- process::dispatch(manager, &FrameworksManager::add, id, info);
-
- Clock::pause();
-
- // Remove after 2 secs.
- Future<Result<bool> > future1 =
- process::dispatch(manager, &FrameworksManager::remove, id, Seconds(2.0));
-
- // Resurrect in the meanwhile.
- Future<Result<bool> > future2 =
- process::dispatch(manager, &FrameworksManager::resurrect, id);
-
- ASSERT_TRUE(future2.await(Seconds(2.0)));
- EXPECT_TRUE(future2.get().get());
-
- Clock::update(Clock::now(manager) + 2.0);
-
- ASSERT_TRUE(future1.await(Seconds(2.0)));
- EXPECT_FALSE(future1.get().get());
-
- Clock::resume();
-}
-
-
-TEST_F(FrameworksManagerTestFixture, ResurrectInterspersedExpiringFrameworks)
-{
- // This is another crucial test.
- // Two remove messages are interspersed with a resurrect.
- // Only the second remove should actually remove the framework.
-
- // Add a dummy framework.
- FrameworkID id;
- id.set_value("id");
-
- FrameworkInfo info;
- info.set_name("test name");
- info.set_user("test user");
-
- // Add the framework.
- process::dispatch(manager, &FrameworksManager::add, id, info);
-
- Clock::pause();
-
- Future<Result<bool> > future1 =
- process::dispatch(manager, &FrameworksManager::remove, id, Seconds(2.0));
-
- // Resurrect in the meanwhile.
- Future<Result<bool> > future2 =
- process::dispatch(manager, &FrameworksManager::resurrect, id);
-
- // Remove again.
- Future<Result<bool> > future3 =
- process::dispatch(manager, &FrameworksManager::remove, id, Seconds(1.0));
-
- ASSERT_TRUE(future2.await(Seconds(2.0)));
- EXPECT_TRUE(future2.get().get());
-
- Clock::update(Clock::now(manager) + 1.0);
-
- ASSERT_TRUE(future3.await(Seconds(2.0)));
- EXPECT_TRUE(future3.get().get());
-
- Clock::update(Clock::now(manager) + 2.0);
-
- ASSERT_TRUE(future1.await(Seconds(2.0)));
- EXPECT_FALSE(future1.get().get());
-
- Clock::resume();
-}
-
-
-// Not deriving from fixture...because we want to set specific expectations.
-// Specifically we simulate caching failure in FrameworksManager.
-TEST(FrameworksManagerTest, CacheFailure)
-{
- ASSERT_TRUE(GTEST_IS_THREADSAFE);
-
- MockFrameworksStorage storage;
- process::spawn(storage);
-
- EXPECT_CALL(storage, list())
- .Times(2)
- .WillRepeatedly(Return(Error("Fake Caching Error")));
-
- EXPECT_CALL(storage, add(_, _))
- .WillOnce(Return(Result<bool>::some(true)));
-
- EXPECT_CALL(storage, remove(_))
- .Times(0);
-
- FrameworksManager manager(&storage);
- process::spawn(manager);
-
- // Test if initially FrameworksManager returns error.
- Future<Result<map<FrameworkID, FrameworkInfo> > > future1 =
- process::dispatch(manager, &FrameworksManager::list);
-
- ASSERT_TRUE(future1.await(Seconds(2.0)));
- ASSERT_TRUE(future1.get().isError());
- EXPECT_EQ(future1.get().error(), "Error caching framework infos");
-
- // Add framework should function normally despite caching failure.
- FrameworkID id;
- id.set_value("id");
-
- FrameworkInfo info;
- info.set_name("test name");
- info.set_user("test user");
-
- // Add the framework.
- Future<Result<bool> > future2 =
- process::dispatch(manager, &FrameworksManager::add, id, info);
-
- ASSERT_TRUE(future2.await(Seconds(2.0)));
- EXPECT_TRUE(future2.get().get());
-
- // Remove framework should fail due to caching failure.
- Future<Result<bool> > future3 =
- process::dispatch(manager, &FrameworksManager::remove, id, Seconds(0));
-
- ASSERT_TRUE(future3.await(Seconds(2.0)));
- ASSERT_TRUE(future3.get().isError());
- EXPECT_EQ(future3.get().error(), "Error caching framework infos");
-
- process::terminate(manager);
- process::wait(manager);
-
- process::terminate(storage);
- process::wait(storage);
-}