rmetzger commented on a change in pull request #15884:
URL: https://github.com/apache/flink/pull/15884#discussion_r635821863



##########
File path: 
flink-runtime/src/test/java/org/apache/flink/runtime/scheduler/adaptive/ExecutingTest.java
##########
@@ -258,6 +305,23 @@ public void 
testFalseReportsViaUpdateTaskExecutionStateAreIgnored() throws Excep
         }
     }
 
+    @Test
+    public void testExecutionVertexMarkedAsFailedOnDeploymentFailure() throws 
Exception {
+        try (MockExecutingContext ctx = new MockExecutingContext()) {
+            MockExecutionJobVertex mejv =
+                    new 
MockExecutionJobVertex(FailOnDeployMockExecutionVertex::new);
+            ExecutionGraph executionGraph =
+                    new MockExecutionGraph(() -> 
Collections.singletonList(mejv));
+            Executing exec =
+                    new 
ExecutingStateBuilder().setExecutionGraph(executionGraph).build(ctx);
+
+            assertThat(
+                    ((FailOnDeployMockExecutionVertex) 
mejv.getMockExecutionVertex())
+                            .getMarkedFailure(),
+                    is(instanceOf(JobException.class)));

Review comment:
       The error handling of markFailed is difficult to test, because so many 
components are involved. But in my opinion, we have good test coverage:
   
   markFailed will (through the DefaultExecutionGraph) notify the 
`InternalFailuresListener` about the task failure. The 
`UpdateSchedulerNgOnInternalFailuresListener` implementation used by adaptive 
scheduler will call updateTaskExecutionState on the scheduler. This chain of 
calls will be used for example for the failure in the 
`AdaptiveSchedulerITCase.testGlobalFailoverCanRecoverState()` test.
   
   For the Executing state, we have tests that exceptions during deployment 
lead to a markFailed call 
(`testExecutionVertexMarkedAsFailedOnDeploymentFailure`), and failures reported 
via updateTaskExecutionState to appropriate error handling 
(`testFailureReportedViaUpdateTaskExecutionStateCausesFailingOnNoRestart`, 
`testFailureReportedViaUpdateTaskExecutionStateCausesRestart`, 
`testFalseReportsViaUpdateTaskExecutionStateAreIgnored`).
   
   Adding a test that a markFailed call will notify the 
`InternalFailuresListener` is out of the scope of the ExecutingTest (because we 
are testing the ExecutionVertex and Execution classes).
   Adding a test that a markFailed call will call updateTaskExecutionState will 
need to go through a test specific `InternalFailuresListener`: Since all the 
relevant calls on ExecutingState are already covered, this would only test the 
test specific `InternalFailuresListener`.
   
   




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to