Search in sources :

Example 11 with Offer

use of org.apache.mesos.v1.Protos.Offer in project Singularity by HubSpot.

the class SingularitySchedulerTestBase method prepTask.

protected SingularityTask prepTask(SingularityRequest request, SingularityDeploy deploy, long launchTime, int instanceNo, boolean separateHosts, Optional<String> runId) {
    SingularityPendingTask pendingTask = buildPendingTask(request, deploy, launchTime, instanceNo, runId);
    SingularityTaskRequest taskRequest = new SingularityTaskRequest(request, deploy, pendingTask);
    Offer offer;
    if (separateHosts) {
        offer = createOffer(125, 1024, 2048, String.format("slave%s", instanceNo), String.format("host%s", instanceNo));
    } else {
        offer = createOffer(125, 1024, 2048);
    }
    SingularityTaskId taskId = new SingularityTaskId(request.getId(), deploy.getId(), launchTime, instanceNo, offer.getHostname(), "rack1");
    TaskID taskIdProto = TaskID.newBuilder().setValue(taskId.toString()).build();
    TaskInfo taskInfo = TaskInfo.newBuilder().setAgentId(offer.getAgentId()).setExecutor(ExecutorInfo.newBuilder().setExecutorId(ExecutorID.newBuilder().setValue("executorID"))).setTaskId(taskIdProto).setName("name").build();
    SingularityTask task = new SingularityTask(taskRequest, taskId, Collections.singletonList(mesosProtosUtils.offerFromProtos(offer)), mesosProtosUtils.taskFromProtos(taskInfo), Optional.of("rack1"));
    taskManager.savePendingTask(pendingTask);
    return task;
}
Also used : TaskInfo(org.apache.mesos.v1.Protos.TaskInfo) TaskID(org.apache.mesos.v1.Protos.TaskID) SingularityTask(com.hubspot.singularity.SingularityTask) Offer(org.apache.mesos.v1.Protos.Offer) SingularityPendingTask(com.hubspot.singularity.SingularityPendingTask) SingularityTaskRequest(com.hubspot.singularity.SingularityTaskRequest) SingularityTaskId(com.hubspot.singularity.SingularityTaskId)

Example 12 with Offer

use of org.apache.mesos.v1.Protos.Offer in project Singularity by HubSpot.

the class SingularitySchedulerTestBase method createOffer.

protected Offer createOffer(double cpus, double memory, double disk, String slave, String host, Optional<String> rack, Map<String, String> attributes, String[] portRanges, Optional<String> role) {
    AgentID slaveId = AgentID.newBuilder().setValue(slave).build();
    FrameworkID frameworkId = FrameworkID.newBuilder().setValue("framework1").build();
    Random r = new Random();
    List<Attribute> attributesList = new ArrayList<>();
    for (Map.Entry<String, String> entry : attributes.entrySet()) {
        attributesList.add(Attribute.newBuilder().setType(Type.TEXT).setName(entry.getKey()).setText(Text.newBuilder().setValue(entry.getValue()).build()).build());
    }
    Resource.Builder cpusResource = Resource.newBuilder().setType(Type.SCALAR).setName(MesosUtils.CPUS).setScalar(Scalar.newBuilder().setValue(cpus));
    Resource.Builder memoryResources = Resource.newBuilder().setType(Type.SCALAR).setName(MesosUtils.MEMORY).setScalar(Scalar.newBuilder().setValue(memory));
    Resource.Builder diskResources = Resource.newBuilder().setType(Type.SCALAR).setName(MesosUtils.DISK).setScalar(Scalar.newBuilder().setValue(disk));
    if (role.isPresent()) {
        cpusResource = cpusResource.setRole(role.get());
        memoryResources = memoryResources.setRole(role.get());
        diskResources = diskResources.setRole(role.get());
    }
    return Offer.newBuilder().setId(OfferID.newBuilder().setValue("offer" + r.nextInt(1000)).build()).setFrameworkId(frameworkId).setAgentId(slaveId).setHostname(host).setUrl(URL.newBuilder().setScheme("scheme").setAddress(Address.newBuilder().setPort(8080))).addAttributes(Attribute.newBuilder().setType(Type.TEXT).setText(Text.newBuilder().setValue(rack.or(configuration.getMesosConfiguration().getDefaultRackId()))).setName(configuration.getMesosConfiguration().getRackIdAttributeKey())).addResources(cpusResource).addResources(memoryResources).addResources(diskResources).addResources(MesosUtilsTest.buildPortRanges(portRanges)).addAllAttributes(attributesList).build();
}
Also used : Random(java.util.Random) Attribute(org.apache.mesos.v1.Protos.Attribute) ArrayList(java.util.ArrayList) TaskResource(com.hubspot.singularity.resources.TaskResource) RequestResource(com.hubspot.singularity.resources.RequestResource) PriorityResource(com.hubspot.singularity.resources.PriorityResource) DeployResource(com.hubspot.singularity.resources.DeployResource) SlaveResource(com.hubspot.singularity.resources.SlaveResource) RackResource(com.hubspot.singularity.resources.RackResource) Resource(org.apache.mesos.v1.Protos.Resource) FrameworkID(org.apache.mesos.v1.Protos.FrameworkID) AgentID(org.apache.mesos.v1.Protos.AgentID) Map(java.util.Map)

