[ 
https://issues.apache.org/jira/browse/FLINK-40138?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated FLINK-40138:
-----------------------------------
    Labels: pull-request-available  (was: )

> Migration test snapshot generator does not drive the JUnit 5 lifecycle, 
> breaking snapshot generation for JUnit-5-migrated tests in flink-tests
> ----------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: FLINK-40138
>                 URL: https://issues.apache.org/jira/browse/FLINK-40138
>             Project: Flink
>          Issue Type: Bug
>          Components: Test Infrastructure, Tests
>    Affects Versions: 2.3.0, 2.4.0
>            Reporter: David Anderson
>            Priority: Major
>              Labels: pull-request-available
>
> h3. Problem
> Running the snapshot generator for \{{flink-tests}} as documented in 
> \{{flink-migration-test-utils/README.md}}:
> {code:bash}
> mvn clean package -Pgenerate-migration-test-data -Dgenerate.version=2.3 -nsu 
> -Dfast -DskipTests
> {code}
> fails on the \{{flink-tests}} module. The Maven output only shows this error:
> {code}
> [ERROR] Failed to execute goal 
> org.apache.maven.plugins:maven-antrun-plugin:3.1.0:run
> (generate-migration-test-data) on project flink-tests: An Ant BuildException 
> has occured:
> Java returned: 1
> {code}
> The forked JVM actually fails with:
> {code}
> Caused by: java.lang.NullPointerException
>     at org.apache.flink.util.Preconditions.checkNotNull(Preconditions.java:59)
>     at 
> org.apache.flink.util.concurrent.ScheduledExecutorServiceAdapter.<init>(ScheduledExecutorServiceAdapter.java:37)
>     at 
> org.apache.flink.test.state.operator.restore.AbstractOperatorRestoreTestBase.<init>(AbstractOperatorRestoreTestBase.java:103)
>     ...
> {code}
> h3. Root cause (as determined by Claude)
> The JUnit 5 migration ([FLINK-39124]) converted the migration tests' JUnit 4 
> \{{@ClassRule}}/\{{@Rule}} \{{ExternalResource}}s into JUnit 5 
> \{{@RegisterExtension}} extensions and \{{@BeforeEach}} methods, but 
> \{{MigrationTestsSnapshotGenerator}}/\{{SnapshotGeneratorUtils}} were not 
> updated. The generator instantiates test classes by reflection and only 
> drives JUnit 4 rules (\{{RunRules}}), so the JUnit 5 lifecycle never runs. 
> This surfaces as two distinct failures:
> Operator-restore tests (\{{AbstractOperatorRestoreTestBase}} and subclasses): 
> the instance field initializer \{{scheduledExecutor = new 
> ScheduledExecutorServiceAdapter(EXECUTOR_RESOURCE.getExecutor())}} throws 
> NPE, because the \{{@RegisterExtension TestExecutorExtension}}'s 
> \{{beforeAll}} (which creates the executor) is never called. The 
> \{{MiniClusterExtension}} and the \{{@BeforeEach 
> setClusterClient(@InjectClusterClient …)}} method are likewise never driven.
> {\{StatefulJob*MigrationITCase}}: silently skipped. [FLINK-39124] also 
> changed \{{generateSnapshots}} from \{{public}} to \{{private}}, and the 
> generator discovers generator methods via \{{Class.getMethods()}} (public 
> only), so the \{{@ParameterizedSnapshotsGenerator}} method (and its 
> \{{private static}} parameters method, looked up via \{{Class.getMethod}}) 
> are no longer found. This is the same class of silent failure reported in 
> [FLINK-34972].
> The regression is present on \{{master}} and \{{release-2.3}}. It was not 
> caught earlier because the last reference-data generation ([FLINK-38775], 
> 2.2) predates the JUnit 5 migration.
> h3. Related
> - Blocks [FLINK-40020] (Flink 2.3: update reference data for migration tests)
> - Regression from [FLINK-39124] (JUnit 5 migration of flink-tests)
> - Overlaps with [FLINK-34972] (generator silently produces no files for some 
> subclasses)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to