com.liferay.jenkins.results.parser.test.clazz.group.JUnitBatchTestClassGroup Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.jenkins.results.parser
Show all versions of com.liferay.jenkins.results.parser
Liferay Jenkins Results Parser
The newest version!
/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
package com.liferay.jenkins.results.parser.test.clazz.group;
import com.google.common.collect.Lists;
import com.liferay.jenkins.results.parser.JenkinsResultsParserUtil;
import com.liferay.jenkins.results.parser.PortalAcceptancePullRequestJob;
import com.liferay.jenkins.results.parser.PortalGitWorkingDirectory;
import com.liferay.jenkins.results.parser.PortalTestClassJob;
import com.liferay.jenkins.results.parser.job.property.JobProperty;
import com.liferay.jenkins.results.parser.test.batch.JUnitTestBatch;
import com.liferay.jenkins.results.parser.test.batch.JUnitTestSelector;
import com.liferay.jenkins.results.parser.test.clazz.JUnitTestClass;
import com.liferay.jenkins.results.parser.test.clazz.JUnitTestClassBalancedListSplitter;
import com.liferay.jenkins.results.parser.test.clazz.TestClass;
import com.liferay.jenkins.results.parser.test.clazz.TestClassFactory;
import com.liferay.jenkins.results.parser.test.clazz.TestClassMethod;
import java.io.File;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import org.json.JSONArray;
import org.json.JSONObject;
/**
* @author Yi-Chen Tsai
*/
public class JUnitBatchTestClassGroup extends BatchTestClassGroup {
@Override
public int getAxisCount() {
if (ignore()) {
return 0;
}
int axisCount = super.getAxisCount();
if ((axisCount == 0) && _includeAutoBalanceTests) {
return 1;
}
return axisCount;
}
public List getExcludesJobProperties() {
if (_jUnitTestBatch != null) {
List testBatchJobProperties =
getTestSelectorExcludesJobProperties();
recordJobProperties(testBatchJobProperties);
return testBatchJobProperties;
}
List excludesJobProperties = new ArrayList<>();
excludesJobProperties.addAll(getRequiredExcludesJobProperties());
if (testReleaseBundle) {
excludesJobProperties.addAll(getReleaseExcludesJobProperties());
}
else if (testRelevantChanges) {
excludesJobProperties.addAll(getRelevantExcludesJobProperties());
}
else {
excludesJobProperties.addAll(getDefaultExcludesJobProperties());
}
if (includeStableTestSuite && isStableTestSuiteBatch()) {
excludesJobProperties.addAll(
getStableDefaultExcludesJobProperties());
excludesJobProperties.addAll(
getStableRequiredExcludesJobProperties());
}
excludesJobProperties.removeAll(Collections.singleton(null));
recordJobProperties(excludesJobProperties);
return excludesJobProperties;
}
public List getFilterJobProperties() {
List filterJobProperties = new ArrayList<>();
filterJobProperties.add(
getJobProperty(
"test.batch.class.names.filter", JobProperty.Type.FILTER_GLOB));
recordJobProperties(filterJobProperties);
return filterJobProperties;
}
public List getIncludesJobProperties() {
if (_jUnitTestBatch != null) {
List testBatchJobProperties =
getTestSelectorIncludesJobProperties();
recordJobProperties(testBatchJobProperties);
return testBatchJobProperties;
}
List includesJobProperties = new ArrayList<>();
includesJobProperties.addAll(getRequiredIncludesJobProperties());
if (testReleaseBundle) {
includesJobProperties.addAll(getReleaseIncludesJobProperties());
}
else if (testRelevantChanges) {
includesJobProperties.addAll(getRelevantIncludesJobProperties());
}
else {
includesJobProperties.addAll(getDefaultIncludesJobProperties());
}
if (includeStableTestSuite && isStableTestSuiteBatch()) {
includesJobProperties.addAll(
getStableDefaultIncludesJobProperties());
includesJobProperties.addAll(
getStableRequiredIncludesJobProperties());
}
includesJobProperties.removeAll(Collections.singleton(null));
recordJobProperties(includesJobProperties);
return includesJobProperties;
}
public File getJavaFileFromFullClassName(String fullClassName) {
String classFileName =
fullClassName.replaceAll(".*\\.([^\\.]+)", "$1") + ".java";
String classPackageName = fullClassName.substring(
0, fullClassName.lastIndexOf("."));
String classPackagePath = classPackageName.replaceAll("\\.", "/");
for (String javaDirPath : _javaDirPathStrings) {
if (!javaDirPath.contains(classPackagePath)) {
continue;
}
File classFile = new File(javaDirPath, classFileName);
if (!classFile.exists()) {
continue;
}
String classFilePath = classFile.getPath();
if (!classFilePath.contains(
classPackagePath + "/" + classFileName)) {
continue;
}
return classFile;
}
return null;
}
@Override
public JSONObject getJSONObject() {
if (jsonObject != null) {
return jsonObject;
}
jsonObject = super.getJSONObject();
jsonObject.put("auto_balance_test_files", _autoBalanceTestFiles);
jsonObject.put("exclude_globs", getGlobs(getExcludesJobProperties()));
jsonObject.put("filter_globs", getGlobs(getFilterJobProperties()));
jsonObject.put("include_auto_balance_tests", _includeAutoBalanceTests);
jsonObject.put("include_globs", getGlobs(getIncludesJobProperties()));
jsonObject.put(
"include_unstaged_test_class_files",
_includeUnstagedTestClassFiles);
jsonObject.put("target_duration", getTargetAxisDuration());
return jsonObject;
}
public void writeTestCSVReportFile() throws Exception {
CSVReport csvReport = new CSVReport(
new CSVReport.Row(
"Class Name", "Method Name", "Ignored", "File Path"));
for (JUnitTestClass jUnitTestClass :
TestClassFactory.getJUnitTestClasses()) {
File testClassFile = jUnitTestClass.getTestClassFile();
String testClassFileRelativePath =
JenkinsResultsParserUtil.getPathRelativeTo(
testClassFile,
portalGitWorkingDirectory.getWorkingDirectory());
String className = testClassFile.getName();
className = className.replace(".class", "");
List testClassMethods =
jUnitTestClass.getTestClassMethods();
for (TestClassMethod testClassMethod : testClassMethods) {
CSVReport.Row csvReportRow = new CSVReport.Row();
csvReportRow.add(className);
csvReportRow.add(testClassMethod.getName());
if (testClassMethod.isIgnored()) {
csvReportRow.add("TRUE");
}
else {
csvReportRow.add("");
}
csvReportRow.add(testClassFileRelativePath);
csvReport.addRow(csvReportRow);
}
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd-yyyy");
File csvReportFile = new File(
JenkinsResultsParserUtil.combine(
"Report_junit_", simpleDateFormat.format(new Date()), ".csv"));
try {
JenkinsResultsParserUtil.write(csvReportFile, csvReport.toString());
}
catch (IOException ioException) {
throw new RuntimeException(ioException);
}
}
protected JUnitBatchTestClassGroup(
JSONObject jsonObject, PortalTestClassJob portalTestClassJob) {
super(jsonObject, portalTestClassJob);
JSONArray autoBalanceTestFilesJSONArray = jsonObject.getJSONArray(
"auto_balance_test_files");
if ((autoBalanceTestFilesJSONArray != null) &&
!autoBalanceTestFilesJSONArray.isEmpty()) {
for (int i = 0; i < autoBalanceTestFilesJSONArray.length(); i++) {
String autoBalanceTestFilePath =
autoBalanceTestFilesJSONArray.getString(i);
if (JenkinsResultsParserUtil.isNullOrEmpty(
autoBalanceTestFilePath)) {
continue;
}
_autoBalanceTestFiles.add(new File(autoBalanceTestFilePath));
}
}
_includeAutoBalanceTests = jsonObject.getBoolean(
"include_auto_balance_tests");
_includeUnstagedTestClassFiles = jsonObject.getBoolean(
"include_unstaged_test_class_files");
}
protected JUnitBatchTestClassGroup(
String batchName, PortalTestClassJob portalTestClassJob) {
super(batchName, portalTestClassJob);
if (ignore()) {
_includeUnstagedTestClassFiles = false;
return;
}
if (portalTestClassJob instanceof PortalAcceptancePullRequestJob) {
PortalAcceptancePullRequestJob portalAcceptancePullRequestJob =
(PortalAcceptancePullRequestJob)portalTestClassJob;
_includeUnstagedTestClassFiles =
portalAcceptancePullRequestJob.isCentralMergePullRequest();
}
else {
_includeUnstagedTestClassFiles = false;
}
_loadJavaFiles(_getWorkingDirectory());
setTestClasses();
_setAutoBalanceTestFiles();
_setIncludeAutoBalanceTests();
setAxisTestClassGroups();
setSegmentTestClassGroups();
}
protected JUnitBatchTestClassGroup(
String batchName, PortalTestClassJob portalTestClassJob,
JUnitTestBatch jUnitTestBatch) {
super(batchName, portalTestClassJob);
if (ignore()) {
_includeUnstagedTestClassFiles = false;
return;
}
if (portalTestClassJob instanceof PortalAcceptancePullRequestJob) {
PortalAcceptancePullRequestJob portalAcceptancePullRequestJob =
(PortalAcceptancePullRequestJob)portalTestClassJob;
_includeUnstagedTestClassFiles =
portalAcceptancePullRequestJob.isCentralMergePullRequest();
}
else {
_includeUnstagedTestClassFiles = false;
}
_jUnitTestBatch = jUnitTestBatch;
_loadJavaFiles(_getWorkingDirectory());
setTestClasses(jUnitTestBatch.getTestSelector());
_setAutoBalanceTestFiles();
_setIncludeAutoBalanceTests();
setAxisTestClassGroups();
setSegmentTestClassGroups();
}
protected List getDefaultExcludesJobProperties() {
List excludesJobProperties = new ArrayList<>();
excludesJobProperties.add(
getJobProperty(
"test.batch.class.names.excludes",
JobProperty.Type.EXCLUDE_GLOB));
return excludesJobProperties;
}
protected List getDefaultIncludesJobProperties() {
List includesJobProperties = new ArrayList<>();
includesJobProperties.add(
getJobProperty(
"test.batch.class.names.includes",
JobProperty.Type.INCLUDE_GLOB));
return includesJobProperties;
}
protected List getIncludesPathMatchers() {
if (!isRootCauseAnalysis()) {
return getPathMatchers(getIncludesJobProperties());
}
List includeGlobs = new ArrayList<>();
String portalBatchTestSelector = System.getenv(
"PORTAL_BATCH_TEST_SELECTOR");
if (JenkinsResultsParserUtil.isNullOrEmpty(portalBatchTestSelector)) {
portalBatchTestSelector = getBuildStartProperty(
"PORTAL_BATCH_TEST_SELECTOR");
}
if (!JenkinsResultsParserUtil.isNullOrEmpty(portalBatchTestSelector)) {
Collections.addAll(
includeGlobs,
JenkinsResultsParserUtil.getGlobsFromProperty(
portalBatchTestSelector));
}
return JenkinsResultsParserUtil.toPathMatchers(
JenkinsResultsParserUtil.combine(
JenkinsResultsParserUtil.getCanonicalPath(
portalGitWorkingDirectory.getWorkingDirectory()),
File.separator),
includeGlobs.toArray(new String[0]));
}
protected List getReleaseExcludesJobProperties() {
List excludesJobProperties = new ArrayList<>();
excludesJobProperties.addAll(getDefaultExcludesJobProperties());
excludesJobProperties.add(
getJobProperty(
"test.batch.class.names.excludes.release",
JobProperty.Type.EXCLUDE_GLOB));
return excludesJobProperties;
}
protected List getReleaseIncludesJobProperties() {
return getDefaultIncludesJobProperties();
}
protected List getRelevantExcludesJobProperties() {
List excludesJobProperties = new ArrayList<>();
excludesJobProperties.addAll(getDefaultExcludesJobProperties());
excludesJobProperties.add(
getJobProperty(
"test.batch.class.names.excludes.relevant",
JobProperty.Type.EXCLUDE_GLOB));
return excludesJobProperties;
}
protected List getRelevantIncludesJobProperties() {
List moduleDirsList = null;
try {
moduleDirsList = portalGitWorkingDirectory.getModuleDirsList();
}
catch (IOException ioException) {
File workingDirectory =
portalGitWorkingDirectory.getWorkingDirectory();
throw new RuntimeException(
JenkinsResultsParserUtil.combine(
"Unable to get module directories in ",
workingDirectory.getPath()),
ioException);
}
List includesJobProperties = new ArrayList<>();
List modifiedFilesList =
portalGitWorkingDirectory.getModifiedFilesList();
for (File modifiedFile : modifiedFilesList) {
boolean foundModuleFile = false;
for (File moduleDir : moduleDirsList) {
if (JenkinsResultsParserUtil.isFileInDirectory(
moduleDir, modifiedFile)) {
foundModuleFile = true;
break;
}
}
if (foundModuleFile) {
continue;
}
includesJobProperties.addAll(getDefaultIncludesJobProperties());
break;
}
return includesJobProperties;
}
protected List getRequiredExcludesJobProperties() {
List excludesJobProperties = new ArrayList<>();
excludesJobProperties.add(
getJobProperty(
"test.batch.class.names.excludes.required",
JobProperty.Type.EXCLUDE_GLOB));
return excludesJobProperties;
}
protected List getRequiredIncludesJobProperties() {
List includesJobProperties = new ArrayList<>();
includesJobProperties.add(
getJobProperty(
"test.batch.class.names.includes.required",
JobProperty.Type.INCLUDE_GLOB));
return includesJobProperties;
}
protected List getStableDefaultExcludesJobProperties() {
List excludesJobProperties = new ArrayList<>();
String batchName = getBatchName();
if (!batchName.endsWith("_stable")) {
batchName += "_stable";
}
excludesJobProperties.add(
getJobProperty(
"test.batch.class.names.excludes", NAME_STABLE_TEST_SUITE,
batchName, JobProperty.Type.EXCLUDE_GLOB));
return excludesJobProperties;
}
protected List getStableDefaultIncludesJobProperties() {
List includesJobProperties = new ArrayList<>();
String batchName = getBatchName();
if (!batchName.endsWith("_stable")) {
batchName += "_stable";
}
includesJobProperties.add(
getJobProperty(
"test.batch.class.names.includes", NAME_STABLE_TEST_SUITE,
batchName, JobProperty.Type.INCLUDE_GLOB));
return includesJobProperties;
}
protected List getStableRequiredExcludesJobProperties() {
List excludesJobProperties = new ArrayList<>();
String batchName = getBatchName();
if (!batchName.endsWith("_stable")) {
batchName += "_stable";
}
excludesJobProperties.add(
getJobProperty(
"test.batch.class.names.excludes.required",
NAME_STABLE_TEST_SUITE, batchName,
JobProperty.Type.EXCLUDE_GLOB));
return excludesJobProperties;
}
protected List getStableRequiredIncludesJobProperties() {
List includesJobProperties = new ArrayList<>();
String batchName = getBatchName();
if (!batchName.endsWith("_stable")) {
batchName += "_stable";
}
includesJobProperties.add(
getJobProperty(
"test.batch.class.names.includes.required",
NAME_STABLE_TEST_SUITE, batchName,
JobProperty.Type.INCLUDE_GLOB));
return includesJobProperties;
}
protected List getTestSelectorExcludesJobProperties() {
JUnitTestSelector jUnitTestSelector = _jUnitTestBatch.getTestSelector();
return jUnitTestSelector.getExcludesJobProperties();
}
protected List getTestSelectorIncludesJobProperties() {
JUnitTestSelector jUnitTestSelector = _jUnitTestBatch.getTestSelector();
return jUnitTestSelector.getIncludesJobProperties();
}
@Override
protected boolean ignore() {
return false;
}
@Override
protected void setAxisTestClassGroups() {
long targetAxisDuration = getTargetAxisDuration();
if (targetAxisDuration > 0) {
List testClasses = getTestClasses();
if (testClasses.isEmpty()) {
if (!_includeAutoBalanceTests) {
return;
}
axisTestClassGroups.add(
0, TestClassGroupFactory.newAxisTestClassGroup(this));
}
else {
List batchTestClasses = new ArrayList<>(testClasses);
JUnitTestClassBalancedListSplitter
jUnitTestClassBalancedListSplitter =
new JUnitTestClassBalancedListSplitter(
targetAxisDuration);
List> testClassLists =
jUnitTestClassBalancedListSplitter.split(batchTestClasses);
for (List testClassList : testClassLists) {
AxisTestClassGroup axisTestClassGroup =
TestClassGroupFactory.newAxisTestClassGroup(this);
axisTestClassGroup.addTestClasses(testClassList);
axisTestClassGroups.add(axisTestClassGroup);
}
}
}
else {
int axisCount = getAxisCount();
if (axisCount == 0) {
return;
}
int testClassCount = testClasses.size();
if (testClassCount == 0) {
if (!_includeAutoBalanceTests) {
return;
}
axisTestClassGroups.add(
0, TestClassGroupFactory.newAxisTestClassGroup(this));
}
else {
int axisSize = (int)Math.ceil(
(double)testClassCount / axisCount);
for (List axisTestClasses :
Lists.partition(testClasses, axisSize)) {
AxisTestClassGroup axisTestClassGroup =
TestClassGroupFactory.newAxisTestClassGroup(this);
for (TestClass axisTestClass : axisTestClasses) {
axisTestClassGroup.addTestClass(axisTestClass);
}
axisTestClassGroups.add(axisTestClassGroup);
}
}
}
if (!_includeAutoBalanceTests) {
return;
}
for (AxisTestClassGroup axisTestClassGroup : axisTestClassGroups) {
for (File autoBalanceTestFile : _autoBalanceTestFiles) {
String filePath = autoBalanceTestFile.getPath();
filePath = filePath.replace(".class", ".java");
TestClass testClass = TestClassFactory.newTestClass(
this, new File(filePath));
if (!testClass.hasTestClassMethods()) {
continue;
}
axisTestClassGroup.addTestClass(testClass);
}
}
}
protected void setTestClasses() {
List includesPathMatchers = getIncludesPathMatchers();
if (includesPathMatchers.isEmpty()) {
return;
}
long start = System.currentTimeMillis();
List filterPathMatchers = getPathMatchers(
getFilterJobProperties());
List excludesPathMatchers = getPathMatchers(
getExcludesJobProperties());
BatchTestClassGroup batchTestClassGroup = this;
for (final File javaTestClassFile : _javaTestClassFiles) {
if (JenkinsResultsParserUtil.isFileExcluded(
excludesPathMatchers, javaTestClassFile) ||
!JenkinsResultsParserUtil.isFileIncluded(
excludesPathMatchers, includesPathMatchers,
javaTestClassFile) ||
!JenkinsResultsParserUtil.isFileIncluded(
null, filterPathMatchers, javaTestClassFile)) {
continue;
}
TestClass testClass = TestClassFactory.newTestClass(
batchTestClassGroup, javaTestClassFile);
if ((testClass != null) && !testClass.isIgnored() &&
testClass.hasTestClassMethods()) {
testClasses.add(testClass);
}
}
long duration = System.currentTimeMillis() - start;
System.out.println(
JenkinsResultsParserUtil.combine(
"[", getBatchName(), "] Found ",
String.valueOf(testClasses.size()), " test classes in ",
JenkinsResultsParserUtil.toDurationString(duration)));
Collections.sort(testClasses);
}
protected void setTestClasses(JUnitTestSelector jUnitTestSelector) {
List includesJobProperties =
jUnitTestSelector.getIncludesJobProperties();
recordJobProperties(includesJobProperties);
List includesPathMatchers = getPathMatchers(
includesJobProperties);
if (includesPathMatchers.isEmpty()) {
return;
}
long start = System.currentTimeMillis();
List filterPathMatchers = getPathMatchers(
getFilterJobProperties());
List excludesJobProperties =
jUnitTestSelector.getExcludesJobProperties();
List excludesPathMatchers = getPathMatchers(
excludesJobProperties);
recordJobProperties(excludesJobProperties);
BatchTestClassGroup batchTestClassGroup = this;
for (final File javaTestClassFile : _javaTestClassFiles) {
if (JenkinsResultsParserUtil.isFileExcluded(
excludesPathMatchers, javaTestClassFile) ||
!JenkinsResultsParserUtil.isFileIncluded(
excludesPathMatchers, includesPathMatchers,
javaTestClassFile) ||
!JenkinsResultsParserUtil.isFileIncluded(
null, filterPathMatchers, javaTestClassFile)) {
continue;
}
TestClass testClass = TestClassFactory.newTestClass(
batchTestClassGroup, javaTestClassFile);
if ((testClass != null) && !testClass.isIgnored() &&
testClass.hasTestClassMethods()) {
testClasses.add(testClass);
}
}
long duration = System.currentTimeMillis() - start;
System.out.println(
JenkinsResultsParserUtil.combine(
"[", getBatchName(), "] Found ",
String.valueOf(testClasses.size()), " test classes in ",
JenkinsResultsParserUtil.toDurationString(duration)));
Collections.sort(testClasses);
}
private File _getWorkingDirectory() {
PortalGitWorkingDirectory portalGitWorkingDirectory =
getPortalGitWorkingDirectory();
File workingDirectory = portalGitWorkingDirectory.getWorkingDirectory();
JobProperty jobProperty = getJobProperty("git.working.directory");
String jobPropertyValue = jobProperty.getValue();
if (!JenkinsResultsParserUtil.isNullOrEmpty(jobPropertyValue)) {
workingDirectory = new File(jobPropertyValue);
}
return workingDirectory;
}
private void _loadJavaFiles(File workingDirectory) {
synchronized (_javaFilesLoaded) {
if (_javaFilesLoaded.get()) {
return;
}
long start = System.currentTimeMillis();
try {
Files.walkFileTree(
workingDirectory.toPath(),
new SimpleFileVisitor() {
@Override
public FileVisitResult preVisitDirectory(
Path filePath,
BasicFileAttributes basicFileAttributes) {
String filePathString = filePath.toString();
for (String ignorableDir : _IGNORABLE_DIRS) {
if (filePathString.endsWith(ignorableDir)) {
return FileVisitResult.SKIP_SUBTREE;
}
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(
Path path,
BasicFileAttributes basicFileAttributes) {
_searchedFileCount++;
String pathString = path.toString();
if (pathString.endsWith(".java")) {
Path parentPath = path.getParent();
_javaDirPathStrings.add(parentPath.toString());
}
if (pathString.endsWith("Test.java") ||
pathString.endsWith("TestCase.java")) {
_javaTestClassFiles.add(path.toFile());
return FileVisitResult.CONTINUE;
}
return FileVisitResult.CONTINUE;
}
});
}
catch (IOException ioException) {
throw new RuntimeException(
"Unable to search for test file names in " +
workingDirectory.toPath(),
ioException);
}
long duration = System.currentTimeMillis() - start;
System.out.println(
JenkinsResultsParserUtil.combine(
"Found ", String.valueOf(_javaDirPathStrings.size()),
" Java directories and ",
String.valueOf(_javaTestClassFiles.size()),
" Java test class files in ", workingDirectory.toString(),
" in ",
JenkinsResultsParserUtil.toDurationString(duration)));
_javaFilesLoaded.set(true);
}
}
private void _setAutoBalanceTestFiles() {
JobProperty jobProperty = getJobProperty(
"test.class.names.auto.balance");
String jobPropertyValue = jobProperty.getValue();
if (JenkinsResultsParserUtil.isNullOrEmpty(jobPropertyValue)) {
return;
}
recordJobProperty(jobProperty);
for (String autoBalanceTestName : jobPropertyValue.split(",")) {
String fullClassName = autoBalanceTestName.replaceAll(
".*\\/?(com\\/.*)\\.(class|java)", "$1");
fullClassName = fullClassName.replaceAll("/", "\\.");
File javaTestClassFile = getJavaFileFromFullClassName(
fullClassName);
if (!JenkinsResultsParserUtil.isFileIncluded(
null, getPathMatchers(getFilterJobProperties()),
javaTestClassFile)) {
continue;
}
_autoBalanceTestFiles.add(javaTestClassFile);
}
}
private void _setIncludeAutoBalanceTests() {
if (!testClasses.isEmpty()) {
_includeAutoBalanceTests = true;
return;
}
List modifiedJavaFilesList =
portalGitWorkingDirectory.getModifiedFilesList(
_includeUnstagedTestClassFiles, null,
JenkinsResultsParserUtil.toPathMatchers(
JenkinsResultsParserUtil.combine(
"**", File.separator, "*.java")));
if (!_autoBalanceTestFiles.isEmpty() &&
!modifiedJavaFilesList.isEmpty()) {
_includeAutoBalanceTests = true;
return;
}
_includeAutoBalanceTests = false;
}
private static final String[] _IGNORABLE_DIRS = {
"/.git", "/.gradle", "/.m2", "/.m2-tmp", "/build/node", "/build/tmp",
"/node_modules"
};
private static final Set _javaDirPathStrings =
ConcurrentHashMap.newKeySet();
private static final AtomicBoolean _javaFilesLoaded = new AtomicBoolean();
private static final Set _javaTestClassFiles =
ConcurrentHashMap.newKeySet();
private static int _searchedFileCount;
private final List _autoBalanceTestFiles = new ArrayList<>();
private boolean _includeAutoBalanceTests;
private final boolean _includeUnstagedTestClassFiles;
private JUnitTestBatch _jUnitTestBatch;
}