Support code coverage statistics

Change-Id: If6d6e71feb4d6d0a7643fcb4e7d05c72d57d256e
This commit is contained in:
liningrui 2019-02-26 19:33:52 +08:00 committed by zhoney
parent 90cf09938a
commit 01049ec632
5 changed files with 203 additions and 138 deletions

View File

@ -7,6 +7,7 @@ sudo: required
cache:
directories:
- $HOME/.m2
- $HOME/downloads
branches:
@ -37,6 +38,9 @@ script:
mvn test -P tinkerpop-process-test,$BACKEND
fi
after_success:
- bash <(curl -s https://codecov.io/bash)
jobs:
include:
- stage: deploy
@ -47,7 +51,6 @@ jobs:
- |
if [ $DEPLOYED = 0 ]; then
DEPLOYED=1
mvn cobertura:cobertura > /dev/null && bash <(curl -s https://codecov.io/bash)
mvn clean package -DskipTests
else
echo "Skipping before_deploy since it has been executed once."

View File

@ -27,8 +27,12 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.http.client.utils.CloneUtils;
import org.apache.lucene.queryparser.xml.QueryBuilderFactory;
import org.slf4j.Logger;
import com.baidu.hugegraph.HugeException;
import com.baidu.hugegraph.backend.BackendException;
import com.baidu.hugegraph.backend.id.Id;
import com.baidu.hugegraph.backend.query.Condition;

View File

@ -19,6 +19,7 @@
package com.baidu.hugegraph.util;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@ -33,27 +34,40 @@ public final class CopyUtil {
}
for (Field field : o.getClass().getDeclaredFields()) {
field.setAccessible(true);
Object childObj = field.get(o);
if (childObj == null || Modifier.isFinal(field.getModifiers())) {
Object value = field.get(o);
if (value == null || Modifier.isFinal(field.getModifiers())) {
continue;
}
Class<?> declareType = field.getType();
Class<?> valueType = childObj.getClass();
Class<?> valueType = value.getClass();
if (ReflectionUtil.isSimpleType(declareType) ||
ReflectionUtil.isSimpleType(valueType)) {
field.set(clone, field.get(o));
field.set(clone, value);
} else if (declareType.isArray() && valueType.isArray() &&
valueType.getComponentType().isPrimitive()) {
field.set(clone, cloneArray(value));
} else {
if (childObj == o) {
if (value == o) {
field.set(clone, clone);
} else {
field.set(clone, cloneObject(field.get(o), null));
field.set(clone, cloneObject(value, null));
}
}
}
return clone;
}
private static Object cloneArray(Object value) {
Class<?> valueType = value.getClass();
assert valueType.isArray() &&
valueType.getComponentType().isPrimitive();
int len = Array.getLength(value);
Object array = Array.newInstance(valueType.getComponentType(), len);
System.arraycopy(value, 0, array, 0, len);
return array;
}
public static <T> T copy(T object) {
return copy(object, null);
}

View File

@ -165,5 +165,4 @@
</plugin>
</plugins>
</build>
</project>
</project>

View File

@ -12,11 +12,47 @@
<artifactId>hugegraph-test</artifactId>
<dependencies>
<!-- Jacoco report-aggregate just statistics its directly dependent module,
so must explicitly import each submodule -->
<dependency>
<groupId>com.baidu.hugegraph</groupId>
<artifactId>hugegraph-core</artifactId>
<version>${project.version}</version>
</dependency>
<!-- The hugegraph-api module was not added because the module's test needs to
embed the bytecode before starting the service, but did not find a suitable
way to write the script to start the service -->
<dependency>
<groupId>com.baidu.hugegraph</groupId>
<artifactId>hugegraph-cassandra</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.baidu.hugegraph</groupId>
<artifactId>hugegraph-scylladb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.baidu.hugegraph</groupId>
<artifactId>hugegraph-rocksdb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.baidu.hugegraph</groupId>
<artifactId>hugegraph-hbase</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.baidu.hugegraph</groupId>
<artifactId>hugegraph-mysql</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.baidu.hugegraph</groupId>
<artifactId>hugegraph-dist</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-test</artifactId>
@ -35,134 +71,143 @@
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<executions>
<execution>
<id>core-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/CoreTestSuite.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>unit-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/UnitTestSuite.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>api-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/ApiTestSuite.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>tinkerpop-structure-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/StructureStandardTest.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>tinkerpop-process-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/ProcessStandardTest.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>tinkerpop-structure-perf-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/StructurePerformanceTest.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>tinkerpop-process-perf-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/ProcessPerformanceTest.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<filesets>
<fileset>
<directory>${top.level.dir}</directory>
<excludes>
<exclude>${final.name}/**</exclude>
<exclude>*.tar.gz</exclude>
<exclude>*.zip</exclude>
<exclude>*.tar</exclude>
</excludes>
<followSymlinks>false</followSymlinks>
</fileset>
<fileset>
<directory>${final.name}</directory>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
<check />
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<executions>
<execution>
<id>core-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/CoreTestSuite.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>unit-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/UnitTestSuite.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>api-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/ApiTestSuite.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>tinkerpop-structure-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/StructureStandardTest.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>tinkerpop-process-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/ProcessStandardTest.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>tinkerpop-structure-perf-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/StructurePerformanceTest.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>tinkerpop-process-perf-test</id>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/
</testSourceDirectory>
<testClassesDirectory>${basedir}/target/classes/
</testClassesDirectory>
<includes>
<include>**/ProcessPerformanceTest.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<filesets>
<fileset>
<directory>${top.level.dir}</directory>
<excludes>
<exclude>${final.name}/**</exclude>
<exclude>*.tar.gz</exclude>
<exclude>*.zip</exclude>
<exclude>*.tar</exclude>
</excludes>
<followSymlinks>false</followSymlinks>
</fileset>
<fileset>
<directory>${final.name}</directory>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
<executions>
<execution>
<id>pre-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>post-test</id>
<phase>test</phase>
<goals>
<goal>report-aggregate</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/../target/site/jacoco</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
@ -244,4 +289,4 @@
</properties>
</profile>
</profiles>
</project>
</project>