Repository: aurora
Updated Branches:
  refs/heads/master 264527896 -> b75dfb838


Exposed stats on number of offers rescinded and number of slaves lost.

Testing Done:
curl -w '\n' 192.168.33.7:8081/vars | grep offers_rescinded
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
offers_rescinded 0

curl -w '\n' 192.168.33.7:8081/vars | grep slaves_lost
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 30970    0 30970    0     0  4323k      0 --:--:-- --:--:-- --:--:-- 5040k
slaves_lost 0

./build-support/jenkins/build.sh
./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh

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


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

Branch: refs/heads/master
Commit: b75dfb8386f674151d702b510d5a9c3c9a3c82c7
Parents: 2645278
Author: Pradyumna Kaushik <[email protected]>
Authored: Fri Jan 13 13:09:17 2017 -0800
Committer: Zameer Manji <[email protected]>
Committed: Fri Jan 13 13:09:17 2017 -0800

----------------------------------------------------------------------
 .../aurora/scheduler/mesos/MesosSchedulerImpl.java | 17 ++++++++++++++---
 .../scheduler/mesos/MesosSchedulerImplTest.java    |  8 +++++++-
 2 files changed, 21 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/b75dfb83/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java 
b/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
index d63bfc1..7b2614f 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
@@ -17,6 +17,7 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import java.util.List;
 import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicLong;
 
 import javax.inject.Inject;
 import javax.inject.Qualifier;
@@ -29,6 +30,7 @@ import com.google.common.base.Preconditions;
 import org.apache.aurora.GuiceUtils.AllowUnchecked;
 import org.apache.aurora.common.application.Lifecycle;
 import org.apache.aurora.common.inject.TimedInterceptor.Timed;
+import org.apache.aurora.common.stats.StatsProvider;
 import org.apache.aurora.scheduler.HostOffer;
 import org.apache.aurora.scheduler.TaskStatusHandler;
 import org.apache.aurora.scheduler.base.SchedulerException;
@@ -76,6 +78,8 @@ public class MesosSchedulerImpl implements Scheduler {
   private final Logger log;
   private final CachedCounters counters;
   private volatile boolean isRegistered = false;
+  private final AtomicLong offersRescinded;
+  private final AtomicLong slavesLost;
 
   /**
    * Binding annotation for the executor the incoming Mesos message handler 
uses.
@@ -103,7 +107,8 @@ public class MesosSchedulerImpl implements Scheduler {
       OfferManager offerManager,
       EventSink eventSink,
       @SchedulerExecutor Executor executor,
-      CachedCounters counters) {
+      CachedCounters counters,
+      StatsProvider statsProvider) {
 
     this(
         storage,
@@ -113,7 +118,8 @@ public class MesosSchedulerImpl implements Scheduler {
         eventSink,
         executor,
         counters,
-        LoggerFactory.getLogger(MesosSchedulerImpl.class));
+        LoggerFactory.getLogger(MesosSchedulerImpl.class),
+        statsProvider);
   }
 
   @VisibleForTesting
@@ -125,7 +131,8 @@ public class MesosSchedulerImpl implements Scheduler {
       EventSink eventSink,
       Executor executor,
       CachedCounters counters,
-      Logger log) {
+      Logger log,
+      StatsProvider statsProvider) {
 
     this.storage = requireNonNull(storage);
     this.lifecycle = requireNonNull(lifecycle);
@@ -135,11 +142,14 @@ public class MesosSchedulerImpl implements Scheduler {
     this.executor = requireNonNull(executor);
     this.counters = requireNonNull(counters);
     this.log = requireNonNull(log);
+    this.offersRescinded = statsProvider.makeCounter("offers_rescinded");
+    this.slavesLost = statsProvider.makeCounter("slaves_lost");
   }
 
   @Override
   public void slaveLost(SchedulerDriver schedulerDriver, SlaveID slaveId) {
     log.info("Received notification of lost agent: " + slaveId);
+    slavesLost.incrementAndGet();
   }
 
   @Override
@@ -195,6 +205,7 @@ public class MesosSchedulerImpl implements Scheduler {
   public void offerRescinded(SchedulerDriver schedulerDriver, OfferID offerId) 
{
     log.info("Offer rescinded: " + offerId);
     offerManager.cancelOffer(offerId);
+    offersRescinded.incrementAndGet();
   }
 
   private static void logStatusUpdate(Logger logger, TaskStatus status) {

http://git-wip-us.apache.org/repos/asf/aurora/blob/b75dfb83/src/test/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImplTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImplTest.java 
b/src/test/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImplTest.java
index 242530a..ed48934 100644
--- 
a/src/test/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImplTest.java
+++ 
b/src/test/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImplTest.java
@@ -62,6 +62,7 @@ import static org.apache.mesos.Protos.Offer;
 import static org.easymock.EasyMock.anyString;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 public class MesosSchedulerImplTest extends EasyMockTest {
@@ -137,6 +138,7 @@ public class MesosSchedulerImplTest extends EasyMockTest {
   private OfferManager offerManager;
   private SchedulerDriver driver;
   private EventSink eventSink;
+  private FakeStatsProvider statsProvider;
 
   private MesosSchedulerImpl scheduler;
 
@@ -152,6 +154,7 @@ public class MesosSchedulerImplTest extends EasyMockTest {
     statusHandler = createMock(TaskStatusHandler.class);
     offerManager = createMock(OfferManager.class);
     eventSink = createMock(EventSink.class);
+    statsProvider = new FakeStatsProvider();
 
     scheduler = new MesosSchedulerImpl(
         storageUtil.storage,
@@ -161,7 +164,8 @@ public class MesosSchedulerImplTest extends EasyMockTest {
         eventSink,
         MoreExecutors.sameThreadExecutor(),
         new CachedCounters(new FakeStatsProvider()),
-        logger);
+        logger,
+        statsProvider);
     driver = createMock(SchedulerDriver.class);
   }
 
@@ -310,6 +314,7 @@ public class MesosSchedulerImplTest extends EasyMockTest {
     control.replay();
 
     scheduler.slaveLost(driver, SLAVE_ID);
+    assertEquals(1L, statsProvider.getLongValue("slaves_lost"));
   }
 
   @Test
@@ -326,6 +331,7 @@ public class MesosSchedulerImplTest extends EasyMockTest {
     control.replay();
 
     scheduler.offerRescinded(driver, OFFER_ID);
+    assertEquals(1L, statsProvider.getLongValue("offers_rescinded"));
   }
 
   @Test

Reply via email to