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

Attila Doroszlai reassigned HDDS-9948:
--------------------------------------

    Assignee: Zhaohui Wang

> Compose annotation for tests parameterized with ContainerLayoutVersion
> ----------------------------------------------------------------------
>
>                 Key: HDDS-9948
>                 URL: https://issues.apache.org/jira/browse/HDDS-9948
>             Project: Apache Ozone
>          Issue Type: Sub-task
>          Components: test
>            Reporter: Attila Doroszlai
>            Assignee: Zhaohui Wang
>            Priority: Major
>
> {{ContainerLayoutVersion}} is used in several classes to parameterize test 
> methods.
> Example usage:
> {code:title=https://github.com/apache/ozone/blob/3f35ab738d84000b747396f1f68c5977476ec6a1/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestCloseContainerCommandHandler.java#L112-L114}
>   @ParameterizedTest
>   @MethodSource("layoutVersion")
>   public void closeContainerWithPipeline(ContainerLayoutVersion layout)
> {code}
> where the source method is defined as:
> {code:title=https://github.com/apache/ozone/blob/3f35ab738d84000b747396f1f68c5977476ec6a1/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestCloseContainerCommandHandler.java#L80-L82}
>   private static Iterable<Object[]> layoutVersion() {
>     return ContainerLayoutTestInfo.containerLayoutParameters();
>   }
> {code}
> All usages (found so far):
> {code}
> hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestContainerDataYaml.java
> hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestContainerDeletionChoosingPolicy.java
> hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestContainerSet.java
> hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestHddsDispatcher.java
> hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestCloseContainerCommandHandler.java
> hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainerMarkUnhealthy.java
> hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueHandler.java
> hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/replication/TestReplicationSupervisor.java
> hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/read/TestChunkInputStream.java
> hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/read/TestKeyInputStream.java
> {code}
> The goal of this task is to reduce code duplication by defining a [composite 
> annotation|https://junit.org/junit5/docs/current/user-guide/#writing-tests-meta-annotation].
> Using the custom annotation we can:
>  * replace repeated {{\@ParameterizedTest}} and {{\@MethodSource}}
>  * delete the local method used as source in the test class 
> ({{layoutVersion()}} in the example above)
> Please see similar annotation defined for {{ContainerTestVersionInfo}} in 
> HDDS-9932:
> {code:title=https://github.com/apache/ozone/blob/3f35ab738d84000b747396f1f68c5977476ec6a1/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/ContainerTestVersionInfo.java#L43-L52}
>   /**
>    * Composite annotation for tests parameterized with {@link 
> ContainerTestVersionInfo}.
>    */
>   @Target(ElementType.METHOD)
>   @Retention(RetentionPolicy.RUNTIME)
>   @ParameterizedTest
>   
> @MethodSource("org.apache.hadoop.ozone.container.keyvalue.ContainerTestVersionInfo#getLayoutList")
>   public @interface ContainerTest {
>     // composite annotation
>   }
> {code}
> and its usage:
> {code:title=https://github.com/apache/ozone/blob/3f35ab738d84000b747396f1f68c5977476ec6a1/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainer.java#L179-L181}
>   @ContainerTestVersionInfo.ContainerTest
>   public void testCreateContainer(ContainerTestVersionInfo versionInfo)
>       throws Exception {
> {code}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to