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

Jing Ge updated FLINK-25220:
----------------------------
    Description: 
The original idea of this PR is to build architectural rules for ITCase and 
quickly found that current architecture test submodule only focuses on 
production code. In order to check the architecture violation of test code, 
followings should be done:
 * build the architecture test infra for test code
 * isolate the classpaths of production code and test code, i.e. separation of 
concers.
 * define architectural rules for ITCase
 * create ArchUnit test for some submodules

The first try was using test jars of submodules and check the architectural 
violation centrally. There are some cons of this solution. First, it will need 
each submodule to create standard test jars that have conflict with some 
submodules who need extra exclusion filter for their test jars. Second, 
production code and test code mixed up, which makes it very difficult to define 
the scope of analyse classes for each rule, because some rules should only have 
effect on production code and others should only be used for test code. As 
second try, a distributed solution will be used. The architecture-test module 
will be split into three submodules: base for ArchUnit common extension, 
production for ArchUnit test of production code, test for defining rules for 
test code centrally. The real ArchUnit tests will be distributed and developed 
within submodules where architectural violation check is required.

Architectural rules are required to verify that all IT cases should have:
 * for JUnit4

a public, static, final member of type MiniClusterWithClientResource annotated 
with ClassRule.
or
a public, non-static, final member of type MiniClusterWithClientResource 
annotated with Rule.
 * for JUnit5

a public, static, final member of type MiniClusterExtension
and
a public, static, final member of type AllCallbackWrapper annotated with 
RegisterExtension

The inheritance hierarchy need to be checked, because the member of MiniCluster 
could be defined in the super class.

 

  was:
Writing an architectural rule verifies that all IT cases (within 
o.a.f.table.*?) have for JUnit 4:
 # a public, static member of type MiniClusterWithClientResource annotated with 
ClassRule.
 #  a public, non-static member of type MiniClusterWithClientResource annotated 
with Rule.

 

Cover MiniClusterWithClientExtension for JUnit 5.

 

Detect resources setup in parent classes.

 

 


> Write an architectural rule for all IT cases w.r.t. MiniCluster
> ---------------------------------------------------------------
>
>                 Key: FLINK-25220
>                 URL: https://issues.apache.org/jira/browse/FLINK-25220
>             Project: Flink
>          Issue Type: Improvement
>          Components: Tests
>            Reporter: Jing Ge
>            Assignee: Jing Ge
>            Priority: Major
>              Labels: pull-request-available
>
> The original idea of this PR is to build architectural rules for ITCase and 
> quickly found that current architecture test submodule only focuses on 
> production code. In order to check the architecture violation of test code, 
> followings should be done:
>  * build the architecture test infra for test code
>  * isolate the classpaths of production code and test code, i.e. separation 
> of concers.
>  * define architectural rules for ITCase
>  * create ArchUnit test for some submodules
> The first try was using test jars of submodules and check the architectural 
> violation centrally. There are some cons of this solution. First, it will 
> need each submodule to create standard test jars that have conflict with some 
> submodules who need extra exclusion filter for their test jars. Second, 
> production code and test code mixed up, which makes it very difficult to 
> define the scope of analyse classes for each rule, because some rules should 
> only have effect on production code and others should only be used for test 
> code. As second try, a distributed solution will be used. The 
> architecture-test module will be split into three submodules: base for 
> ArchUnit common extension, production for ArchUnit test of production code, 
> test for defining rules for test code centrally. The real ArchUnit tests will 
> be distributed and developed within submodules where architectural violation 
> check is required.
> Architectural rules are required to verify that all IT cases should have:
>  * for JUnit4
> a public, static, final member of type MiniClusterWithClientResource 
> annotated with ClassRule.
> or
> a public, non-static, final member of type MiniClusterWithClientResource 
> annotated with Rule.
>  * for JUnit5
> a public, static, final member of type MiniClusterExtension
> and
> a public, static, final member of type AllCallbackWrapper annotated with 
> RegisterExtension
> The inheritance hierarchy need to be checked, because the member of 
> MiniCluster could be defined in the super class.
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to