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 2014/01/29 01:29:09 UTC

git commit: Bug fix: Return job count instead of task count on GetRoleSummary() call.

Updated Branches:
  refs/heads/master 3870df32b -> e2ec0f9cf


Bug fix: Return job count instead of task count on GetRoleSummary() call.

Updated test cases to catch this bug.
Updated getJobSummary API to return results as a set instead of a list.

Testing Done:
gradle clean build
gradle run - tested in local UI.

Bugs closed: AURORA-116

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


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

Branch: refs/heads/master
Commit: e2ec0f9cff70dbd7c44a5bc0432fcb384c86b4ab
Parents: 3870df3
Author: Suman Karumuri <ma...@apache.org>
Authored: Tue Jan 28 16:24:51 2014 -0800
Committer: Suman Karumuri <sk...@twitter.com>
Committed: Tue Jan 28 16:24:51 2014 -0800

----------------------------------------------------------------------
 .../thrift/SchedulerThriftInterface.java        | 24 +++++++++++++-------
 .../thrift/org/apache/aurora/gen/api.thrift     |  2 +-
 .../thrift/SchedulerThriftInterfaceTest.java    | 19 ++++++++++++----
 .../org/apache/aurora/gen/api.thrift.md5        |  2 +-
 4 files changed, 32 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/e2ec0f9c/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java b/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java
index cf9099f..822b8b9 100644
--- a/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java
+++ b/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java
@@ -34,6 +34,7 @@ import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.base.Throwables;
 import com.google.common.collect.FluentIterable;
+import com.google.common.collect.HashMultimap;
 import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
