You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by jo...@apache.org on 2018/03/19 20:44:14 UTC

aurora git commit: Remove unused module in RecoveryTool, move TaskTestUtil to test folder

Repository: aurora
Updated Branches:
  refs/heads/master aaadad7c5 -> b34eb1693


Remove unused module in RecoveryTool, move TaskTestUtil to test folder

Removing an unused `TierModule` from `RecoveryTool`.

Additionally, resolved an old TODO and moved `TaskTestUtil` to the test folder.
It seems that the old version of JMH could not see test sources but
https://github.com/melix/jmh-gradle-plugin/issues/31 and the upgrade to 0.4.4
seems to fix that.

Reviewed at https://reviews.apache.org/r/65769/


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

Branch: refs/heads/master
Commit: b34eb1693d8eed1efe7419b8816f4c4d8d48431d
Parents: aaadad7
Author: Jordan Ly <jo...@gmail.com>
Authored: Mon Mar 19 10:07:30 2018 -0700
Committer: Jordan Ly <jl...@twitter.com>
Committed: Mon Mar 19 10:07:30 2018 -0700

----------------------------------------------------------------------
 .../aurora/scheduler/base/TaskTestUtil.java     | 252 -------------------
 .../storage/durability/RecoveryTool.java        |   3 -
 .../aurora/scheduler/base/TaskTestUtil.java     | 249 ++++++++++++++++++
 3 files changed, 249 insertions(+), 255 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/b34eb169/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
