You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ch...@apache.org on 2018/09/22 06:34:08 UTC
[mesos] 04/10: Set master/agent flags in
`AgentResourceProviderConfigApiTest` fixture.
This is an automated email from the ASF dual-hosted git repository.
chhsiao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit c174b9d3a7eb842b6de66256f0373c5e12b00cce
Author: Chun-Hung Hsiao <ch...@mesosphere.io>
AuthorDate: Wed Sep 19 18:07:50 2018 -0700
Set master/agent flags in `AgentResourceProviderConfigApiTest` fixture.
Review: https://reviews.apache.org/r/68777
---
.../agent_resource_provider_config_api_tests.cpp | 206 ++++++++++-----------
1 file changed, 94 insertions(+), 112 deletions(-)
diff --git a/src/tests/agent_resource_provider_config_api_tests.cpp b/src/tests/agent_resource_provider_config_api_tests.cpp
index d4a8cae..0c1ad4c 100644
--- a/src/tests/agent_resource_provider_config_api_tests.cpp
+++ b/src/tests/agent_resource_provider_config_api_tests.cpp
@@ -76,7 +76,66 @@ public:
resourceProviderConfigDir =
path::join(sandbox.get(), "resource_provider_configs");
- ASSERT_SOME(os::mkdir(resourceProviderConfigDir));
+ ASSERT_SOME(os::mkdir(resourceProviderConfigDir.get()));
+ }
+
+ void TearDown() override
+ {
+ foreach (const string& slaveWorkDir, slaveWorkDirs) {
+ // Clean up CSI endpoint directories if there is any.
+ const string csiRootDir = slave::paths::getCsiRootDir(slaveWorkDir);
+
+ Try<list<string>> csiContainerPaths =
+ csi::paths::getContainerPaths(csiRootDir, "*", "*");
+ ASSERT_SOME(csiContainerPaths);
+
+ foreach (const string& path, csiContainerPaths.get()) {
+ Try<csi::paths::ContainerPath> containerPath =
+ csi::paths::parseContainerPath(csiRootDir, path);
+ ASSERT_SOME(containerPath);
+
+ Result<string> endpointDir =
+ os::realpath(csi::paths::getEndpointDirSymlinkPath(
+ csiRootDir,
+ containerPath->type,
+ containerPath->name,
+ containerPath->containerId));
+
+ if (endpointDir.isSome()) {
+ ASSERT_SOME(os::rmdir(endpointDir.get()));
+ }
+ }
+ }
+
+ ContainerizerTest<slave::MesosContainerizer>::TearDown();
+ }
+
+ master::Flags CreateMasterFlags() override
+ {
+ master::Flags flags =
+ ContainerizerTest<slave::MesosContainerizer>::CreateMasterFlags();
+
+ // Use a small allocation interval to speed up the test. We do this instead
+ // of manipulating the clock because the storage local resource provider
+ // relies on a running clock to wait for the CSI plugin to be ready.
+ flags.allocation_interval = Milliseconds(50);
+
+ return flags;
+ }
+
+ slave::Flags CreateSlaveFlags() override
+ {
+ slave::Flags flags =
+ ContainerizerTest<slave::MesosContainerizer>::CreateSlaveFlags();
+
+ flags.resource_provider_config_dir = resourceProviderConfigDir;
+
+ // Store the agent work directory for cleaning up CSI endpoint
+ // directories during teardown.
+ // NOTE: DO NOT change the work directory afterward.
+ slaveWorkDirs.push_back(flags.work_dir);
+
+ return flags;
}
ResourceProviderInfo createResourceProviderInfo(const string& volumes)
@@ -85,7 +144,7 @@ public:
// This extra closure is necessary in order to use `ASSERT_*`, as
// these macros require a void return type.
- [&]() {
+ [&] {
// Randomize the plugin name so we get a clean work directory for
// each created config.
const string testCsiPluginName =
@@ -176,50 +235,6 @@ public:
return info.get();
}
- void TearDown() override
- {
- foreach (const string& slaveWorkDir, slaveWorkDirs) {
- // Clean up CSI endpoint directories if there is any.
- const string csiRootDir = slave::paths::getCsiRootDir(slaveWorkDir);
-
- Try<list<string>> csiContainerPaths =
- csi::paths::getContainerPaths(csiRootDir, "*", "*");
- ASSERT_SOME(csiContainerPaths);
-
- foreach (const string& path, csiContainerPaths.get()) {
- Try<csi::paths::ContainerPath> containerPath =
- csi::paths::parseContainerPath(csiRootDir, path);
- ASSERT_SOME(containerPath);
-
- Result<string> endpointDir =
- os::realpath(csi::paths::getEndpointDirSymlinkPath(
- csiRootDir,
- containerPath->type,
- containerPath->name,
- containerPath->containerId));
-
- if (endpointDir.isSome()) {
- ASSERT_SOME(os::rmdir(endpointDir.get()));
- }
- }
- }
-
- ContainerizerTest<slave::MesosContainerizer>::TearDown();
- }
-
- slave::Flags CreateSlaveFlags() override
- {
- slave::Flags flags =
- ContainerizerTest<slave::MesosContainerizer>::CreateSlaveFlags();
-
- // Store the agent work directory for cleaning up CSI endpoint
- // directories during teardown.
- // NOTE: DO NOT change the work directory afterward.
- slaveWorkDirs.push_back(flags.work_dir);
-
- return flags;
- }
-
Future<http::Response> addResourceProviderConfig(
const PID<Slave>& pid,
const ContentType& contentType,
@@ -286,7 +301,7 @@ public:
protected:
vector<string> slaveWorkDirs;
- string resourceProviderConfigDir;
+ Option<string> resourceProviderConfigDir;
};
@@ -302,21 +317,15 @@ TEST_P(AgentResourceProviderConfigApiTest, Add)
{
const ContentType contentType = GetParam();
- master::Flags masterFlags = CreateMasterFlags();
- masterFlags.allocation_interval = Milliseconds(50);
-
- Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
Owned<MasterDetector> detector = master.get()->createDetector();
- slave::Flags slaveFlags = CreateSlaveFlags();
- slaveFlags.resource_provider_config_dir = resourceProviderConfigDir;
-
Future<SlaveRegisteredMessage> slaveRegisteredMessage =
FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
- Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
+ Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
AWAIT_READY(slaveRegisteredMessage);
@@ -358,7 +367,7 @@ TEST_P(AgentResourceProviderConfigApiTest, Add)
// Check that a new config file is created.
Try<list<string>> configPaths =
- fs::list(path::join(resourceProviderConfigDir, "*"));
+ fs::list(path::join(resourceProviderConfigDir.get(), "*"));
ASSERT_SOME(configPaths);
EXPECT_EQ(1u, configPaths->size());
@@ -391,13 +400,13 @@ TEST_P(AgentResourceProviderConfigApiTest, IdempotentAdd)
Owned<MasterDetector> detector = master.get()->createDetector();
- slave::Flags slaveFlags = CreateSlaveFlags();
- slaveFlags.resource_provider_config_dir = resourceProviderConfigDir;
-
// Generate a pre-existing config.
- const string configPath = path::join(resourceProviderConfigDir, "test.json");
ResourceProviderInfo info = createResourceProviderInfo("volume1:4GB");
- ASSERT_SOME(os::write(configPath, stringify(JSON::protobuf(info))));
+ ASSERT_SOME(os::write(
+ path::join(resourceProviderConfigDir.get(), "test.json"),
+ stringify(JSON::protobuf(info))));
+
+ slave::Flags slaveFlags = CreateSlaveFlags();
// Since the local resource provider daemon is started after the agent is
// registered, it is guaranteed that the slave will send two
@@ -447,26 +456,21 @@ TEST_P(AgentResourceProviderConfigApiTest, AddConflict)
{
const ContentType contentType = GetParam();
- master::Flags masterFlags = CreateMasterFlags();
- masterFlags.allocation_interval = Milliseconds(50);
-
- Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
Owned<MasterDetector> detector = master.get()->createDetector();
- slave::Flags slaveFlags = CreateSlaveFlags();
- slaveFlags.resource_provider_config_dir = resourceProviderConfigDir;
-
// Generate a pre-existing config.
- const string configPath = path::join(resourceProviderConfigDir, "test.json");
+ const string configPath =
+ path::join(resourceProviderConfigDir.get(), "test.json");
ResourceProviderInfo oldInfo = createResourceProviderInfo("volume1:4GB");
ASSERT_SOME(os::write(configPath, stringify(JSON::protobuf(oldInfo))));
Future<SlaveRegisteredMessage> slaveRegisteredMessage =
FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
- Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
+ Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
AWAIT_READY(slaveRegisteredMessage);
@@ -480,7 +484,7 @@ TEST_P(AgentResourceProviderConfigApiTest, AddConflict)
// Check that no new config is created, and the existing one is not
// overwritten.
Try<list<string>> configPaths =
- fs::list(path::join(resourceProviderConfigDir, "*"));
+ fs::list(path::join(resourceProviderConfigDir.get(), "*"));
ASSERT_SOME(configPaths);
EXPECT_EQ(1u, configPaths->size());
EXPECT_EQ(configPath, configPaths->back());
@@ -503,19 +507,14 @@ TEST_P(AgentResourceProviderConfigApiTest, Update)
{
const ContentType contentType = GetParam();
- master::Flags masterFlags = CreateMasterFlags();
- masterFlags.allocation_interval = Milliseconds(50);
-
- Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
Owned<MasterDetector> detector = master.get()->createDetector();
- slave::Flags slaveFlags = CreateSlaveFlags();
- slaveFlags.resource_provider_config_dir = resourceProviderConfigDir;
-
// Generate a pre-existing config.
- const string configPath = path::join(resourceProviderConfigDir, "test.json");
+ const string configPath =
+ path::join(resourceProviderConfigDir.get(), "test.json");
ASSERT_SOME(os::write(
configPath,
stringify(JSON::protobuf(createResourceProviderInfo("volume1:4GB")))));
@@ -523,7 +522,7 @@ TEST_P(AgentResourceProviderConfigApiTest, Update)
Future<SlaveRegisteredMessage> slaveRegisteredMessage =
FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
- Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
+ Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
AWAIT_READY(slaveRegisteredMessage);
@@ -579,7 +578,7 @@ TEST_P(AgentResourceProviderConfigApiTest, Update)
// Check that no new config is created, and the existing one is overwritten.
Try<list<string>> configPaths =
- fs::list(path::join(resourceProviderConfigDir, "*"));
+ fs::list(path::join(resourceProviderConfigDir.get(), "*"));
ASSERT_SOME(configPaths);
EXPECT_EQ(1u, configPaths->size());
EXPECT_EQ(configPath, configPaths->back());
@@ -620,13 +619,13 @@ TEST_P(AgentResourceProviderConfigApiTest, IdempotentUpdate)
Owned<MasterDetector> detector = master.get()->createDetector();
- slave::Flags slaveFlags = CreateSlaveFlags();
- slaveFlags.resource_provider_config_dir = resourceProviderConfigDir;
-
// Generate a pre-existing config.
- const string configPath = path::join(resourceProviderConfigDir, "test.json");
ResourceProviderInfo info = createResourceProviderInfo("volume1:4GB");
- ASSERT_SOME(os::write(configPath, stringify(JSON::protobuf(info))));
+ ASSERT_SOME(os::write(
+ path::join(resourceProviderConfigDir.get(), "test.json"),
+ stringify(JSON::protobuf(info))));
+
+ slave::Flags slaveFlags = CreateSlaveFlags();
// Since the local resource provider daemon is started after the agent is
// registered, it is guaranteed that the slave will send two
@@ -676,21 +675,15 @@ TEST_P(AgentResourceProviderConfigApiTest, UpdateNotFound)
{
const ContentType contentType = GetParam();
- master::Flags masterFlags = CreateMasterFlags();
- masterFlags.allocation_interval = Milliseconds(50);
-
- Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
Owned<MasterDetector> detector = master.get()->createDetector();
- slave::Flags slaveFlags = CreateSlaveFlags();
- slaveFlags.resource_provider_config_dir = resourceProviderConfigDir;
-
Future<SlaveRegisteredMessage> slaveRegisteredMessage =
FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
- Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
+ Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
AWAIT_READY(slaveRegisteredMessage);
@@ -703,7 +696,7 @@ TEST_P(AgentResourceProviderConfigApiTest, UpdateNotFound)
// Check that no new config is created.
Try<list<string>> configPaths =
- fs::list(path::join(resourceProviderConfigDir, "*"));
+ fs::list(path::join(resourceProviderConfigDir.get(), "*"));
ASSERT_SOME(configPaths);
EXPECT_TRUE(configPaths->empty());
}
@@ -714,26 +707,21 @@ TEST_P(AgentResourceProviderConfigApiTest, Remove)
{
const ContentType contentType = GetParam();
- master::Flags masterFlags = CreateMasterFlags();
- masterFlags.allocation_interval = Milliseconds(50);
-
- Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
Owned<MasterDetector> detector = master.get()->createDetector();
- slave::Flags slaveFlags = CreateSlaveFlags();
- slaveFlags.resource_provider_config_dir = resourceProviderConfigDir;
-
// Generate a pre-existing config.
- const string configPath = path::join(resourceProviderConfigDir, "test.json");
+ const string configPath =
+ path::join(resourceProviderConfigDir.get(), "test.json");
ResourceProviderInfo info = createResourceProviderInfo("volume1:4GB");
ASSERT_SOME(os::write(configPath, stringify(JSON::protobuf(info))));
Future<SlaveRegisteredMessage> slaveRegisteredMessage =
FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
- Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
+ Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
AWAIT_READY(slaveRegisteredMessage);
@@ -794,21 +782,15 @@ TEST_P(AgentResourceProviderConfigApiTest, IdempotentRemove)
{
const ContentType contentType = GetParam();
- master::Flags masterFlags = CreateMasterFlags();
- masterFlags.allocation_interval = Milliseconds(50);
-
- Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
Owned<MasterDetector> detector = master.get()->createDetector();
- slave::Flags slaveFlags = CreateSlaveFlags();
- slaveFlags.resource_provider_config_dir = resourceProviderConfigDir;
-
Future<SlaveRegisteredMessage> slaveRegisteredMessage =
FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
- Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
+ Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
AWAIT_READY(slaveRegisteredMessage);