@@ -380,16 +381,15 @@ class SchedulerThriftInterface implements AuroraAdmin.Iface {
 
   @Override
   public Response getJobSummary() {
-    Set<IScheduledTask> tasks = Storage.Util.weaklyConsistentFetchTasks(storage, Query.unscoped());
-    Multimap<String, IJobKey> jobsByRole = Multimaps.index(
-        FluentIterable.from(tasks).transform(Tasks.SCHEDULED_TO_JOB_KEY),
-        JobKeys.TO_ROLE);
+    Multimap<String, IJobKey> jobsByRole = mapByRole(
+        Storage.Util.weaklyConsistentFetchTasks(storage, Query.unscoped()),
+        Tasks.SCHEDULED_TO_JOB_KEY);
 
-    Multimap<String, IJobKey> cronJobsByRole = Multimaps.index(
-        FluentIterable.from(cronJobManager.getJobs()).transform(JobKeys.FROM_CONFIG),
-        JobKeys.TO_ROLE);
+    Multimap<String, IJobKey> cronJobsByRole = mapByRole(
+        cronJobManager.getJobs(),
+        JobKeys.FROM_CONFIG);
 
-    List<JobSummary> jobSummaries = Lists.newLinkedList();
+    Set<JobSummary> jobSummaries = Sets.newHashSet();
     for (String role : Sets.union(jobsByRole.keySet(), cronJobsByRole.keySet())) {
       JobSummary summary = new JobSummary();
       summary.setRole(role);
@@ -403,6 +403,14 @@ class SchedulerThriftInterface implements AuroraAdmin.Iface {
         .setResult(Result.jobSummaryResult(new JobSummaryResult(jobSummaries)));
   }
 
+  private static <T> Multimap<String, IJobKey> mapByRole(
+      Iterable<T> tasks,
+      Function<T, IJobKey> keyExtractor) {
+
+    return HashMultimap.create(
+        Multimaps.index(Iterables.transform(tasks, keyExtractor), JobKeys.TO_ROLE));
+  }
+
   @Override
   public Response getJobs(@Nullable String maybeNullRole) {
     Optional<String> ownerRole = Optional.fromNullable(maybeNullRole);

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/e2ec0f9c/src/main/thrift/org/apache/aurora/gen/api.thrift
----------------------------------------------------------------------
diff --git a/src/main/thrift/org/apache/aurora/gen/api.thrift b/src/main/thrift/org/apache/aurora/gen/api.thrift
index 7401037..94569f9 100644
--- a/src/main/thrift/org/apache/aurora/gen/api.thrift
+++ b/src/main/thrift/org/apache/aurora/gen/api.thrift
@@ -392,7 +392,7 @@ struct EndMaintenanceResult {
 }
 
 struct JobSummaryResult {
-  1: list<JobSummary> summaries
+  1: set<JobSummary> summaries
 }
 
 // Specifies validation level for the populateJobConfig.

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/e2ec0f9c/src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java b/src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java
index 6cefdfa..02b7a27 100644
--- a/src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java
@@ -1068,7 +1068,7 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
         .setTaskConfig(nonProductionTask());
     JobConfiguration cronJobTwo = makeJob()
         .setCronSchedule("2 * * * *")
-        .setKey(JOB_KEY.newBuilder())
+        .setKey(JOB_KEY.newBuilder().setName("cronJob2"))
         .setTaskConfig(nonProductionTask());
 
     JobConfiguration cronJobThree = makeJob()
@@ -1082,23 +1082,32 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
     TaskConfig immediateTaskConfig = defaultTask(false)
         .setJobName("immediate")
         .setOwner(ROLE_IDENTITY);
-    IScheduledTask immediateTask = IScheduledTask.build(new ScheduledTask()
+    IScheduledTask task1 = IScheduledTask.build(new ScheduledTask()
         .setAssignedTask(new AssignedTask().setTask(immediateTaskConfig)));
+    IScheduledTask task2 = IScheduledTask.build(new ScheduledTask()
+        .setAssignedTask(new AssignedTask().setTask(immediateTaskConfig.setNumCpus(2))));
 
     TaskConfig immediateTaskConfigTwo = defaultTask(false)
         .setJobName("immediateTwo")
         .setOwner(BAZ_ROLE_IDENTITY);
-    IScheduledTask immediateTaskTwo = IScheduledTask.build(new ScheduledTask()
+    IScheduledTask task3 = IScheduledTask.build(new ScheduledTask()
         .setAssignedTask(new AssignedTask().setTask(immediateTaskConfigTwo)));
 
-    storageUtil.expectTaskFetch(Query.unscoped(), immediateTask, immediateTaskTwo);
+    TaskConfig immediateTaskConfigThree = defaultTask(false)
+        .setJobName("immediateThree")
+        .setOwner(BAZ_ROLE_IDENTITY);
+    IScheduledTask task4 = IScheduledTask.build(new ScheduledTask()
+        .setAssignedTask(new AssignedTask().setTask(immediateTaskConfigThree)));
+
+    storageUtil.expectTaskFetch(Query.unscoped(), task1, task2, task3, task4);
+
     expect(cronJobManager.getJobs()).andReturn(IJobConfiguration.setFromBuilders(crons));
 
     JobSummaryResult expectedResult = new JobSummaryResult();
     expectedResult.addToSummaries(
         new JobSummary().setRole(ROLE).setCronJobCount(2).setJobCount(1));
     expectedResult.addToSummaries(
-        new JobSummary().setRole(BAZ_ROLE).setCronJobCount(1).setJobCount(1));
+        new JobSummary().setRole(BAZ_ROLE).setCronJobCount(1).setJobCount(2));
 
     control.replay();
 

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/e2ec0f9c/src/test/resources/org/apache/aurora/gen/api.thrift.md5
----------------------------------------------------------------------
diff --git a/src/test/resources/org/apache/aurora/gen/api.thrift.md5 b/src/test/resources/org/apache/aurora/gen/api.thrift.md5
index 42fdca2..e88d297 100644
--- a/src/test/resources/org/apache/aurora/gen/api.thrift.md5
+++ b/src/test/resources/org/apache/aurora/gen/api.thrift.md5
@@ -1 +1 @@
-867e9ac3b98e660b6fb830527098785c
+28ec7c76c1f5d4ed162fc7f13cf0d0ff