Code review comment: ``` // instead of completing stop with savepoint via `notifyCheckpointCompleted` call // we simulate that source has finished first. As a result we expect that the endOfInput // should have been issued ``` ?

Code under review:
public void testInputEndedBeforeStopWithSavepointConfirmed() throws Exception {
        CancelTestSource source =
                new CancelTestSource(
                        STRING_TYPE_INFO.createSerializer(new ExecutionConfig()), "src");
        TestBoundedOneInputStreamOperator chainTail = new TestBoundedOneInputStreamOperator("t");
        StreamTaskMailboxTestHarness<String> harness =
                new StreamTaskMailboxTestHarnessBuilder<>(SourceStreamTask::new, STRING_TYPE_INFO)
                        .setupOperatorChain(
                                new OperatorID(),
                                new StreamSource<String, CancelTestSource>(source))
                        .chain(
                                new OperatorID(),
                                chainTail,
                                STRING_TYPE_INFO.createSerializer(new ExecutionConfig()))
                        .finish()
                        .build();
        Future<Boolean> triggerFuture =
                harness.streamTask.triggerCheckpointAsync(
                        new CheckpointMetaData(1, 1),
                        new CheckpointOptions(SYNC_SAVEPOINT, getDefault()),
                        false);
        while (!triggerFuture.isDone()) {
            harness.streamTask.runMailboxStep();
        }
        
        
        source.cancel();
        harness.streamTask.invoke();
        harness.waitForTaskCompletion();
        assertTrue(TestBoundedOneInputStreamOperator.isInputEnded());
    }


Revised code:
public void testInputEndedBeforeStopWithSavepointConfirmed() throws Exception {
        CancelTestSource source =
                new CancelTestSource(
                        STRING_TYPE_INFO.createSerializer(new ExecutionConfig()), "src");
        TestBoundedOneInputStreamOperator chainTail = new TestBoundedOneInputStreamOperator("t");
        StreamTaskMailboxTestHarness<String> harness =
                new StreamTaskMailboxTestHarnessBuilder<>(SourceStreamTask::new, STRING_TYPE_INFO)
                        .setupOperatorChain(
                                new OperatorID(),
                                new StreamSource<String, CancelTestSource>(source))
                        .chain(
                                new OperatorID(),
                                chainTail,
                                STRING_TYPE_INFO.createSerializer(new ExecutionConfig()))
                        .finish()
                        .build();
        Future<Boolean> triggerFuture =
                harness.streamTask.triggerCheckpointAsync(
                        new CheckpointMetaData(1, 1),
                        new CheckpointOptions(SYNC_SAVEPOINT, getDefault()),
                        false);
        while (!triggerFuture.isDone()) {
            harness.streamTask.runMailboxStep();
        }
        
        
        
        source.cancel();
        harness.streamTask.invoke();
        harness.waitForTaskCompletion();
        assertTrue(TestBoundedOneInputStreamOperator.isInputEnded());
    }