Repository: aurora
Updated Branches:
  refs/heads/master 52ddce919 -> 3cdcd17a5


Expose finer grained offer veto stats

Bugs closed: AURORA-1835

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


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

Branch: refs/heads/master
Commit: 3cdcd17a5591f7d6f4db81e1b52657e0e080c93e
Parents: 52ddce9
Author: Mehrdad Nurolahzade <mehr...@nurolahzade.com>
Authored: Wed Jan 25 13:26:56 2017 -0600
Committer: Joshua Cohen <jco...@apache.org>
Committed: Wed Jan 25 13:26:56 2017 -0600

----------------------------------------------------------------------
 .../java/org/apache/aurora/scheduler/TaskVars.java    | 13 +++++++++++++
 .../org/apache/aurora/scheduler/TaskVarsTest.java     | 14 ++++++++++++++
 2 files changed, 27 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/3cdcd17a/src/main/java/org/apache/aurora/scheduler/TaskVars.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/TaskVars.java 
b/src/main/java/org/apache/aurora/scheduler/TaskVars.java
index 6351cc7..676dfd9 100644
--- a/src/main/java/org/apache/aurora/scheduler/TaskVars.java
+++ b/src/main/java/org/apache/aurora/scheduler/TaskVars.java
@@ -43,6 +43,7 @@ import 
org.apache.aurora.scheduler.events.PubsubEvent.TasksDeleted;
 import org.apache.aurora.scheduler.events.PubsubEvent.Vetoed;
 import org.apache.aurora.scheduler.filter.SchedulingFilter.Veto;
 import org.apache.aurora.scheduler.filter.SchedulingFilter.VetoGroup;
+import org.apache.aurora.scheduler.filter.SchedulingFilter.VetoType;
 import org.apache.aurora.scheduler.storage.AttributeStore;
 import org.apache.aurora.scheduler.storage.Storage;
 import org.apache.aurora.scheduler.storage.entities.IAttribute;
@@ -67,6 +68,15 @@ class TaskVars extends AbstractIdleService implements 
EventSubscriber {
       VetoGroup.MIXED, "scheduling_veto_mixed"
   );
 
+  @VisibleForTesting
+  static final Map<VetoType, String> VETO_TYPE_TO_COUNTERS = ImmutableMap.of(
+      VetoType.CONSTRAINT_MISMATCH, "scheduling_veto_constraint_mismatch",
+      VetoType.DEDICATED_CONSTRAINT_MISMATCH, 
"scheduling_veto_dedicated_constraint_mismatch",
+      VetoType.INSUFFICIENT_RESOURCES, 
"scheduling_veto_insufficient_resources",
+      VetoType.LIMIT_NOT_SATISFIED, "scheduling_veto_limit_not_satisfied",
+      VetoType.MAINTENANCE, "scheduling_veto_maintenance"
+  );
+
   private final LoadingCache<String, Counter> counters;
   private final LoadingCache<String, Counter> untrackedCounters;
   private final Storage storage;
