use of org.apache.flink.runtime.clusterframework.types.AllocationID in project flink by apache.
the class SlotManagerTest method testRequestSlotWithoutFreeSlot.
/**
* Tests that there are no free slots when we request, need to allocate from cluster manager master
*/
@Test
public void testRequestSlotWithoutFreeSlot() {
TestingSlotManager slotManager = new TestingSlotManager();
slotManager.requestSlot(new SlotRequest(new JobID(), new AllocationID(), DEFAULT_TESTING_PROFILE));
assertEquals(0, slotManager.getAllocatedSlotCount());
assertEquals(0, slotManager.getFreeSlotCount());
assertEquals(1, slotManager.getPendingRequestCount());
assertEquals(1, slotManager.getAllocatedContainers().size());
assertEquals(DEFAULT_TESTING_PROFILE, slotManager.getAllocatedContainers().get(0));
}
use of org.apache.flink.runtime.clusterframework.types.AllocationID in project flink by apache.
the class SlotManagerTest method testDuplicatedSlotRequest.
/**
* Tests that we send duplicated slot request
*/
@Test
public void testDuplicatedSlotRequest() {
TestingSlotManager slotManager = new TestingSlotManager();
directlyProvideFreeSlots(slotManager, DEFAULT_TESTING_PROFILE, 1);
SlotRequest request1 = new SlotRequest(new JobID(), new AllocationID(), DEFAULT_TESTING_PROFILE);
SlotRequest request2 = new SlotRequest(new JobID(), new AllocationID(), DEFAULT_TESTING_BIG_PROFILE);
slotManager.requestSlot(request1);
slotManager.requestSlot(request2);
slotManager.requestSlot(request2);
slotManager.requestSlot(request1);
assertEquals(1, slotManager.getAllocatedSlotCount());
assertEquals(0, slotManager.getFreeSlotCount());
assertEquals(1, slotManager.getPendingRequestCount());
assertEquals(1, slotManager.getAllocatedContainers().size());
assertEquals(DEFAULT_TESTING_BIG_PROFILE, slotManager.getAllocatedContainers().get(0));
}
use of org.apache.flink.runtime.clusterframework.types.AllocationID in project flink by apache.
the class SlotManagerTest method testRequestMultipleSlots.
/**
* Tests that we send multiple slot requests
*/
@Test
public void testRequestMultipleSlots() {
TestingSlotManager slotManager = new TestingSlotManager();
directlyProvideFreeSlots(slotManager, DEFAULT_TESTING_PROFILE, 5);
// request 3 normal slots
for (int i = 0; i < 3; ++i) {
slotManager.requestSlot(new SlotRequest(new JobID(), new AllocationID(), DEFAULT_TESTING_PROFILE));
}
// request 2 big slots
for (int i = 0; i < 2; ++i) {
slotManager.requestSlot(new SlotRequest(new JobID(), new AllocationID(), DEFAULT_TESTING_BIG_PROFILE));
}
// request 1 normal slot again
slotManager.requestSlot(new SlotRequest(new JobID(), new AllocationID(), DEFAULT_TESTING_PROFILE));
assertEquals(4, slotManager.getAllocatedSlotCount());
assertEquals(1, slotManager.getFreeSlotCount());
assertEquals(2, slotManager.getPendingRequestCount());
assertEquals(2, slotManager.getAllocatedContainers().size());
assertEquals(DEFAULT_TESTING_BIG_PROFILE, slotManager.getAllocatedContainers().get(0));
assertEquals(DEFAULT_TESTING_BIG_PROFILE, slotManager.getAllocatedContainers().get(1));
}
use of org.apache.flink.runtime.clusterframework.types.AllocationID in project flink by apache.
the class SlotManagerTest method testSlotAllocationFailedAtTaskManagerOccupiedByOther.
/**
* Tests that we did some allocation but failed / rejected by TaskManager, and slot is occupied by another request
* This can only occur after reconnect of the TaskExecutor.
*/
@Test
public void testSlotAllocationFailedAtTaskManagerOccupiedByOther() {
TestingSlotManager slotManager = new TestingSlotManager();
final SlotID slotID = SlotID.generate();
SlotStatus slot = new SlotStatus(slotID, DEFAULT_TESTING_PROFILE);
SlotReport slotReport = new SlotReport(slot);
slotManager.registerTaskExecutor(slotID.getResourceID(), taskExecutorRegistration, slotReport);
SlotRequest request = new SlotRequest(new JobID(), new AllocationID(), DEFAULT_TESTING_PROFILE);
slotManager.requestSlot(request);
assertEquals(1, slotManager.getAllocatedSlotCount());
assertEquals(0, slotManager.getFreeSlotCount());
assertEquals(0, slotManager.getPendingRequestCount());
// slot is set empty by a reconnect of the TaskExecutor
slotManager.registerTaskExecutor(slotID.getResourceID(), taskExecutorRegistration, slotReport);
assertEquals(0, slotManager.getAllocatedSlotCount());
assertEquals(1, slotManager.getFreeSlotCount());
assertEquals(0, slotManager.getPendingRequestCount());
// another request takes the slot
SlotRequest request2 = new SlotRequest(new JobID(), new AllocationID(), DEFAULT_TESTING_PROFILE);
slotManager.requestSlot(request2);
assertEquals(1, slotManager.getAllocatedSlotCount());
assertEquals(0, slotManager.getFreeSlotCount());
assertEquals(0, slotManager.getPendingRequestCount());
assertFalse(slotManager.isAllocated(request.getAllocationId()));
assertTrue(slotManager.isAllocated(request2.getAllocationId()));
// original request should be retried
slotManager.handleSlotRequestFailedAtTaskManager(request, slotID);
assertEquals(1, slotManager.getAllocatedSlotCount());
assertEquals(0, slotManager.getFreeSlotCount());
assertEquals(0, slotManager.getPendingRequestCount());
assertFalse(slotManager.isAllocated(request.getAllocationId()));
assertTrue(slotManager.isAllocated(request2.getAllocationId()));
}
use of org.apache.flink.runtime.clusterframework.types.AllocationID in project flink by apache.
the class SlotManagerTest method testSlotAllocationFailedAtTaskManager.
/**
* Tests that we did some allocation but failed / rejected by TaskManager, request will retry
*/
@Test
public void testSlotAllocationFailedAtTaskManager() {
TestingSlotManager slotManager = new TestingSlotManager();
ResourceSlot slot = new ResourceSlot(SlotID.generate(), DEFAULT_TESTING_PROFILE, taskExecutorRegistration);
slotManager.addFreeSlot(slot);
SlotRequest request = new SlotRequest(new JobID(), new AllocationID(), DEFAULT_TESTING_PROFILE);
slotManager.requestSlot(request);
assertEquals(1, slotManager.getAllocatedSlotCount());
assertEquals(0, slotManager.getFreeSlotCount());
assertEquals(0, slotManager.getPendingRequestCount());
assertTrue(slotManager.isAllocated(slot.getSlotId()));
slotManager.handleSlotRequestFailedAtTaskManager(request, slot.getSlotId());
assertEquals(1, slotManager.getAllocatedSlotCount());
assertEquals(0, slotManager.getFreeSlotCount());
assertEquals(0, slotManager.getPendingRequestCount());
}
Aggregations