@Override
    public List<ShuffleDescriptor> getClusterPartitionShuffleDescriptors(
            IntermediateDataSetID intermediateDataSetID) {
        return clusterPartitionShuffleDescriptors.computeIfAbsent(
                intermediateDataSetID, this::requestShuffleDescriptorsFromResourceManager);
    }
@Test
    void testGetShuffleDescriptorsBeforeConnectToResourceManager() {
        final TestingShuffleMaster shuffleMaster = new TestingShuffleMaster();
        IntermediateDataSetID intermediateDataSetId = new IntermediateDataSetID();

        final Queue<ReleaseCall> releaseCalls = new ArrayBlockingQueue<>(4);
        final Queue<PromoteCall> promoteCalls = new ArrayBlockingQueue<>(4);
        final JobMasterPartitionTrackerImpl partitionTracker =
                new JobMasterPartitionTrackerImpl(
                        new JobID(),
                        shuffleMaster,
                        resourceId ->
                                Optional.of(
                                        createTaskExecutorGateway(
                                                resourceId, releaseCalls, promoteCalls)));

        assertThatThrownBy(
                        () ->
                                partitionTracker.getClusterPartitionShuffleDescriptors(
                                        intermediateDataSetId))
                .isInstanceOf(NullPointerException.class);
    }