Search in sources :

Example 11 with AllocationID

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));
}
Also used : AllocationID(org.apache.flink.runtime.clusterframework.types.AllocationID) SlotRequest(org.apache.flink.runtime.resourcemanager.SlotRequest) JobID(org.apache.flink.api.common.JobID) Test(org.junit.Test)

Example 12 with AllocationID

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));
}
Also used : AllocationID(org.apache.flink.runtime.clusterframework.types.AllocationID) SlotRequest(org.apache.flink.runtime.resourcemanager.SlotRequest) JobID(org.apache.flink.api.common.JobID) Test(org.junit.Test)

Example 13 with AllocationID

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));
}
Also used : AllocationID(org.apache.flink.runtime.clusterframework.types.AllocationID) SlotRequest(org.apache.flink.runtime.resourcemanager.SlotRequest) JobID(org.apache.flink.api.common.JobID) Test(org.junit.Test)

Example 14 with AllocationID

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()));
}
Also used : SlotID(org.apache.flink.runtime.clusterframework.types.SlotID) SlotStatus(org.apache.flink.runtime.taskexecutor.SlotStatus) SlotReport(org.apache.flink.runtime.taskexecutor.SlotReport) AllocationID(org.apache.flink.runtime.clusterframework.types.AllocationID) SlotRequest(org.apache.flink.runtime.resourcemanager.SlotRequest) JobID(org.apache.flink.api.common.JobID) Test(org.junit.Test)

Example 15 with AllocationID

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());
}
Also used : AllocationID(org.apache.flink.runtime.clusterframework.types.AllocationID) SlotRequest(org.apache.flink.runtime.resourcemanager.SlotRequest) ResourceSlot(org.apache.flink.runtime.clusterframework.types.ResourceSlot) JobID(org.apache.flink.api.common.JobID) Test(org.junit.Test)

Aggregations

AllocationID (org.apache.flink.runtime.clusterframework.types.AllocationID)45 JobID (org.apache.flink.api.common.JobID)29 Test (org.junit.Test)27 SlotRequest (org.apache.flink.runtime.resourcemanager.SlotRequest)16 ResourceID (org.apache.flink.runtime.clusterframework.types.ResourceID)13 SlotID (org.apache.flink.runtime.clusterframework.types.SlotID)13 Configuration (org.apache.flink.configuration.Configuration)12 BroadcastVariableManager (org.apache.flink.runtime.broadcast.BroadcastVariableManager)12 FileCache (org.apache.flink.runtime.filecache.FileCache)12 IOManager (org.apache.flink.runtime.io.disk.iomanager.IOManager)12 MemoryManager (org.apache.flink.runtime.memory.MemoryManager)12 NetworkEnvironment (org.apache.flink.runtime.io.network.NetworkEnvironment)11 TaskManagerLocation (org.apache.flink.runtime.taskmanager.TaskManagerLocation)10 UUID (java.util.UUID)9 ExecutionConfig (org.apache.flink.api.common.ExecutionConfig)9 Time (org.apache.flink.api.common.time.Time)9 JobInformation (org.apache.flink.runtime.executiongraph.JobInformation)9 TaskInformation (org.apache.flink.runtime.executiongraph.TaskInformation)9 JobVertexID (org.apache.flink.runtime.jobgraph.JobVertexID)9 MetricRegistry (org.apache.flink.runtime.metrics.MetricRegistry)9