Example 13 with Offer

use of org.apache.mesos.v1.Protos.Offer in project Singularity by HubSpot.

the class SingularityCachedOffersTest method testOfferCombination.

@Test
public void testOfferCombination() {
    configuration.setOfferCacheSize(2);
    // Each are half of needed memory
    Offer offer1 = createOffer(1, 64, 1024, "slave1", "host1");
    Offer offer2 = createOffer(1, 64, 1024, "slave1", "host1");
    sms.resourceOffers(ImmutableList.of(offer1, offer2));
    initRequest();
    initFirstDeploy();
    requestManager.addToPendingQueue(new SingularityPendingRequest(requestId, firstDeployId, System.currentTimeMillis(), Optional.absent(), PendingType.TASK_DONE, Optional.absent(), Optional.absent()));
    schedulerPoller.runActionOnPoll();
    Assert.assertEquals(1, taskManager.getActiveTasks().size());
    Assert.assertEquals(2, taskManager.getActiveTasks().get(0).getOffers().size());
}
Also used : SingularityPendingRequest(com.hubspot.singularity.SingularityPendingRequest) Offer(org.apache.mesos.v1.Protos.Offer) Test(org.junit.Test)

Example 14 with Offer

use of org.apache.mesos.v1.Protos.Offer in project Singularity by HubSpot.

the class SingularitySchedulerTestBase method resourceOffers.

protected List<Offer> resourceOffers() {
    Offer offer1 = createOffer(20, 20000, 50000, "slave1", "host1");
    Offer offer2 = createOffer(20, 20000, 50000, "slave2", "host2");
    List<Offer> offers = Arrays.asList(offer1, offer2);
    sms.resourceOffers(offers);
    return offers;
}
Also used : Offer(org.apache.mesos.v1.Protos.Offer)

Example 15 with Offer

use of org.apache.mesos.v1.Protos.Offer in project Singularity by HubSpot.

the class SingularityLeaderController method getHostState.

private SingularityHostState getHostState() {
    final boolean master = isMaster();
    final RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean();
    final long uptime = mxBean.getUptime();
    final long now = System.currentTimeMillis();
    final Optional<Long> lastOfferTimestamp = getLastOfferTimestamp();
    final Optional<Long> millisSinceLastOfferTimestamp = lastOfferTimestamp.isPresent() ? Optional.of(now - lastOfferTimestamp.get()) : Optional.<Long>absent();
    String mesosMaster = null;
    Optional<MasterInfo> mesosMasterInfo = getMaster();
    if (mesosMasterInfo.isPresent()) {
        mesosMaster = MesosUtils.getMasterHostAndPort(mesosMasterInfo.get());
    }
    double cachedCpus = 0;
    double cachedMemoryBytes = 0;
    int numCachedOffers = 0;
    for (Offer offer : offerCache.peekOffers()) {
        cachedCpus += MesosUtils.getNumCpus(offer);
        cachedMemoryBytes += MesosUtils.getMemory(offer);
        numCachedOffers++;
    }
    return new SingularityHostState(master, uptime, scheduler.getState().name(), millisSinceLastOfferTimestamp, hostAndPort.getHostText(), hostAndPort.getHostText(), mesosMaster, scheduler.isRunning(), numCachedOffers, cachedCpus, cachedMemoryBytes);
}
Also used : MasterInfo(org.apache.mesos.v1.Protos.MasterInfo) Offer(org.apache.mesos.v1.Protos.Offer) RuntimeMXBean(java.lang.management.RuntimeMXBean)

Aggregations

Offer (org.apache.mesos.v1.Protos.Offer)13 SingularityTaskId (com.hubspot.singularity.SingularityTaskId)7 Test (org.junit.Test)6 ArrayList (java.util.ArrayList)5 Map (java.util.Map)5 HashMap (java.util.HashMap)4 List (java.util.List)4 Collectors (java.util.stream.Collectors)4 Logger (org.slf4j.Logger)4 LoggerFactory (org.slf4j.LoggerFactory)4 Optional (com.google.common.base.Optional)3 Inject (com.google.inject.Inject)3 SingularityPendingRequest (com.hubspot.singularity.SingularityPendingRequest)3 SingularitySlaveUsage (com.hubspot.singularity.SingularitySlaveUsage)3 ResourceUsageType (com.hubspot.singularity.SingularitySlaveUsage.ResourceUsageType)3 SingularityTask (com.hubspot.singularity.SingularityTask)3 SingularityConfiguration (com.hubspot.singularity.config.SingularityConfiguration)3 MesosUtils (com.hubspot.singularity.helpers.MesosUtils)3 CompletableFuture (java.util.concurrent.CompletableFuture)3 Lists (com.google.common.collect.Lists)2