private static Ranges subtractRanges(Ranges ranges, Ranges toSubtract) { Ranges.Builder newRanges = Ranges.newBuilder(); List<Range> sortedRanges = Lists.newArrayList(ranges.getRangeList()); Collections.sort(sortedRanges, RANGE_COMPARATOR); List<Range> subtractRanges = Lists.newArrayList(toSubtract.getRangeList()); Collections.sort(subtractRanges, RANGE_COMPARATOR); int s = 0; for (Range range : ranges.getRangeList()) { Range.Builder currentRange = range.toBuilder(); for (int i = s; i < subtractRanges.size(); i++) { Range matchedRange = subtractRanges.get(i); if (matchedRange.getBegin() < currentRange.getBegin() || matchedRange.getEnd() > currentRange.getEnd()) { s = i; break; } currentRange.setEnd(matchedRange.getBegin() - 1); if (currentRange.getEnd() >= currentRange.getBegin()) { newRanges.addRange(currentRange.build()); } currentRange = Range.newBuilder(); currentRange.setBegin(matchedRange.getEnd() + 1); currentRange.setEnd(range.getEnd()); } if (currentRange.getEnd() >= currentRange.getBegin()) { newRanges.addRange(currentRange.build()); } } return newRanges.build(); }
public static Resource buildPortRanges(String... ranges) { Resource.Builder resources = Resource.newBuilder() .setType(Type.RANGES) .setName(MesosUtils.PORTS); Ranges.Builder rangesBuilder = Ranges.newBuilder(); for (String range : ranges) { String[] split = range.split("\\:"); rangesBuilder.addRange( Range.newBuilder() .setBegin(Long.parseLong(split[0])) .setEnd(Long.parseLong(split[1]))); } resources.setRanges(rangesBuilder); return resources.build(); }
.setType(Protos.Value.Type.RANGES) .setRanges(Protos.Value.Ranges.newBuilder() .addRange(Protos.Value.Range.newBuilder() .setBegin(31000) .setEnd(31000).build()).build()).build();
private static Ranges subtractRanges(Ranges ranges, Ranges toSubtract) { Ranges.Builder newRanges = Ranges.newBuilder(); List<Range> sortedRanges = Lists.newArrayList(ranges.getRangeList()); Collections.sort(sortedRanges, RANGE_COMPARATOR); List<Range> subtractRanges = Lists.newArrayList(toSubtract.getRangeList()); Collections.sort(subtractRanges, RANGE_COMPARATOR); int s = 0; for (Range range : ranges.getRangeList()) { Range.Builder currentRange = range.toBuilder(); for (int i = s; i < subtractRanges.size(); i++) { Range matchedRange = subtractRanges.get(i); if (matchedRange.getBegin() < currentRange.getBegin() || matchedRange.getEnd() > currentRange.getEnd()) { s = i; break; } currentRange.setEnd(matchedRange.getBegin() - 1); if (currentRange.getEnd() >= currentRange.getBegin()) { newRanges.addRange(currentRange.build()); } currentRange = Range.newBuilder(); currentRange.setBegin(matchedRange.getEnd() + 1); currentRange.setEnd(range.getEnd()); } if (currentRange.getEnd() >= currentRange.getBegin()) { newRanges.addRange(currentRange.build()); } } return newRanges.build(); }
@Test public void testGetPortByIndex() throws Exception{ taskResources = new Resources(1, 1, 4, 0); final Protos.Resource portsResource = Protos.Resource.newBuilder() .setName("ports") .setType(Protos.Value.Type.RANGES) .setRanges(Protos.Value.Ranges.newBuilder() .addRange( Protos.Value.Range.newBuilder() .setBegin(31003) .setEnd(31006).build()) .build()).build(); final SingularityRequest request = new SingularityRequestBuilder("test", RequestType.WORKER).build(); final SingularityDeploy deploy = new SingularityDeployBuilder("test", "1") .setCommand(Optional.of("/bin/echo")) .setArguments(Optional.of(Collections.singletonList("wat"))) .build(); final SingularityTaskRequest taskRequest = new SingularityTaskRequest(request, deploy, pendingTask); final SingularityMesosTaskHolder task = builder.buildTask(offerHolder, Collections.singletonList(portsResource), taskRequest, taskResources, executorResources); assertEquals(31005L, task.getTask().getPortByIndex(2).get().longValue()); }
public static Resource buildPortRanges(String... ranges) { Resource.Builder resources = Resource.newBuilder() .setType(Type.RANGES) .setName(MesosUtils.PORTS); Ranges.Builder rangesBuilder = Ranges.newBuilder(); for (String range : ranges) { String[] split = range.split("\\:"); rangesBuilder.addRange( Range.newBuilder() .setBegin(Long.parseLong(split[0])) .setEnd(Long.parseLong(split[1]))); } resources.setRanges(rangesBuilder); return resources.build(); }
private static Resource newRange(String name, long begin, long end) { return Resource.newBuilder().setName(name).setType(Type.RANGES).setRanges(Ranges.newBuilder().addRange(Range.newBuilder().setBegin(begin).setEnd(end).build()).build()).build(); }
.setType(Protos.Value.Type.RANGES) .setRanges(Protos.Value.Ranges.newBuilder() .addRange(Protos.Value.Range.newBuilder() .setBegin(31000) .setEnd(31000).build()).build()).build();
@Test public void testGetPortByIndex() throws Exception{ taskResources = new Resources(1, 1, 4, 0); final Protos.Resource portsResource = Protos.Resource.newBuilder() .setName("ports") .setType(Protos.Value.Type.RANGES) .setRanges(Protos.Value.Ranges.newBuilder() .addRange( Protos.Value.Range.newBuilder() .setBegin(31003) .setEnd(31006).build()) .build()).build(); final SingularityRequest request = new SingularityRequestBuilder("test", RequestType.WORKER).build(); final SingularityDeploy deploy = new SingularityDeployBuilder("test", "1") .setCommand(Optional.of("/bin/echo")) .setArguments(Optional.of(Collections.singletonList("wat"))) .build(); final SingularityTaskRequest taskRequest = new SingularityTaskRequest(request, deploy, pendingTask); final SingularityMesosTaskHolder task = builder.buildTask(offerHolder, Collections.singletonList(portsResource), taskRequest, taskResources, executorResources); assertEquals(31005L, task.getTask().getPortByIndex(2).get().longValue()); }
private static Resource newRange(String name, long begin, long end) { return Resource.newBuilder().setName(name).setType(Type.RANGES).setRanges(Ranges.newBuilder().addRange(Range.newBuilder().setBegin(begin).setEnd(end).build()).build()).build(); }