deleted file mode 100644
index 2b61c27..0000000
--- a/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
+++ /dev/null
@@ -1,252 +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.base;
-
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-
-import org.apache.aurora.gen.AssignedTask;
-import org.apache.aurora.gen.Constraint;
-import org.apache.aurora.gen.Container;
-import org.apache.aurora.gen.Container._Fields;
-import org.apache.aurora.gen.DockerContainer;
-import org.apache.aurora.gen.DockerParameter;
-import org.apache.aurora.gen.Identity;
-import org.apache.aurora.gen.LimitConstraint;
-import org.apache.aurora.gen.MesosFetcherURI;
-import org.apache.aurora.gen.Metadata;
-import org.apache.aurora.gen.PartitionPolicy;
-import org.apache.aurora.gen.Resource;
-import org.apache.aurora.gen.ScheduleStatus;
-import org.apache.aurora.gen.ScheduledTask;
-import org.apache.aurora.gen.TaskConfig;
-import org.apache.aurora.gen.TaskConstraint;
-import org.apache.aurora.gen.TaskEvent;
-import org.apache.aurora.gen.ValueConstraint;
-import org.apache.aurora.gen.apiConstants;
-import org.apache.aurora.scheduler.TierInfo;
-import org.apache.aurora.scheduler.TierManager;
-import org.apache.aurora.scheduler.TierManager.TierManagerImpl.TierConfig;
-import org.apache.aurora.scheduler.configuration.ConfigurationManager;
-import org.apache.aurora.scheduler.configuration.ConfigurationManager.ConfigurationManagerSettings;
-import org.apache.aurora.scheduler.configuration.executor.ExecutorConfig;
-import org.apache.aurora.scheduler.configuration.executor.ExecutorSettings;
-import org.apache.aurora.scheduler.filter.AttributeAggregate;
-import org.apache.aurora.scheduler.filter.SchedulingFilter.ResourceRequest;
-import org.apache.aurora.scheduler.storage.durability.ThriftBackfill;
-import org.apache.aurora.scheduler.storage.entities.IJobKey;
-import org.apache.aurora.scheduler.storage.entities.IScheduledTask;
-import org.apache.aurora.scheduler.storage.entities.ITaskConfig;
-import org.apache.mesos.v1.Protos;
-import org.apache.mesos.v1.Protos.ExecutorID;
-import org.apache.mesos.v1.Protos.ExecutorInfo;
-
-/**
- * Convenience methods for working with tasks.
- * <p>
- * TODO(wfarner): This lives in under src/main only so benchmarks can access it.  Reconsider the
- * project layout so this is not necessary.
- */
-public final class TaskTestUtil {
-
-  public static final IJobKey JOB = JobKeys.from("role", "devel", "job");
-  public static final TierInfo REVOCABLE_TIER =
-      new TierInfo(true /* preemptible */, true /* revocable */);
-  public static final TierInfo DEV_TIER =
-      new TierInfo(true /* preemptible */, false /* revocable */);
-  public static final TierInfo PREFERRED_TIER =
-      new TierInfo(false /* preemptible */, false /* revocable */);
-  public static final String REVOCABLE_TIER_NAME = "tier-revocable";
-  public static final String PROD_TIER_NAME = "tier-prod";
-  public static final String DEV_TIER_NAME = "tier-dev";
-  public static final TierConfig TIER_CONFIG =
-      new TierConfig(DEV_TIER_NAME, ImmutableMap.of(
-          PROD_TIER_NAME, PREFERRED_TIER,
-          DEV_TIER_NAME, DEV_TIER,
-          REVOCABLE_TIER_NAME, REVOCABLE_TIER
-      ));
-  public static final TierManager TIER_MANAGER = new TierManager.TierManagerImpl(TIER_CONFIG);
-  public static final ThriftBackfill THRIFT_BACKFILL = new ThriftBackfill(TIER_MANAGER);
-  public static final ConfigurationManagerSettings CONFIGURATION_MANAGER_SETTINGS =
-      new ConfigurationManagerSettings(
-          ImmutableSet.of(_Fields.MESOS),
-          false,
-          ImmutableList.of(),
-          true,
-          true,
-          true,
-          true,
-          ConfigurationManager.DEFAULT_ALLOWED_JOB_ENVIRONMENTS);
-  public static final ExecutorID EXECUTOR_ID = ExecutorID.newBuilder()
-      .setValue("PLACEHOLDER")
-      .build();
-  public static final ExecutorInfo EXECUTOR_INFO = ExecutorInfo.newBuilder()
-      .setExecutorId(EXECUTOR_ID)
-      .setName(apiConstants.AURORA_EXECUTOR_NAME)
-      .setCommand(Protos.CommandInfo.newBuilder().build()).build();
-  public static final ExecutorSettings EXECUTOR_SETTINGS = new ExecutorSettings(
-      ImmutableMap.<String, ExecutorConfig>builder()
-          .put(EXECUTOR_INFO.getName(), new ExecutorConfig(EXECUTOR_INFO, ImmutableList.of(), ""))
-          .build(),
-      false);
-  public static final ConfigurationManager CONFIGURATION_MANAGER =
-      new ConfigurationManager(CONFIGURATION_MANAGER_SETTINGS,
-          TIER_MANAGER,
-          THRIFT_BACKFILL,
-          EXECUTOR_SETTINGS);
-
-  private TaskTestUtil() {
-    // Utility class.
-  }
-
-  public static ITaskConfig makeConfig(IJobKey job) {
-    return ITaskConfig.build(new TaskConfig()
-        .setJob(job.newBuilder())
-        .setOwner(new Identity().setUser(job.getRole() + "-user"))
-        .setIsService(true)
-        .setPriority(1)
-        .setMaxTaskFailures(-1)
-        .setProduction(true)
-        .setTier(PROD_TIER_NAME)
-        .setPartitionPolicy(new PartitionPolicy().setDelaySecs(5).setReschedule(true))
-        .setConstraints(ImmutableSet.of(
-            new Constraint(
-                "valueConstraint",
-                TaskConstraint.value(
-                    new ValueConstraint(true, ImmutableSet.of("value1", "value2")))),
-            new Constraint(
-                "limitConstraint",
-                TaskConstraint.limit(new LimitConstraint(5)))))
-        .setTaskLinks(ImmutableMap.of("http", "link", "admin", "otherLink"))
-        .setContactEmail("foo@bar.com")
-        .setMetadata(ImmutableSet.of(new Metadata("key", "value")))
-        .setMesosFetcherUris(ImmutableSet.of(
-            new MesosFetcherURI("pathA").setExtract(true).setCache(true),
-            new MesosFetcherURI("pathB").setExtract(true).setCache(true)))
-        .setExecutorConfig(new org.apache.aurora.gen.ExecutorConfig(
-            EXECUTOR_INFO.getName(),
-            "config"))
-        .setContainer(Container.docker(
-            new DockerContainer("imagename")
-                .setParameters(ImmutableList.of(
-                    new DockerParameter("a", "b"),
-                    new DockerParameter("c", "d")))))
-        .setResources(ImmutableSet.of(
-            Resource.numCpus(1.0),
-            Resource.ramMb(1024),
-            Resource.diskMb(1024),
-            Resource.namedPort("http"))));
-  }
-
-  public static IScheduledTask makeTask(String id, IJobKey job) {
-    return makeTask(id, makeConfig(job));
-  }
-
-  public static IScheduledTask makeTask(String id, IJobKey job, int instanceId) {
-    return makeTask(id, makeConfig(job), instanceId, Optional.empty());
-  }
-
-  public static IScheduledTask makeTask(String id, IJobKey job, int instanceId, String agentId) {
-    return makeTask(id, makeConfig(job), instanceId, Optional.of(agentId));
-  }
-
-  public static IScheduledTask makeTask(String id, ITaskConfig config) {
-    return makeTask(id, config, 2);
-  }
-
-  public static IScheduledTask makeTask(String id, ITaskConfig config, int instanceId) {
-    return makeTask(id, config, instanceId, Optional.empty());
-  }
-
-  public static IScheduledTask makeTask(
-      String id,
-      ITaskConfig config,
-      int instanceId,
-      Optional<String> agentId) {
-
-    AssignedTask assignedTask = new AssignedTask()
-        .setInstanceId(instanceId)
-        .setTaskId(id)
-        .setAssignedPorts(ImmutableMap.of("http", 1000))
-        .setTask(config.newBuilder());
-    if (agentId.isPresent()) {
-      assignedTask.setSlaveId(agentId.get());
-    }
-
-    return IScheduledTask.build(new ScheduledTask()
-        .setStatus(ScheduleStatus.ASSIGNED)
-        .setTaskEvents(ImmutableList.of(
-            new TaskEvent(100L, ScheduleStatus.PENDING)
-                .setMessage("message")
-                .setScheduler("scheduler"),
-            new TaskEvent(101L, ScheduleStatus.ASSIGNED)
-                .setMessage("message")
-                .setScheduler("scheduler2")))
-        .setAncestorId("ancestor")
-        .setFailureCount(3)
-        .setTimesPartitioned(2)
-        .setAssignedTask(assignedTask));
-  }
-
-  public static IScheduledTask addStateTransition(
-      IScheduledTask task,
-      ScheduleStatus status,
-      long timestamp) {
-
-    ScheduledTask builder = task.newBuilder();
-    builder.setStatus(status);
-    builder.addToTaskEvents(new TaskEvent()
-        .setTimestamp(timestamp)
-        .setStatus(status)
-        .setScheduler("scheduler"));
-    return IScheduledTask.build(builder);
-  }
-
-  public static String tierConfigFile() {
-    return "{\"default\": \"preemptible\","
-        + "\"tiers\":{"
-        + "\"preferred\": {\"revocable\": false, \"preemptible\": false},"
-        + "\"preemptible\": {\"revocable\": false, \"preemptible\": true},"
-        + "\"revocable\": {\"revocable\": true, \"preemptible\": true}"
-        + "}}";
-  }
-
-  public static Map<String, TierInfo> tierInfos() {
-    return ImmutableMap.of(
-        "preferred", PREFERRED_TIER,
-        "preemptible", DEV_TIER,
-        "revocable", REVOCABLE_TIER);
-  }
-
-  public static Set<org.apache.aurora.gen.TierConfig> tierConfigs() {
-    return ImmutableSet.of(
-        new org.apache.aurora.gen.TierConfig("preferred", PREFERRED_TIER.toMap()),
-        new org.apache.aurora.gen.TierConfig("preemptible", DEV_TIER.toMap()),
-        new org.apache.aurora.gen.TierConfig("revocable", REVOCABLE_TIER.toMap())
-    );
-  }
-
-  public static ResourceRequest toResourceRequest(ITaskConfig task) {
-    return ResourceRequest.fromTask(
-        task,
-        EXECUTOR_SETTINGS,
-        AttributeAggregate.empty(),
-        TIER_MANAGER);
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/b34eb169/src/main/java/org/apache/aurora/scheduler/storage/durability/RecoveryTool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/storage/durability/RecoveryTool.java b/src/main/java/org/apache/aurora/scheduler/storage/durability/RecoveryTool.java
index 7cb4c52..3cd3d81 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/durability/RecoveryTool.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/durability/RecoveryTool.java
@@ -30,9 +30,7 @@ import com.google.inject.Injector;
 
 import org.apache.aurora.common.util.BuildInfo;
 import org.apache.aurora.common.util.Clock;
-import org.apache.aurora.scheduler.TierModule;
 import org.apache.aurora.scheduler.app.LifecycleModule;
-import org.apache.aurora.scheduler.base.TaskTestUtil;
 import org.apache.aurora.scheduler.config.converters.DataAmountConverter;
 import org.apache.aurora.scheduler.config.converters.InetSocketAddressConverter;
 import org.apache.aurora.scheduler.config.converters.TimeAmountConverter;
@@ -78,7 +76,6 @@ public final class RecoveryTool {
     @Override
     public Persistence create() {
       Injector injector = Guice.createInjector(
-          new TierModule(TaskTestUtil.TIER_CONFIG),
           new MesosLogStreamModule(logOptions, FlaggedZooKeeperConfig.create(zkOptions)),
           new LogPersistenceModule(options),
           new LifecycleModule(),

http://git-wip-us.apache.org/repos/asf/aurora/blob/b34eb169/src/test/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/base/TaskTestUtil.java b/src/test/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
new file mode 100644
index 0000000..778148a
--- /dev/null
+++ b/src/test/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
@@ -0,0 +1,249 @@
+/**
+ * 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.base;
+
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+
+import org.apache.aurora.gen.AssignedTask;
+import org.apache.aurora.gen.Constraint;
+import org.apache.aurora.gen.Container;
+import org.apache.aurora.gen.Container._Fields;
+import org.apache.aurora.gen.DockerContainer;
+import org.apache.aurora.gen.DockerParameter;
+import org.apache.aurora.gen.Identity;
+import org.apache.aurora.gen.LimitConstraint;
+import org.apache.aurora.gen.MesosFetcherURI;
+import org.apache.aurora.gen.Metadata;
+import org.apache.aurora.gen.PartitionPolicy;
+import org.apache.aurora.gen.Resource;
+import org.apache.aurora.gen.ScheduleStatus;
+import org.apache.aurora.gen.ScheduledTask;
+import org.apache.aurora.gen.TaskConfig;
+import org.apache.aurora.gen.TaskConstraint;
+import org.apache.aurora.gen.TaskEvent;
+import org.apache.aurora.gen.ValueConstraint;
+import org.apache.aurora.gen.apiConstants;
+import org.apache.aurora.scheduler.TierInfo;
+import org.apache.aurora.scheduler.TierManager;
+import org.apache.aurora.scheduler.TierManager.TierManagerImpl.TierConfig;
+import org.apache.aurora.scheduler.configuration.ConfigurationManager;
+import org.apache.aurora.scheduler.configuration.ConfigurationManager.ConfigurationManagerSettings;
+import org.apache.aurora.scheduler.configuration.executor.ExecutorConfig;
+import org.apache.aurora.scheduler.configuration.executor.ExecutorSettings;
+import org.apache.aurora.scheduler.filter.AttributeAggregate;
+import org.apache.aurora.scheduler.filter.SchedulingFilter.ResourceRequest;
+import org.apache.aurora.scheduler.storage.durability.ThriftBackfill;
+import org.apache.aurora.scheduler.storage.entities.IJobKey;
+import org.apache.aurora.scheduler.storage.entities.IScheduledTask;
+import org.apache.aurora.scheduler.storage.entities.ITaskConfig;
+import org.apache.mesos.v1.Protos;
+import org.apache.mesos.v1.Protos.ExecutorID;
+import org.apache.mesos.v1.Protos.ExecutorInfo;
+
+/**
+ * Convenience methods for working with tasks.
+ */
+public final class TaskTestUtil {
+
+  public static final IJobKey JOB = JobKeys.from("role", "devel", "job");
+  public static final TierInfo REVOCABLE_TIER =
+      new TierInfo(true /* preemptible */, true /* revocable */);
+  public static final TierInfo DEV_TIER =
+      new TierInfo(true /* preemptible */, false /* revocable */);
+  public static final TierInfo PREFERRED_TIER =
+      new TierInfo(false /* preemptible */, false /* revocable */);
+  public static final String REVOCABLE_TIER_NAME = "tier-revocable";
+  public static final String PROD_TIER_NAME = "tier-prod";
+  public static final String DEV_TIER_NAME = "tier-dev";
+  public static final TierConfig TIER_CONFIG =
+      new TierConfig(DEV_TIER_NAME, ImmutableMap.of(
+          PROD_TIER_NAME, PREFERRED_TIER,
+          DEV_TIER_NAME, DEV_TIER,
+          REVOCABLE_TIER_NAME, REVOCABLE_TIER
+      ));
+  public static final TierManager TIER_MANAGER = new TierManager.TierManagerImpl(TIER_CONFIG);
+  public static final ThriftBackfill THRIFT_BACKFILL = new ThriftBackfill(TIER_MANAGER);
+  public static final ConfigurationManagerSettings CONFIGURATION_MANAGER_SETTINGS =
+      new ConfigurationManagerSettings(
+          ImmutableSet.of(_Fields.MESOS),
+          false,
+          ImmutableList.of(),
+          true,
+          true,
+          true,
+          true,
+          ConfigurationManager.DEFAULT_ALLOWED_JOB_ENVIRONMENTS);
+  public static final ExecutorID EXECUTOR_ID = ExecutorID.newBuilder()
+      .setValue("PLACEHOLDER")
+      .build();
+  public static final ExecutorInfo EXECUTOR_INFO = ExecutorInfo.newBuilder()
+      .setExecutorId(EXECUTOR_ID)
+      .setName(apiConstants.AURORA_EXECUTOR_NAME)
+      .setCommand(Protos.CommandInfo.newBuilder().build()).build();
+  public static final ExecutorSettings EXECUTOR_SETTINGS = new ExecutorSettings(
+      ImmutableMap.<String, ExecutorConfig>builder()
+          .put(EXECUTOR_INFO.getName(), new ExecutorConfig(EXECUTOR_INFO, ImmutableList.of(), ""))
+          .build(),
+      false);
+  public static final ConfigurationManager CONFIGURATION_MANAGER =
+      new ConfigurationManager(CONFIGURATION_MANAGER_SETTINGS,
+          TIER_MANAGER,
+          THRIFT_BACKFILL,
+          EXECUTOR_SETTINGS);
+
+  private TaskTestUtil() {
+    // Utility class.
+  }
+
+  public static ITaskConfig makeConfig(IJobKey job) {
+    return ITaskConfig.build(new TaskConfig()
+        .setJob(job.newBuilder())
+        .setOwner(new Identity().setUser(job.getRole() + "-user"))
+        .setIsService(true)
+        .setPriority(1)
+        .setMaxTaskFailures(-1)
+        .setProduction(true)
+        .setTier(PROD_TIER_NAME)
+        .setPartitionPolicy(new PartitionPolicy().setDelaySecs(5).setReschedule(true))
+        .setConstraints(ImmutableSet.of(
+            new Constraint(
+                "valueConstraint",
+                TaskConstraint.value(
+                    new ValueConstraint(true, ImmutableSet.of("value1", "value2")))),
+            new Constraint(
+                "limitConstraint",
+                TaskConstraint.limit(new LimitConstraint(5)))))
+        .setTaskLinks(ImmutableMap.of("http", "link", "admin", "otherLink"))
+        .setContactEmail("foo@bar.com")
+        .setMetadata(ImmutableSet.of(new Metadata("key", "value")))
+        .setMesosFetcherUris(ImmutableSet.of(
+            new MesosFetcherURI("pathA").setExtract(true).setCache(true),
+            new MesosFetcherURI("pathB").setExtract(true).setCache(true)))
+        .setExecutorConfig(new org.apache.aurora.gen.ExecutorConfig(
+            EXECUTOR_INFO.getName(),
+            "config"))
+        .setContainer(Container.docker(
+            new DockerContainer("imagename")
+                .setParameters(ImmutableList.of(
+                    new DockerParameter("a", "b"),
+                    new DockerParameter("c", "d")))))
+        .setResources(ImmutableSet.of(
+            Resource.numCpus(1.0),
+            Resource.ramMb(1024),
+            Resource.diskMb(1024),
+            Resource.namedPort("http"))));
+  }
+
+  public static IScheduledTask makeTask(String id, IJobKey job) {
+    return makeTask(id, makeConfig(job));
+  }
+
+  public static IScheduledTask makeTask(String id, IJobKey job, int instanceId) {
+    return makeTask(id, makeConfig(job), instanceId, Optional.empty());
+  }
+
+  public static IScheduledTask makeTask(String id, IJobKey job, int instanceId, String agentId) {
+    return makeTask(id, makeConfig(job), instanceId, Optional.of(agentId));
+  }
+
+  public static IScheduledTask makeTask(String id, ITaskConfig config) {
+    return makeTask(id, config, 2);
+  }
+
+  public static IScheduledTask makeTask(String id, ITaskConfig config, int instanceId) {
+    return makeTask(id, config, instanceId, Optional.empty());
+  }
+
+  public static IScheduledTask makeTask(
+      String id,
+      ITaskConfig config,
+      int instanceId,
+      Optional<String> agentId) {
+
+    AssignedTask assignedTask = new AssignedTask()
+        .setInstanceId(instanceId)
+        .setTaskId(id)
+        .setAssignedPorts(ImmutableMap.of("http", 1000))
+        .setTask(config.newBuilder());
+    if (agentId.isPresent()) {
+      assignedTask.setSlaveId(agentId.get());
+    }
+
+    return IScheduledTask.build(new ScheduledTask()
+        .setStatus(ScheduleStatus.ASSIGNED)
+        .setTaskEvents(ImmutableList.of(
+            new TaskEvent(100L, ScheduleStatus.PENDING)
+                .setMessage("message")
+                .setScheduler("scheduler"),
+            new TaskEvent(101L, ScheduleStatus.ASSIGNED)
+                .setMessage("message")
+                .setScheduler("scheduler2")))
+        .setAncestorId("ancestor")
+        .setFailureCount(3)
+        .setTimesPartitioned(2)
+        .setAssignedTask(assignedTask));
+  }
+
+  public static IScheduledTask addStateTransition(
+      IScheduledTask task,
+      ScheduleStatus status,
+      long timestamp) {
+
+    ScheduledTask builder = task.newBuilder();
+    builder.setStatus(status);
+    builder.addToTaskEvents(new TaskEvent()
+        .setTimestamp(timestamp)
+        .setStatus(status)
+        .setScheduler("scheduler"));
+    return IScheduledTask.build(builder);
+  }
+
+  public static String tierConfigFile() {
+    return "{\"default\": \"preemptible\","
+        + "\"tiers\":{"
+        + "\"preferred\": {\"revocable\": false, \"preemptible\": false},"
+        + "\"preemptible\": {\"revocable\": false, \"preemptible\": true},"
+        + "\"revocable\": {\"revocable\": true, \"preemptible\": true}"
+        + "}}";
+  }
+
+  public static Map<String, TierInfo> tierInfos() {
+    return ImmutableMap.of(
+        "preferred", PREFERRED_TIER,
+        "preemptible", DEV_TIER,
+        "revocable", REVOCABLE_TIER);
+  }
+
+  public static Set<org.apache.aurora.gen.TierConfig> tierConfigs() {
+    return ImmutableSet.of(
+        new org.apache.aurora.gen.TierConfig("preferred", PREFERRED_TIER.toMap()),
+        new org.apache.aurora.gen.TierConfig("preemptible", DEV_TIER.toMap()),
+        new org.apache.aurora.gen.TierConfig("revocable", REVOCABLE_TIER.toMap())
+    );
+  }
+
+  public static ResourceRequest toResourceRequest(ITaskConfig task) {
+    return ResourceRequest.fromTask(
+        task,
+        EXECUTOR_SETTINGS,
+        AttributeAggregate.empty(),
+        TIER_MANAGER);
+  }
+}