From e4f37f5a095081be2b05ce2fd6801c8048fefa49 Mon Sep 17 00:00:00 2001 From: Stephen Salinas Date: Fri, 26 Jan 2018 15:37:55 -0500 Subject: [PATCH] Update tests to check status update performance as well --- .../SingularityMesosStatusUpdateHandler.java | 2 - .../singularity/data/ValidatorTest.java | 1 - ...SingularityOfferPerformanceTestRunner.java | 42 +++++++++++++++++-- .../scheduler/SingularitySchedulerTest.java | 3 -- 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosStatusUpdateHandler.java b/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosStatusUpdateHandler.java index 956f422cc9..2173349301 100644 --- a/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosStatusUpdateHandler.java +++ b/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosStatusUpdateHandler.java @@ -254,8 +254,6 @@ private void unsafeProcessStatusUpdate(Protos.TaskStatus status) { scheduler.handleCompletedTask(task, taskIdObj, isActiveTask, timestamp, taskState, taskHistoryUpdateCreateResult, status); } - System.out.println(newTaskStatusHolder); - saveNewTaskStatusHolder(taskIdObj, newTaskStatusHolder, taskState); } diff --git a/SingularityService/src/test/java/com/hubspot/singularity/data/ValidatorTest.java b/SingularityService/src/test/java/com/hubspot/singularity/data/ValidatorTest.java index ae42b04292..e74d60ece1 100644 --- a/SingularityService/src/test/java/com/hubspot/singularity/data/ValidatorTest.java +++ b/SingularityService/src/test/java/com/hubspot/singularity/data/ValidatorTest.java @@ -313,7 +313,6 @@ public void itForbidsHealthCheckGreaterThanMaxTotalHealthCheck() { SingularityRequest request = new SingularityRequestBuilder("1234567", RequestType.SERVICE).build(); WebApplicationException exn = (WebApplicationException) catchThrowable(() -> validator.checkDeploy(request, deploy, Collections.emptyList(), Collections.emptyList())); - System.out.println(exn.getResponse().getEntity()); assertThat((String) exn.getResponse().getEntity()) .contains("Max healthcheck time"); } diff --git a/SingularityService/src/test/java/com/hubspot/singularity/scheduler/SingularityOfferPerformanceTestRunner.java b/SingularityService/src/test/java/com/hubspot/singularity/scheduler/SingularityOfferPerformanceTestRunner.java index b23248066e..abefc763bb 100644 --- a/SingularityService/src/test/java/com/hubspot/singularity/scheduler/SingularityOfferPerformanceTestRunner.java +++ b/SingularityService/src/test/java/com/hubspot/singularity/scheduler/SingularityOfferPerformanceTestRunner.java @@ -4,8 +4,11 @@ import java.util.Iterator; import java.util.List; import java.util.Random; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicInteger; import org.apache.mesos.v1.Protos.Offer; +import org.apache.mesos.v1.Protos.TaskState; import org.junit.Ignore; import org.junit.Test; @@ -14,6 +17,7 @@ import com.hubspot.singularity.RequestType; import com.hubspot.singularity.SingularityRequest; import com.hubspot.singularity.SingularityRequestBuilder; +import com.hubspot.singularity.SingularityTaskId; import com.hubspot.singularity.SlavePlacement; public class SingularityOfferPerformanceTestRunner extends SingularitySchedulerTestBase { @@ -22,13 +26,13 @@ public SingularityOfferPerformanceTestRunner() { super(false); } - @Test(timeout = 300000L) + @Test(timeout = 600000L) @Ignore - public void testOfferCache() { + public void testSchedulerPerformance() { long start = System.currentTimeMillis(); - int numRequests = 1000; - int numOffers = 500; + int numRequests = 2000; + int numOffers = 1000; Random r = new Random(); Iterator cpuIterator = r.doubles(1, 5).iterator(); @@ -62,6 +66,36 @@ public void testOfferCache() { int activeTasks = taskManager.getActiveTaskIds().size(); System.out.println(String.format("Launched %s tasks on %s offers in %s", activeTasks, numOffers, JavaUtils.durationFromMillis(duration))); + + start = System.currentTimeMillis(); + + CompletableFuture[] updateFutures = new CompletableFuture[taskManager.getActiveTaskIds().size()*5]; + AtomicInteger i = new AtomicInteger(0); + for (SingularityTaskId taskId : taskManager.getActiveTaskIds()) { + updateFutures[i.getAndIncrement()] = CompletableFuture.supplyAsync(() -> { + statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_STAGING); + return null; + }); + updateFutures[i.getAndIncrement()] = CompletableFuture.supplyAsync(() -> { + statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_STARTING); + return null; + }); + updateFutures[i.getAndIncrement()] = CompletableFuture.supplyAsync(() -> { + statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_RUNNING); + return null; + }); + updateFutures[i.getAndIncrement()] = CompletableFuture.supplyAsync(() -> { + statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_FAILED); + return null; + }); + updateFutures[i.getAndIncrement()] = CompletableFuture.supplyAsync(() -> { + statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_FAILED); + return null; + }); + } + CompletableFuture.allOf(updateFutures).join(); + + System.out.println(String.format("Ran %s status updates in %s", activeTasks * 5, JavaUtils.durationFromMillis(System.currentTimeMillis() - start))); } diff --git a/SingularityService/src/test/java/com/hubspot/singularity/scheduler/SingularitySchedulerTest.java b/SingularityService/src/test/java/com/hubspot/singularity/scheduler/SingularitySchedulerTest.java index 5553e2f395..e9b2d8e79b 100644 --- a/SingularityService/src/test/java/com/hubspot/singularity/scheduler/SingularitySchedulerTest.java +++ b/SingularityService/src/test/java/com/hubspot/singularity/scheduler/SingularitySchedulerTest.java @@ -1527,7 +1527,6 @@ public void testTaskOddities() { statusUpdate(taskOne, TaskState.TASK_FAILED); Assert.assertTrue(!taskManager.isActiveTask(taskOne.getTaskId().getId())); - System.out.println(taskManager.getTaskHistoryUpdates(taskOne.getTaskId())); Assert.assertEquals(2, taskManager.getTaskHistoryUpdates(taskOne.getTaskId()).size()); } @@ -1703,8 +1702,6 @@ public void testScaleDownTakesHighestInstancesWithPendingTask() { scheduler.drainPendingQueue(); - System.out.println(taskManager.getPendingTaskIds()); - requestResource.scale(requestId, new SingularityScaleRequest(Optional.of(3), Optional.absent(), Optional.absent(), Optional.absent(), Optional.absent(), Optional.absent(), Optional.absent(), Optional.absent()), singularityUser); scheduler.drainPendingQueue();