@@ -217,6 +227,9 @@ class TaskVars extends AbstractIdleService implements 
EventSubscriber {
     if (vetoGroup != VetoGroup.EMPTY) {
       
counters.getUnchecked(VETO_GROUPS_TO_COUNTERS.get(vetoGroup)).increment();
     }
+    for (Veto veto : event.getVetoes()) {
+      
counters.getUnchecked(VETO_TYPE_TO_COUNTERS.get(veto.getVetoType())).increment();
+    }
   }
 
   private static class Counter implements Supplier<Long> {

http://git-wip-us.apache.org/repos/asf/aurora/blob/3cdcd17a/src/test/java/org/apache/aurora/scheduler/TaskVarsTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/TaskVarsTest.java 
b/src/test/java/org/apache/aurora/scheduler/TaskVarsTest.java
index 05cd78f..a4741c3 100644
--- a/src/test/java/org/apache/aurora/scheduler/TaskVarsTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/TaskVarsTest.java
@@ -36,6 +36,7 @@ import 
org.apache.aurora.scheduler.events.PubsubEvent.TaskStateChange;
 import org.apache.aurora.scheduler.events.PubsubEvent.TasksDeleted;
 import org.apache.aurora.scheduler.filter.SchedulingFilter.Veto;
 import org.apache.aurora.scheduler.filter.SchedulingFilter.VetoGroup;
+import org.apache.aurora.scheduler.filter.SchedulingFilter.VetoType;
 import org.apache.aurora.scheduler.storage.entities.IHostAttributes;
 import org.apache.aurora.scheduler.storage.entities.IJobKey;
 import org.apache.aurora.scheduler.storage.entities.IScheduledTask;
@@ -53,6 +54,7 @@ import static org.apache.aurora.gen.ScheduleStatus.LOST;
 import static org.apache.aurora.gen.ScheduleStatus.PENDING;
 import static org.apache.aurora.gen.ScheduleStatus.RUNNING;
 import static org.apache.aurora.scheduler.TaskVars.VETO_GROUPS_TO_COUNTERS;
+import static org.apache.aurora.scheduler.TaskVars.VETO_TYPE_TO_COUNTERS;
 import static org.apache.aurora.scheduler.TaskVars.jobStatName;
 import static org.apache.aurora.scheduler.TaskVars.rackStatName;
 import static org.easymock.EasyMock.expect;
@@ -68,6 +70,10 @@ public class TaskVarsTest extends EasyMockTest {
   private static final String STATIC_COUNTER = 
VETO_GROUPS_TO_COUNTERS.get(VetoGroup.STATIC);
   private static final String DYNAMIC_COUNTER = 
VETO_GROUPS_TO_COUNTERS.get(VetoGroup.DYNAMIC);
   private static final String MIXED_COUNTER = 
VETO_GROUPS_TO_COUNTERS.get(VetoGroup.MIXED);
+  private static final String INSUFFICIENT_RESOURCES_COUNTER = 
VETO_TYPE_TO_COUNTERS.get(
+      VetoType.INSUFFICIENT_RESOURCES);
+  private static final String LIMIT_NOT_SATISFIED_COUNTER = 
VETO_TYPE_TO_COUNTERS.get(
+      VetoType.LIMIT_NOT_SATISFIED);
 
   private StorageTestUtil storageUtil;
   private StatsProvider trackedProvider;
@@ -211,6 +217,7 @@ public class TaskVarsTest extends EasyMockTest {
   public void testStaticVetoGroup() {
     expectStatusCountersInitialized();
     expectStatExport(STATIC_COUNTER);
+    expectStatExport(INSUFFICIENT_RESOURCES_COUNTER);
 
     replayAndBuild();
     schedulerActivated();
@@ -221,24 +228,29 @@ public class TaskVarsTest extends EasyMockTest {
         Veto.insufficientResources("cpu", 500));
 
     assertEquals(1, getValue(STATIC_COUNTER));
+    assertEquals(2, getValue(INSUFFICIENT_RESOURCES_COUNTER));
   }
 
   @Test
   public void testDynamicVetoGroup() {
     expectStatusCountersInitialized();
     expectStatExport(DYNAMIC_COUNTER);
+    expectStatExport(LIMIT_NOT_SATISFIED_COUNTER);
 
     replayAndBuild();
     schedulerActivated();
 
     applyVeto(makeTask(JOB_A, PENDING), Veto.unsatisfiedLimit("constraint"));
     assertEquals(1, getValue(DYNAMIC_COUNTER));
+    assertEquals(1, getValue(LIMIT_NOT_SATISFIED_COUNTER));
   }
 
   @Test
   public void testMixedVetoGroup() {
     expectStatusCountersInitialized();
     expectStatExport(MIXED_COUNTER);
+    expectStatExport(LIMIT_NOT_SATISFIED_COUNTER);
+    expectStatExport(INSUFFICIENT_RESOURCES_COUNTER);
 
     replayAndBuild();
     schedulerActivated();
@@ -248,6 +260,8 @@ public class TaskVarsTest extends EasyMockTest {
         Veto.insufficientResources("ram", 500));
 
     assertEquals(1, getValue(MIXED_COUNTER));
+    assertEquals(1, getValue(LIMIT_NOT_SATISFIED_COUNTER));
+    assertEquals(1, getValue(INSUFFICIENT_RESOURCES_COUNTER));
   }
 
   @Test

Reply via email to