This is an automated email from the ASF dual-hosted git repository.
sdanilov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 70dd27baf IGNITE-16521 Collect Java code coverage
70dd27baf is described below
commit 70dd27baf1d2c3482b283cb397c6de2783d95871
Author: Roman Puchkovskiy <[email protected]>
AuthorDate: Thu Feb 10 17:15:38 2022 +0400
IGNITE-16521 Collect Java code coverage
---
modules/jacoco-report/pom.xml | 235 ++++++++++++++++++++++++++++++++++++++++++
parent/pom.xml | 89 ++++++++++++----
pom.xml | 1 +
3 files changed, 307 insertions(+), 18 deletions(-)
diff --git a/modules/jacoco-report/pom.xml b/modules/jacoco-report/pom.xml
new file mode 100644
index 000000000..871a767da
--- /dev/null
+++ b/modules/jacoco-report/pom.xml
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <description>
+ A separate module is needed to obtain an aggregated coverage report.
For this to work, we need to
+ collect the coverage date (*.exec) files using prepare-agent goal in
the modules, reference them in this
+ module as dependencies and use report-aggregate goal in this module.
+
+ See
https://github.com/jacoco/jacoco/tree/master/jacoco-maven-plugin.test/it/it-report-aggregate
and
+ https://stackoverflow.com/a/53559994/7637120
+
+ To get the coverage report, run 'mvn clean verify -Pjacoco' in the
project root directory.
+ The report will be created at
modules/jacoco-report/target/site/jacoco-aggregate/index.html
+ </description>
+
+ <parent>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-parent</artifactId>
+ <version>1</version>
+ <relativePath>../../parent/pom.xml</relativePath>
+ </parent>
+
+ <artifactId>ignite-jacoco-report</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-affinity</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-baseline</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-bytecode</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-compute</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-sql-engine</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-cli</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-cli-common</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-configuration</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-configuration-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-metastorage</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-metastorage-client</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-metastorage-common</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-metastorage-server</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-network</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-network-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-raft</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-raft-client</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-rest</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-rocksdb-common</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-schema</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-storage-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-storage-rocksdb</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-table</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-vault</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-runner</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-transactions</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-client-common</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-client-handler</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-client</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-marshaller-common</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-page-memory</artifactId>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>jacoco</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.jacoco</groupId>
+ <artifactId>jacoco-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>jacoco-report-aggregate</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>report-aggregate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/parent/pom.xml b/parent/pom.xml
index 84b98080c..87ef15e3e 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -92,6 +92,7 @@
<!-- Plugins versions -->
<apache.rat.plugin.version>0.13</apache.rat.plugin.version>
<checkstyle.puppycrawl.version>8.45</checkstyle.puppycrawl.version>
+ <jacoco.maven.plugin.version>0.8.7</jacoco.maven.plugin.version>
<launch.maven.plugin.version>2.1.2</launch.maven.plugin.version>
<maven.antrun.plugin.version>3.0.0</maven.antrun.plugin.version>
<maven.assembly.plugin.version>3.2.0</maven.assembly.plugin.version>
@@ -112,6 +113,21 @@
<maven.shade.plugin.version>3.2.4</maven.shade.plugin.version>
<maven.source.plugin.version>3.2.1</maven.source.plugin.version>
<maven.surefire.plugin.version>3.0.0-M5</maven.surefire.plugin.version>
+
+ <!-- We leave it empty so that, when jacoco does not run, the
unreplaced @{argLine} does not impede the build. -->
+ <additional.test.argLine/>
+ <common.test.argLine>
+ ${additional.test.argLine}
+ --add-opens java.base/java.lang=ALL-UNNAMED
+ --add-opens java.base/java.lang.invoke=ALL-UNNAMED
+ --add-opens java.base/java.lang.reflect=ALL-UNNAMED
+ --add-opens java.base/java.io=ALL-UNNAMED
+ --add-opens java.base/java.nio=ALL-UNNAMED
+ --add-opens java.base/java.util=ALL-UNNAMED
+ --add-opens java.base/jdk.internal.misc=ALL-UNNAMED
+ -Dio.netty.tryReflectionSetAccessible=true
+
-Djava.util.logging.config.file=../../config/java.util.logging.properties
+ </common.test.argLine>
</properties>
<distributionManagement>
@@ -171,6 +187,12 @@
<version>${immutables.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-cli</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-cli-common</artifactId>
@@ -339,6 +361,12 @@
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-page-memory</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
<!-- 3rd party dependencies -->
<dependency>
<groupId>org.jetbrains</groupId>
@@ -914,6 +942,41 @@
</plugins>
</build>
</profile>
+
+ <profile>
+ <id>jacoco</id>
+ <properties>
+ <additional.test.argLine>@{argLine}</additional.test.argLine>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.jacoco</groupId>
+ <artifactId>jacoco-maven-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <!-- Calcite does not work well under JaCoCo:
https://issues.apache.org/jira/browse/CALCITE-5008 -->
+ <exclude>org/apache/calcite/**/*</exclude>
+ </excludes>
+ </configuration>
+ <executions>
+ <execution>
+ <id>jacoco-prepare-agent-unit</id>
+ <goals>
+ <goal>prepare-agent</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>jacoco-prepare-agent-it</id>
+ <goals>
+ <goal>prepare-agent-integration</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
<build>
@@ -1052,6 +1115,12 @@
<artifactId>modernizer-maven-plugin</artifactId>
<version>${maven.modernizer.plugin.version}</version>
</plugin>
+
+ <plugin>
+ <groupId>org.jacoco</groupId>
+ <artifactId>jacoco-maven-plugin</artifactId>
+ <version>${jacoco.maven.plugin.version}</version>
+ </plugin>
</plugins>
</pluginManagement>
@@ -1100,15 +1169,7 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>
- --add-opens java.base/java.lang=ALL-UNNAMED
- --add-opens java.base/java.lang.invoke=ALL-UNNAMED
- --add-opens java.base/java.lang.reflect=ALL-UNNAMED
- --add-opens java.base/java.io=ALL-UNNAMED
- --add-opens java.base/java.nio=ALL-UNNAMED
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/jdk.internal.misc=ALL-UNNAMED
- -Dio.netty.tryReflectionSetAccessible=true
-
-Djava.util.logging.config.file=../../config/java.util.logging.properties
+ ${common.test.argLine}
</argLine>
<excludes>
<exclude>%regex[.*(It)[A-Z].*]</exclude>
@@ -1126,15 +1187,7 @@
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<argLine>
- --add-opens java.base/java.lang=ALL-UNNAMED
- --add-opens java.base/java.lang.invoke=ALL-UNNAMED
- --add-opens java.base/java.lang.reflect=ALL-UNNAMED
- --add-opens java.base/java.io=ALL-UNNAMED
- --add-opens java.base/java.nio=ALL-UNNAMED
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/jdk.internal.misc=ALL-UNNAMED
- -Dio.netty.tryReflectionSetAccessible=true
-
-Djava.util.logging.config.file=../../config/java.util.logging.properties
+ ${common.test.argLine}
</argLine>
<useModulePath>false</useModulePath>
<includes>
diff --git a/pom.xml b/pom.xml
index b57f243aa..8ac0aff53 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,6 +53,7 @@
<module>modules/configuration-annotation-processor</module>
<module>modules/configuration-api</module>
<module>modules/core</module>
+ <module>modules/jacoco-report</module>
<module>modules/marshaller-common</module>
<module>modules/metastorage</module>
<module>modules/metastorage-client</module>