blob: 45435b70da7d83d585b25568cc3935bc0637ae22 [file] [log] [blame]
/*
* Copyright 2006-2012 The Apache Software Foundation.
*
* Licensed 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
*
* https://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.
*/
package org.apache.jdo.exectck;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Collection;
import java.util.HashSet;
import java.util.Properties;
import org.apache.commons.io.FileUtils;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Parameter;
/** Abstract Mojo to be extended for the actual goals of this maven plugin. */
public abstract class AbstractTCKMojo extends AbstractMojo {
/** Filename of log4j2 configuration file. */
protected final String LOG4J2_CONFIGURATION = "log4j2.xml";
/** Location of TCK generated output. */
@Parameter(
property = "project.build.directory",
defaultValue = "${basedir}/target",
required = true)
protected String buildDirectory;
/** Location of the logs directory. */
@Parameter(
property = "project.log.directory",
defaultValue = "${project.build.directory}/logs",
required = true)
protected File logsDirectory;
/** Location of the configuration directory. */
@Parameter(
property = "project.conf.directory",
defaultValue = "${basedir}/src/main/resources/conf",
required = true)
protected String confDirectory;
/** Location of the configuration directory. */
@Parameter(
property = "project.sql.directory",
defaultValue = "${basedir}/src/main/resources/sql",
required = true)
protected String sqlDirectory;
/**
* List of configuration files, each describing a test configuration. Note: Collection can only be
* configured in pom.xml. Using multi-valued type because long String cannot be broken across
* lines in pom.xml.
*/
@Parameter protected Collection<String> cfgs;
/**
* List of configuration files, each describing a test configuration. Allows command line override
* of configured cfgs value.
*/
@Parameter(property = "jdo.tck.cfglist")
protected String cfgList;
/** List of databases to run tests under. Currently only derby is supported. */
@Parameter(property = "jdo.tck.dblist", defaultValue = "derby", required = true)
protected String dblist;
/**
* Implementation to be tested (jdori or iut). Any value other than "jdori" will test an
* appropriately configured IUT
*/
@Parameter(property = "jdo.tck.impl", defaultValue = "jdori", required = true)
protected String impl;
/** Location of implementation log file. */
@Parameter(
property = "jdo.tck.impl.logfile",
defaultValue = "${user.dir}/datanucleus.txt",
required = true)
protected String implLogFile;
/** Classpath including the dependencies using : as separator between entries. */
@Parameter(property = "jdo.tck.dependencyClasspath", defaultValue = "", required = true)
protected String dependencyClasspath;
protected Collection<String> dbs = new HashSet<String>();
/** List of identity types to be tested. */
@Parameter(
property = "jdo.tck.identitytypes",
defaultValue = "applicationidentity datastoreidentity",
required = true)
protected String identitytypes;
protected Collection<String> idtypes = new HashSet<String>();
/**
* Convenience method to set the cfgList from the file
* "src/main/resources/conf/configurations.list".
*
* @throws MojoExecutionException If the file could not be found/opened
*/
protected void setCfgListFromFile() throws MojoExecutionException {
try {
Properties defaultProps = new Properties();
FileInputStream in =
new FileInputStream(confDirectory + File.separator + "configurations.list");
defaultProps.load(in);
in.close();
cfgList = defaultProps.getProperty("jdo.tck.cfglist");
} catch (Exception e) {
// Error finding configurations.list
throw new MojoExecutionException(
"No configuration specified and could not "
+ "find 'src/main/resources/conf/configurations.list'");
}
}
protected void copyLog4j2ConfigurationFile() throws IOException {
File fromFile = new File(confDirectory + File.separator + impl + "-" + LOG4J2_CONFIGURATION);
File toFile =
new File(
buildDirectory + File.separator + "classes" + File.separator + LOG4J2_CONFIGURATION);
FileUtils.copyFile(fromFile, toFile);
}
protected void resetFileContent(String fileName) throws MojoExecutionException {
File file = new File(fileName);
// reset file content
try {
FileUtils.write(file, "", Charset.defaultCharset());
} catch (IOException e) {
throw new MojoExecutionException("Failed to reset file content: " + file.toURI());
}
}
}