use of com.hubspot.singularity.SingularityRequestBuilder in project Singularity by HubSpot.
the class HistoryPersisterTest method testRequestCountPurging.
@Test
public void testRequestCountPurging() {
final SingularityRequest requestOne = new SingularityRequestBuilder("request1", RequestType.WORKER).build();
final SingularityRequest requestTwo = new SingularityRequestBuilder("request2", RequestType.WORKER).build();
final SingularityRequest requestThree = new SingularityRequestBuilder("request3", RequestType.WORKER).build();
saveRequest(requestOne);
saveRequest(requestTwo);
saveRequest(requestThree);
configuration.setMaxRequestsWithHistoryInZkWhenNoDatabase(Optional.of(2));
configuration.setDeleteStaleRequestsFromZkWhenNoDatabaseAfterHours(7);
requestManager.startDeletingRequest(requestOne, Optional.absent(), user, Optional.<String>absent(), Optional.<String>absent());
requestManager.deleteHistoryParent(requestOne.getId());
requestManager.activate(requestOne, RequestHistoryType.CREATED, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(4), Optional.<String>absent(), Optional.<String>absent());
requestManager.cooldown(requestOne, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(3));
requestManager.startDeletingRequest(requestTwo, Optional.absent(), user, Optional.<String>absent(), Optional.<String>absent());
requestManager.deleteHistoryParent(requestTwo.getId());
requestManager.activate(requestTwo, RequestHistoryType.CREATED, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(4), Optional.<String>absent(), Optional.<String>absent());
requestManager.cooldown(requestTwo, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(3));
requestManager.startDeletingRequest(requestThree, Optional.absent(), user, Optional.<String>absent(), Optional.<String>absent());
requestManager.deleteHistoryParent(requestThree.getId());
requestManager.activate(requestThree, RequestHistoryType.CREATED, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(4), Optional.<String>absent(), Optional.<String>absent());
requestManager.cooldown(requestThree, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(3));
Assert.assertEquals(2, requestManager.getRequestHistory(requestOne.getId()).size());
Assert.assertEquals(2, requestManager.getRequestHistory(requestTwo.getId()).size());
Assert.assertEquals(2, requestManager.getRequestHistory(requestThree.getId()).size());
requestHistoryPersister.runActionOnPoll();
Assert.assertEquals(0, requestManager.getRequestHistory(requestOne.getId()).size());
Assert.assertEquals(2, requestManager.getRequestHistory(requestTwo.getId()).size());
Assert.assertEquals(2, requestManager.getRequestHistory(requestThree.getId()).size());
}
use of com.hubspot.singularity.SingularityRequestBuilder in project Singularity by HubSpot.
the class SingularityOfferPerformanceTestRunner method testSchedulerPerformance.
@Test(timeout = 600000L)
@Ignore
public void testSchedulerPerformance() {
long start = System.currentTimeMillis();
int numRequests = 4500;
int numOffers = 2500;
Random r = new Random();
Iterator<Double> cpuIterator = r.doubles(1, 5).iterator();
Iterator<Double> memoryIterator = r.doubles(15, 20000).iterator();
Iterator<Double> diskIterator = r.doubles(30, 50000).iterator();
for (int i = 0; i < numRequests; i++) {
SingularityRequestBuilder bldr = new SingularityRequestBuilder("request-" + i, RequestType.SERVICE);
bldr.setInstances(Optional.of(5));
bldr.setSlavePlacement(Optional.of(SlavePlacement.GREEDY));
SingularityRequest request = bldr.build();
saveRequest(request);
deployRequest(request, cpuIterator.next(), memoryIterator.next());
}
List<Offer> offers = new ArrayList<>(numOffers);
for (int i = 0; i < numOffers; i++) {
offers.add(createOffer(cpuIterator.next(), memoryIterator.next(), diskIterator.next(), "slave-" + i, "host-" + i));
}
System.out.println("Starting after " + JavaUtils.duration(start));
start = System.currentTimeMillis();
sms.resourceOffers(offers);
final long duration = System.currentTimeMillis() - start;
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();
ExecutorService statusUpadtes = Executors.newFixedThreadPool(100);
CompletableFuture<Void>[] 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;
}, statusUpadtes);
updateFutures[i.getAndIncrement()] = CompletableFuture.supplyAsync(() -> {
statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_STARTING);
return null;
}, statusUpadtes);
updateFutures[i.getAndIncrement()] = CompletableFuture.supplyAsync(() -> {
statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_RUNNING);
return null;
}, statusUpadtes);
updateFutures[i.getAndIncrement()] = CompletableFuture.supplyAsync(() -> {
statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_FAILED);
return null;
}, statusUpadtes);
updateFutures[i.getAndIncrement()] = CompletableFuture.supplyAsync(() -> {
statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_FAILED);
return null;
}, statusUpadtes);
}
CompletableFuture.allOf(updateFutures).join();
System.out.println(String.format("Ran %s status updates in %s", activeTasks * 5, JavaUtils.durationFromMillis(System.currentTimeMillis() - start)));
}
use of com.hubspot.singularity.SingularityRequestBuilder in project Singularity by HubSpot.
the class SingularitySchedulerTestBase method initRequestWithType.
protected void initRequestWithType(RequestType requestType, boolean isLoadBalanced) {
SingularityRequestBuilder bldr = new SingularityRequestBuilder(requestId, requestType);
bldr.setLoadBalanced(Optional.of(isLoadBalanced));
if (requestType == RequestType.SCHEDULED) {
bldr.setQuartzSchedule(Optional.of(schedule));
}
request = bldr.build();
saveRequest(request);
}
use of com.hubspot.singularity.SingularityRequestBuilder in project Singularity by HubSpot.
the class SingularitySchedulerTestBase method buildRequest.
protected SingularityRequest buildRequest(String requestId) {
SingularityRequest request = new SingularityRequestBuilder(requestId, RequestType.WORKER).build();
saveRequest(request);
return request;
}
use of com.hubspot.singularity.SingularityRequestBuilder in project Singularity by HubSpot.
the class ValidatorTest method itForbidsRunNowOfScheduledWhenAlreadyRunning.
@Test(expected = WebApplicationException.class)
public void itForbidsRunNowOfScheduledWhenAlreadyRunning() {
String deployID = "deploy";
Optional<String> userEmail = Optional.absent();
SingularityRequest request = new SingularityRequestBuilder("request2", RequestType.SCHEDULED).setInstances(Optional.of(1)).build();
Optional<SingularityRunNowRequest> runNowRequest = Optional.absent();
List<SingularityTaskId> activeTasks = Collections.singletonList(activeTask());
List<SingularityPendingTaskId> pendingTasks = Collections.emptyList();
validator.checkRunNowRequest(deployID, userEmail, request, runNowRequest, activeTasks, pendingTasks);
}
Aggregations