[
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]