You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by ma...@apache.org on 2016/03/04 23:47:19 UTC
aurora git commit: AURORA-1616: [part 2] make tier_config mandatory
argument when starting up the scheduler.
Repository: aurora
Updated Branches:
refs/heads/master c624414b5 -> a91a759d0
AURORA-1616: [part 2] make tier_config mandatory argument when starting up the scheduler.
Reviewed at https://reviews.apache.org/r/43925/
Project: http://git-wip-us.apache.org/repos/asf/aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/a91a759d
Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/a91a759d
Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/a91a759d
Branch: refs/heads/master
Commit: a91a759d0a92727a8b0434bbe5d581b8a5289bf3
Parents: c624414
Author: Amol Deshmukh <am...@apache.org>
Authored: Fri Mar 4 14:42:44 2016 -0800
Committer: Maxim Khutornenko <ma...@apache.org>
Committed: Fri Mar 4 14:42:44 2016 -0800
----------------------------------------------------------------------
docs/deploying-aurora-scheduler.md | 2 +-
.../upstart/aurora-scheduler-kerberos.conf | 2 +-
examples/vagrant/upstart/aurora-scheduler.conf | 2 +-
.../aurora/benchmark/SchedulingBenchmarks.java | 9 +--
.../aurora/benchmark/StatusUpdateBenchmark.java | 8 +--
.../apache/aurora/scheduler/TierManager.java | 19 +++---
.../org/apache/aurora/scheduler/TierModule.java | 46 ++++++++-------
.../aurora/scheduler/base/TaskTestUtil.java | 3 +
.../org/apache/aurora/scheduler/tiers.json | 13 +++++
.../aurora/scheduler/SchedulerModuleTest.java | 44 --------------
.../aurora/scheduler/TierManagerTest.java | 35 ++++-------
.../apache/aurora/scheduler/TierModuleTest.java | 61 ++++++++++++++++++++
.../aurora/scheduler/app/SchedulerIT.java | 3 +-
.../org/apache/aurora/scheduler/tiers.json | 9 ---
14 files changed, 131 insertions(+), 125 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/docs/deploying-aurora-scheduler.md
----------------------------------------------------------------------
diff --git a/docs/deploying-aurora-scheduler.md b/docs/deploying-aurora-scheduler.md
index 883e0f3..10952ef 100644
--- a/docs/deploying-aurora-scheduler.md
+++ b/docs/deploying-aurora-scheduler.md
@@ -250,7 +250,7 @@ Specify a tier configuration file path:
-tier_config=path/to/tiers/config.json
-Example [tier configuration file](../src/test/resources/org/apache/aurora/scheduler/tiers.json).
+Default [tier configuration file](../src/main/resources/org/apache/aurora/scheduler/tiers.json).
### Maintaining an Aurora Installation
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/examples/vagrant/upstart/aurora-scheduler-kerberos.conf
----------------------------------------------------------------------
diff --git a/examples/vagrant/upstart/aurora-scheduler-kerberos.conf b/examples/vagrant/upstart/aurora-scheduler-kerberos.conf
index d57ef37..eec5ee3 100644
--- a/examples/vagrant/upstart/aurora-scheduler-kerberos.conf
+++ b/examples/vagrant/upstart/aurora-scheduler-kerberos.conf
@@ -53,4 +53,4 @@ exec bin/aurora-scheduler \
-kerberos_server_keytab=/home/vagrant/krb5-1.13.1/build/testdir/HTTP-aurora.local.keytab \
-kerberos_server_principal=HTTP/aurora.local@KRBTEST.COM \
-enable_h2_console=true \
- -tier_config=/home/vagrant/aurora/src/test/resources/org/apache/aurora/scheduler/tiers.json
+ -tier_config=/home/vagrant/aurora/src/main/resources/org/apache/aurora/scheduler/tiers.json
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/examples/vagrant/upstart/aurora-scheduler.conf
----------------------------------------------------------------------
diff --git a/examples/vagrant/upstart/aurora-scheduler.conf b/examples/vagrant/upstart/aurora-scheduler.conf
index 54fcde6..7e10b2c 100644
--- a/examples/vagrant/upstart/aurora-scheduler.conf
+++ b/examples/vagrant/upstart/aurora-scheduler.conf
@@ -46,6 +46,6 @@ exec bin/aurora-scheduler \
-use_beta_db_task_store=true \
-shiro_ini_path=etc/shiro.example.ini \
-enable_h2_console=true \
- -tier_config=/home/vagrant/aurora/src/test/resources/org/apache/aurora/scheduler/tiers.json \
+ -tier_config=/home/vagrant/aurora/src/main/resources/org/apache/aurora/scheduler/tiers.json \
-mesos_role=aurora-role \
-receive_revocable_resources=true
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java
----------------------------------------------------------------------
diff --git a/src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java b/src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java
index 45ab76b..1d725c0 100644
--- a/src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java
+++ b/src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java
@@ -35,9 +35,10 @@ import org.apache.aurora.common.util.Clock;
import org.apache.aurora.common.util.testing.FakeClock;
import org.apache.aurora.scheduler.HostOffer;
import org.apache.aurora.scheduler.TaskIdGenerator;
-import org.apache.aurora.scheduler.TierManager;
+import org.apache.aurora.scheduler.TierModule;
import org.apache.aurora.scheduler.async.AsyncModule;
import org.apache.aurora.scheduler.async.DelayExecutor;
+import org.apache.aurora.scheduler.base.TaskTestUtil;
import org.apache.aurora.scheduler.configuration.executor.ExecutorSettings;
import org.apache.aurora.scheduler.events.EventSink;
import org.apache.aurora.scheduler.filter.SchedulingFilter;
@@ -109,6 +110,7 @@ public class SchedulingBenchmarks {
Injector injector = Guice.createInjector(
new StateModule(),
new PreemptorModule(true, NO_DELAY, NO_DELAY),
+ new TierModule(TaskTestUtil.DEV_TIER_CONFIG),
new PrivateModule() {
@Override
protected void configure() {
@@ -133,11 +135,6 @@ public class SchedulingBenchmarks {
new BiCache.BiCacheSettings(DELAY_FOREVER, ""));
bind(TaskScheduler.class).to(TaskScheduler.TaskSchedulerImpl.class);
bind(TaskScheduler.TaskSchedulerImpl.class).in(Singleton.class);
- bind(TierManager.class).to(TierManager.TierManagerImpl.class);
- bind(TierManager.TierManagerImpl.class).in(Singleton.class);
- bind(TierManager.TierManagerImpl.TierConfig.class)
- .toInstance(TierManager.TierManagerImpl.TierConfig.EMPTY);
- expose(TierManager.class);
expose(TaskScheduler.class);
expose(OfferManager.class);
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java
----------------------------------------------------------------------
diff --git a/src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java b/src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java
index f408453..f6c8e9f 100644
--- a/src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java
+++ b/src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java
@@ -49,8 +49,9 @@ import org.apache.aurora.gen.ScheduleStatus;
import org.apache.aurora.scheduler.TaskIdGenerator;
import org.apache.aurora.scheduler.TaskStatusHandler;
import org.apache.aurora.scheduler.TaskStatusHandlerImpl;
-import org.apache.aurora.scheduler.TierManager;
+import org.apache.aurora.scheduler.TierModule;
import org.apache.aurora.scheduler.base.AsyncUtil;
+import org.apache.aurora.scheduler.base.TaskTestUtil;
import org.apache.aurora.scheduler.configuration.executor.ExecutorSettings;
import org.apache.aurora.scheduler.events.EventSink;
import org.apache.aurora.scheduler.events.PubsubEvent;
@@ -172,6 +173,7 @@ public class StatusUpdateBenchmark {
Injector injector = Guice.createInjector(
new StateModule(),
+ new TierModule(TaskTestUtil.DEV_TIER_CONFIG),
new AbstractModule() {
@Override
protected void configure() {
@@ -215,10 +217,6 @@ public class StatusUpdateBenchmark {
.toInstance(1000);
bind(TaskStatusHandler.class).to(TaskStatusHandlerImpl.class);
bind(TaskStatusHandlerImpl.class).in(Singleton.class);
- bind(TierManager.class).to(TierManager.TierManagerImpl.class);
- bind(TierManager.TierManagerImpl.class).in(Singleton.class);
- bind(TierManager.TierManagerImpl.TierConfig.class)
- .toInstance(TierManager.TierManagerImpl.TierConfig.EMPTY);
}
}
);
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/main/java/org/apache/aurora/scheduler/TierManager.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/TierManager.java b/src/main/java/org/apache/aurora/scheduler/TierManager.java
index fce6e51..480c485 100644
--- a/src/main/java/org/apache/aurora/scheduler/TierManager.java
+++ b/src/main/java/org/apache/aurora/scheduler/TierManager.java
@@ -24,9 +24,10 @@ import org.apache.aurora.scheduler.storage.entities.ITaskConfig;
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonProperty;
+import static java.lang.String.format;
import static java.util.Objects.requireNonNull;
-import static org.apache.aurora.scheduler.TierInfo.DEFAULT;
+import static com.google.common.base.Preconditions.checkArgument;
/**
* Translates job tier configuration into a set of task traits/attributes.
@@ -46,14 +47,12 @@ public interface TierManager {
@VisibleForTesting
public static class TierConfig {
- @VisibleForTesting
- public static final TierConfig EMPTY = new TierConfig(ImmutableMap.of());
-
private final Map<String, TierInfo> tiers;
@VisibleForTesting
@JsonCreator
public TierConfig(@JsonProperty("tiers") Map<String, TierInfo> tiers) {
+ checkArgument(!tiers.isEmpty(), "Tiers cannot be empty.");
this.tiers = ImmutableMap.copyOf(tiers);
}
@@ -70,14 +69,12 @@ public interface TierManager {
@Override
public TierInfo getTier(ITaskConfig taskConfig) {
- if (taskConfig.isSetTier()) {
- // The default behavior in case of tier config file absence or tier name mismatch is to use
- // non-revocable resources. This is subject to change once the feature is ready.
- // Tracked by AURORA-1443.
- return tierConfig.tiers.getOrDefault(taskConfig.getTier(), DEFAULT);
- }
+ checkArgument(
+ !taskConfig.isSetTier() || tierConfig.tiers.containsKey(taskConfig.getTier()),
+ format("Invalid tier '%s' in TaskConfig.", taskConfig.getTier()));
- return DEFAULT;
+ // Backward compatibility mode until tier is required in TaskConfig (AURORA-1624).
+ return taskConfig.isSetTier() ? tierConfig.tiers.get(taskConfig.getTier()) : TierInfo.DEFAULT;
}
}
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/main/java/org/apache/aurora/scheduler/TierModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/TierModule.java b/src/main/java/org/apache/aurora/scheduler/TierModule.java
index b5f065e..d956664 100644
--- a/src/main/java/org/apache/aurora/scheduler/TierModule.java
+++ b/src/main/java/org/apache/aurora/scheduler/TierModule.java
@@ -18,9 +18,10 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
+import com.google.common.base.Strings;
import com.google.common.base.Throwables;
import com.google.common.io.Files;
+import com.google.common.io.Resources;
import com.google.inject.AbstractModule;
import org.apache.aurora.common.args.Arg;
@@ -34,12 +35,17 @@ import org.slf4j.LoggerFactory;
import static java.util.Objects.requireNonNull;
+import static com.google.common.base.Preconditions.checkArgument;
+
/**
* Binding module for tier management.
*/
public class TierModule extends AbstractModule {
private static final Logger LOG = LoggerFactory.getLogger(TierModule.class);
+ @VisibleForTesting
+ static final String TIER_CONFIG_PATH = "org/apache/aurora/scheduler/tiers.json";
+
@CanRead
@CmdLine(name = "tier_config",
help = "Configuration file defining supported task tiers, task traits and behaviors.")
@@ -61,29 +67,27 @@ public class TierModule extends AbstractModule {
bind(TierManager.class).toInstance(new TierManagerImpl(tierConfig));
}
- static Optional<String> readTierFile() {
- if (TIER_CONFIG_FILE.hasAppliedValue()) {
- try {
- return Optional.of(Files.toString(TIER_CONFIG_FILE.get(), StandardCharsets.UTF_8));
- } catch (IOException e) {
- LOG.error("Error loading tier configuration file.");
- throw Throwables.propagate(e);
- }
+ static String readTierFile() {
+ try {
+ return TIER_CONFIG_FILE.hasAppliedValue()
+ ? Files.toString(TIER_CONFIG_FILE.get(), StandardCharsets.UTF_8)
+ : Resources.toString(
+ TierModule.class.getClassLoader().getResource(TIER_CONFIG_PATH),
+ StandardCharsets.UTF_8);
+ } catch (IOException e) {
+ LOG.error("Error loading tier configuration file.");
+ throw Throwables.propagate(e);
}
-
- return Optional.<String>absent();
}
@VisibleForTesting
- static TierConfig parseTierConfig(Optional<String> config) {
- Optional<TierConfig> map = config.transform(input -> {
- try {
- return new ObjectMapper().readValue(input, TierConfig.class);
- } catch (IOException e) {
- LOG.error("Error parsing tier configuration file.");
- throw Throwables.propagate(e);
- }
- });
- return map.or(TierConfig.EMPTY);
+ static TierConfig parseTierConfig(String config) {
+ checkArgument(!Strings.isNullOrEmpty(config), "configuration cannot be empty");
+ try {
+ return new ObjectMapper().readValue(config, TierConfig.class);
+ } catch (IOException e) {
+ LOG.error("Error parsing tier configuration file.");
+ throw Throwables.propagate(e);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java b/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
index 4c64a1c..1de6966 100644
--- a/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
+++ b/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
@@ -35,6 +35,7 @@ import org.apache.aurora.gen.TaskConstraint;
import org.apache.aurora.gen.TaskEvent;
import org.apache.aurora.gen.ValueConstraint;
import org.apache.aurora.scheduler.TierInfo;
+import org.apache.aurora.scheduler.TierManager.TierManagerImpl.TierConfig;
import org.apache.aurora.scheduler.configuration.ConfigurationManager;
import org.apache.aurora.scheduler.storage.entities.IJobKey;
import org.apache.aurora.scheduler.storage.entities.IScheduledTask;
@@ -50,6 +51,8 @@ public final class TaskTestUtil {
public static final IJobKey JOB = JobKeys.from("role", "env", "job");
public static final TierInfo REVOCABLE_TIER = new TierInfo(true);
+ public static final TierConfig DEV_TIER_CONFIG =
+ new TierConfig(ImmutableMap.of("tier-dev", new TierInfo(false)));
public static final ConfigurationManager CONFIGURATION_MANAGER =
new ConfigurationManager(ImmutableSet.of(_Fields.MESOS), false, ImmutableMultimap.of());
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/main/resources/org/apache/aurora/scheduler/tiers.json
----------------------------------------------------------------------
diff --git a/src/main/resources/org/apache/aurora/scheduler/tiers.json b/src/main/resources/org/apache/aurora/scheduler/tiers.json
new file mode 100644
index 0000000..1870105
--- /dev/null
+++ b/src/main/resources/org/apache/aurora/scheduler/tiers.json
@@ -0,0 +1,13 @@
+{
+ "tiers":
+ {
+ "preferred":
+ {
+ "revocable": false
+ },
+ "revocable":
+ {
+ "revocable": true
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/test/java/org/apache/aurora/scheduler/SchedulerModuleTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/SchedulerModuleTest.java b/src/test/java/org/apache/aurora/scheduler/SchedulerModuleTest.java
deleted file mode 100644
index aa6e035..0000000
--- a/src/test/java/org/apache/aurora/scheduler/SchedulerModuleTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.aurora.scheduler;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-
-import org.junit.Test;
-
-import static org.apache.aurora.scheduler.TierModule.parseTierConfig;
-import static org.apache.aurora.scheduler.base.TaskTestUtil.REVOCABLE_TIER;
-import static org.junit.Assert.assertEquals;
-
-public class SchedulerModuleTest {
- @Test
- public void testNoTierConfigFile() {
- assertEquals(ImmutableMap.of(), parseTierConfig(Optional.absent()).getTiers());
- }
-
- @Test
- public void testTierConfigFile() {
- assertEquals(
- ImmutableMap.of("revocable", REVOCABLE_TIER),
- parseTierConfig(Optional.of("{\"tiers\":{\"revocable\": {\"revocable\": true}}}"))
- .getTiers());
- }
-
- @Test(expected = RuntimeException.class)
- public void testTierConfigExtraKeysNotAllowed() {
- parseTierConfig(
- Optional.of("{\"tiers\":{\"revocable\": {\"revocable\": true, \"foo\": false}}}"));
- }
-}
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/test/java/org/apache/aurora/scheduler/TierManagerTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/TierManagerTest.java b/src/test/java/org/apache/aurora/scheduler/TierManagerTest.java
index 4da829f..a662100 100644
--- a/src/test/java/org/apache/aurora/scheduler/TierManagerTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/TierManagerTest.java
@@ -13,52 +13,39 @@
*/
package org.apache.aurora.scheduler;
-import com.google.common.base.Optional;
-
import org.apache.aurora.gen.TaskConfig;
import org.apache.aurora.scheduler.TierManager.TierManagerImpl;
-import org.apache.aurora.scheduler.TierManager.TierManagerImpl.TierConfig;
import org.apache.aurora.scheduler.storage.entities.ITaskConfig;
import org.junit.Test;
-import static org.apache.aurora.scheduler.TierInfo.DEFAULT;
import static org.apache.aurora.scheduler.TierModule.parseTierConfig;
import static org.apache.aurora.scheduler.base.TaskTestUtil.REVOCABLE_TIER;
import static org.junit.Assert.assertEquals;
public class TierManagerTest {
-
@Test
public void testRevocable() {
TierManager manager = new TierManagerImpl(
- parseTierConfig(Optional.of("{\"tiers\":{\"revocable\": {\"revocable\": true}}}")));
+ parseTierConfig("{\"tiers\":{"
+ + "\"revocable\": {\"revocable\": true},"
+ + "\"preferred\": {\"revocable\": false}"
+ + "}}"));
assertEquals(
REVOCABLE_TIER,
manager.getTier(ITaskConfig.build(new TaskConfig().setTier("revocable"))));
}
- @Test
+ @Test(expected = IllegalArgumentException.class)
public void testNameMismatch() {
TierManager manager = new TierManagerImpl(
- parseTierConfig(Optional.of("{\"tiers\":{\"revocable\": {\"revocable\": true}}}")));
- assertEquals(
- DEFAULT,
- manager.getTier(ITaskConfig.build(new TaskConfig().setTier("Revocable"))));
+ parseTierConfig("{\"tiers\":{\"revocable\": {\"revocable\": true}}}"));
+ manager.getTier(ITaskConfig.build(new TaskConfig().setTier("Revocable")));
}
@Test
- public void testDefaultTier() {
- TierManager manager = new TierManagerImpl(TierConfig.EMPTY);
- assertEquals(
- DEFAULT,
- manager.getTier(ITaskConfig.build(new TaskConfig().setTier("revocable"))));
- }
-
- @Test
- public void testNoTier() {
- TierManager manager = new TierManagerImpl(TierConfig.EMPTY);
- assertEquals(
- DEFAULT,
- manager.getTier(ITaskConfig.build(new TaskConfig())));
+ public void testNoTierInTaskConfig() {
+ TierManager manager = new TierManagerImpl(
+ parseTierConfig("{\"tiers\":{\"revocable\": {\"revocable\": true}}}"));
+ assertEquals(TierInfo.DEFAULT, manager.getTier(ITaskConfig.build(new TaskConfig())));
}
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/test/java/org/apache/aurora/scheduler/TierModuleTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/TierModuleTest.java b/src/test/java/org/apache/aurora/scheduler/TierModuleTest.java
new file mode 100644
index 0000000..e0601c8
--- /dev/null
+++ b/src/test/java/org/apache/aurora/scheduler/TierModuleTest.java
@@ -0,0 +1,61 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aurora.scheduler;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+
+import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.io.Files;
+
+import org.junit.Test;
+
+import static org.apache.aurora.scheduler.TierModule.TIER_CONFIG_PATH;
+import static org.apache.aurora.scheduler.TierModule.parseTierConfig;
+import static org.apache.aurora.scheduler.TierModule.readTierFile;
+import static org.apache.aurora.scheduler.base.TaskTestUtil.REVOCABLE_TIER;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+public class TierModuleTest {
+
+ @Test
+ public void testTierConfigArgumentNotSpecified() throws Exception {
+ String tierFileContents = readTierFile();
+ assertFalse(Strings.isNullOrEmpty(tierFileContents));
+ assertEquals(
+ tierFileContents,
+ Files.toString(
+ new File(TierModule.class.getClassLoader().getResource(TIER_CONFIG_PATH).getFile()),
+ StandardCharsets.UTF_8));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testEmptyTierConfigFile() {
+ parseTierConfig("");
+ }
+
+ @Test
+ public void testTierConfigFile() {
+ assertEquals(
+ ImmutableMap.of("revocable", REVOCABLE_TIER),
+ parseTierConfig("{\"tiers\":{\"revocable\": {\"revocable\": true}}}").getTiers());
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void testTierConfigExtraKeysNotAllowed() {
+ parseTierConfig("{\"tiers\":{\"revocable\": {\"revocable\": true, \"foo\": false}}}");
+ }
+}
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java b/src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java
index 7ee31fd..918a3da 100644
--- a/src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java
+++ b/src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java
@@ -61,7 +61,6 @@ import org.apache.aurora.gen.storage.Transaction;
import org.apache.aurora.gen.storage.storageConstants;
import org.apache.aurora.scheduler.AppStartup;
import org.apache.aurora.scheduler.ResourceSlot;
-import org.apache.aurora.scheduler.TierManager.TierManagerImpl.TierConfig;
import org.apache.aurora.scheduler.TierModule;
import org.apache.aurora.scheduler.base.TaskTestUtil;
import org.apache.aurora.scheduler.configuration.executor.ExecutorSettings;
@@ -202,7 +201,7 @@ public class SchedulerIT extends BaseZooKeeperTest {
Injector injector = Guice.createInjector(
ImmutableList.<Module>builder()
.add(SchedulerMain.getUniversalModule())
- .add(new TierModule(TierConfig.EMPTY))
+ .add(new TierModule(TaskTestUtil.DEV_TIER_CONFIG))
.add(new LogStorageModule())
.add(new ZooKeeperClientModule(zkClientConfig))
.add(new ServiceDiscoveryModule(SERVERSET_PATH, credentials))
http://git-wip-us.apache.org/repos/asf/aurora/blob/a91a759d/src/test/resources/org/apache/aurora/scheduler/tiers.json
----------------------------------------------------------------------
diff --git a/src/test/resources/org/apache/aurora/scheduler/tiers.json b/src/test/resources/org/apache/aurora/scheduler/tiers.json
deleted file mode 100644
index 2140773..0000000
--- a/src/test/resources/org/apache/aurora/scheduler/tiers.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "tiers":
- {
- "revocable":
- {
- "revocable": true
- }
- }
-}