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;
}
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();
}
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());
}
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;
}
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);
}
Aggregations