package com.hubspot.singularity.scheduler; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Random; import org.apache.mesos.Protos.Offer; import org.junit.Test; import com.hubspot.mesos.JavaUtils; public class SingularityOfferPerformanceTestRunner extends SingularitySchedulerTestBase { public SingularityOfferPerformanceTestRunner() { super(false); } @Test public void testOfferCache() { long start = System.currentTimeMillis(); int numRequests = 1000; int numOffers = 500; Random r = new Random(); Iterator<Double> cpuIterator = r.doubles(1, 5).iterator(); Iterator<Double> memoryIterator = r.doubles(15, 20000).iterator(); for (int i = 0; i < numRequests; i++) { createAndDeployRequest("request-" + i, cpuIterator.next(), memoryIterator.next()); } List<Offer> offers = new ArrayList<>(numOffers); for (int i = 0; i < numOffers; i++) { offers.add(createOffer(cpuIterator.next(), memoryIterator.next(), "slave-" + i, "host-" + i)); } System.out.println("Starting after " + JavaUtils.duration(start)); start = System.currentTimeMillis(); sms.resourceOffers(driver, 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))); } }