HADOOP-11917. test-patch.sh should work with ${BASEDIR}/patchprocess setups (aw)

This commit is contained in:
Allen Wittenauer 2015-05-05 11:26:31 -07:00
parent 24d3a2d4fd
commit d33419ae01
4 changed files with 84 additions and 21 deletions

1
.gitignore vendored
View File

@ -23,3 +23,4 @@ hadoop-tools/hadoop-openstack/src/test/resources/contract-test-options.xml
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/tla/yarnregistry.toolbox hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/tla/yarnregistry.toolbox
yarnregistry.pdf yarnregistry.pdf
hadoop-tools/hadoop-aws/src/test/resources/contract-test-options.xml hadoop-tools/hadoop-aws/src/test/resources/contract-test-options.xml
patchprocess/

View File

@ -535,6 +535,26 @@ function echo_and_redirect
"${@}" > "${logfile}" 2>&1 "${@}" > "${logfile}" 2>&1
} }
## @description is PATCH_DIR relative to BASEDIR?
## @audience public
## @stability stable
## @replaceable yes
## @returns 1 - no, PATCH_DIR
## @returns 0 - yes, PATCH_DIR - BASEDIR
function relative_patchdir
{
local p=${PATCH_DIR#${BASEDIR}}
if [[ ${#p} -eq ${#PATCH_DIR} ]]; then
echo ${p}
return 1
fi
p=${p#/}
echo ${p}
return 0
}
## @description Print the usage information ## @description Print the usage information
## @audience public ## @audience public
## @stability stable ## @stability stable
@ -697,7 +717,8 @@ function parse_args
esac esac
done done
# if we get a relative path, turn it absolute # we need absolute dir for ${BASEDIR}
cd "${CWD}"
BASEDIR=$(cd -P -- "${BASEDIR}" >/dev/null && pwd -P) BASEDIR=$(cd -P -- "${BASEDIR}" >/dev/null && pwd -P)
if [[ ${BUILD_NATIVE} == "true" ]] ; then if [[ ${BUILD_NATIVE} == "true" ]] ; then
@ -723,6 +744,7 @@ function parse_args
JENKINS=false JENKINS=false
fi fi
cd "${CWD}"
if [[ ! -d ${PATCH_DIR} ]]; then if [[ ! -d ${PATCH_DIR} ]]; then
mkdir -p "${PATCH_DIR}" mkdir -p "${PATCH_DIR}"
if [[ $? == 0 ]] ; then if [[ $? == 0 ]] ; then
@ -733,6 +755,9 @@ function parse_args
fi fi
fi fi
# we need absolute dir for PATCH_DIR
PATCH_DIR=$(cd -P -- "${PATCH_DIR}" >/dev/null && pwd -P)
GITDIFFLINES=${PATCH_DIR}/gitdifflines.txt GITDIFFLINES=${PATCH_DIR}/gitdifflines.txt
} }
@ -821,17 +846,36 @@ function find_changed_modules
function git_checkout function git_checkout
{ {
local currentbranch local currentbranch
local exemptdir
big_console_header "Confirming git environment" big_console_header "Confirming git environment"
cd "${BASEDIR}"
if [[ ! -d .git ]]; then
hadoop_error "ERROR: ${BASEDIR} is not a git repo."
cleanup_and_exit 1
fi
if [[ ${RESETREPO} == "true" ]] ; then if [[ ${RESETREPO} == "true" ]] ; then
cd "${BASEDIR}"
${GIT} reset --hard ${GIT} reset --hard
if [[ $? != 0 ]]; then if [[ $? != 0 ]]; then
hadoop_error "ERROR: git reset is failing" hadoop_error "ERROR: git reset is failing"
cleanup_and_exit 1 cleanup_and_exit 1
fi fi
${GIT} clean -xdf
# if PATCH_DIR is in BASEDIR, then we don't want
# git wiping it out.
exemptdir=$(relative_patchdir)
if [[ $? == 1 ]]; then
${GIT} clean -xdf
else
# we do, however, want it emptied of all _files_.
# we need to leave _directories_ in case we are in
# re-exec mode (which places a directory full of stuff in it)
hadoop_debug "Exempting ${exemptdir} from clean"
rm "${PATCH_DIR}/*" 2>/dev/null
${GIT} clean -xdf -e "${exemptdir}"
fi
if [[ $? != 0 ]]; then if [[ $? != 0 ]]; then
hadoop_error "ERROR: git clean is failing" hadoop_error "ERROR: git clean is failing"
cleanup_and_exit 1 cleanup_and_exit 1
@ -875,11 +919,6 @@ function git_checkout
fi fi
else else
cd "${BASEDIR}"
if [[ ! -d .git ]]; then
hadoop_error "ERROR: ${BASEDIR} is not a git repo."
cleanup_and_exit 1
fi
status=$(${GIT} status --porcelain) status=$(${GIT} status --porcelain)
if [[ "${status}" != "" && -z ${DIRTY_WORKSPACE} ]] ; then if [[ "${status}" != "" && -z ${DIRTY_WORKSPACE} ]] ; then
@ -1000,6 +1039,16 @@ function verify_valid_branch
local check=$2 local check=$2
local i local i
# shortcut some common
# non-resolvable names
if [[ -z ${check} ]]; then
return 1
fi
if [[ ${check} == patch ]]; then
return 1
fi
if [[ ${check} =~ ^git ]]; then if [[ ${check} =~ ^git ]]; then
ref=$(echo "${check}" | cut -f2 -dt) ref=$(echo "${check}" | cut -f2 -dt)
count=$(echo "${ref}" | wc -c | tr -d ' ') count=$(echo "${ref}" | wc -c | tr -d ' ')
@ -2207,9 +2256,16 @@ function cleanup_and_exit
if [[ ${JENKINS} == "true" ]] ; then if [[ ${JENKINS} == "true" ]] ; then
if [[ -e "${PATCH_DIR}" ]] ; then if [[ -e "${PATCH_DIR}" ]] ; then
hadoop_debug "mv ${PATCH_DIR} ${BASEDIR} "
if [[ -d "${PATCH_DIR}" ]]; then if [[ -d "${PATCH_DIR}" ]]; then
mv "${PATCH_DIR}" "${BASEDIR}" # if PATCH_DIR is already inside BASEDIR, then
# there is no need to move it since we assume that
# Jenkins or whatever already knows where it is at
# since it told us to put it there!
relative_patchdir >/dev/null
if [[ $? == 0 ]]; then
hadoop_debug "mv ${PATCH_DIR} ${BASEDIR}"
mv "${PATCH_DIR}" "${BASEDIR}"
fi
fi fi
fi fi
fi fi
@ -2442,6 +2498,8 @@ find_changed_files
determine_needed_tests determine_needed_tests
# from here on out, we'll be in ${BASEDIR} for cwd
# routines need to pushd/popd if they change.
git_checkout git_checkout
RESULT=$? RESULT=$?
if [[ ${JENKINS} == "true" ]] ; then if [[ ${JENKINS} == "true" ]] ; then

View File

@ -533,6 +533,9 @@ Release 2.8.0 - UNRELEASED
HADOOP-11911. test-patch should allow configuration of default branch HADOOP-11911. test-patch should allow configuration of default branch
(Sean Busbey via aw) (Sean Busbey via aw)
HADOOP-11917. test-patch.sh should work with ${BASEDIR}/patchprocess
setups (aw)
OPTIMIZATIONS OPTIMIZATIONS
HADOOP-11785. Reduce the number of listStatus operation in distcp HADOOP-11785. Reduce the number of listStatus operation in distcp

23
pom.xml
View File

@ -178,7 +178,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
</dependency> </dependency>
</dependencies> </dependencies>
</plugin> </plugin>
<!--This plugin's configuration is used to store Eclipse m2e settings only. <!--This plugin's configuration is used to store Eclipse m2e settings only.
It has no influence on the Maven build itself.--> It has no influence on the Maven build itself.-->
<plugin> <plugin>
<groupId>org.eclipse.m2e</groupId> <groupId>org.eclipse.m2e</groupId>
@ -361,6 +361,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
<exclude>.git/**</exclude> <exclude>.git/**</exclude>
<exclude>.idea/**</exclude> <exclude>.idea/**</exclude>
<exclude>**/build/**</exclude> <exclude>**/build/**</exclude>
<exclude>**/patchprocess/**</exclude>
</excludes> </excludes>
</configuration> </configuration>
</plugin> </plugin>
@ -391,7 +392,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
<reporting> <reporting>
<excludeDefaults>true</excludeDefaults> <excludeDefaults>true</excludeDefaults>
<plugins> <plugins>
@ -441,15 +442,15 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
</docletArtifact> </docletArtifact>
</docletArtifacts> </docletArtifacts>
<useStandardDocletOptions>true</useStandardDocletOptions> <useStandardDocletOptions>true</useStandardDocletOptions>
<!-- switch on dependency-driven aggregation --> <!-- switch on dependency-driven aggregation -->
<includeDependencySources>false</includeDependencySources> <includeDependencySources>false</includeDependencySources>
<dependencySourceIncludes> <dependencySourceIncludes>
<!-- include ONLY dependencies I control --> <!-- include ONLY dependencies I control -->
<dependencySourceInclude>org.apache.hadoop:hadoop-annotations</dependencySourceInclude> <dependencySourceInclude>org.apache.hadoop:hadoop-annotations</dependencySourceInclude>
</dependencySourceIncludes> </dependencySourceIncludes>
</configuration> </configuration>
<reports> <reports>
<report>aggregate</report> <report>aggregate</report>
@ -472,7 +473,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
</plugin> </plugin>
</plugins> </plugins>
</reporting> </reporting>
<profiles> <profiles>
<profile> <profile>
<id>src</id> <id>src</id>
@ -587,12 +588,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
<properties> <properties>
<cloverLicenseLocation>${user.home}/.clover.license</cloverLicenseLocation> <cloverLicenseLocation>${user.home}/.clover.license</cloverLicenseLocation>
<cloverDatabase>${project.build.directory}/clover/hadoop-coverage.db</cloverDatabase> <cloverDatabase>${project.build.directory}/clover/hadoop-coverage.db</cloverDatabase>
<!-- NB: This additional parametrization is made in order <!-- NB: This additional parametrization is made in order
to be able to re-define these properties with "-Dk=v" maven options. to be able to re-define these properties with "-Dk=v" maven options.
By some reason the expressions declared in clover By some reason the expressions declared in clover
docs like "${maven.clover.generateHtml}" do not work in that way. docs like "${maven.clover.generateHtml}" do not work in that way.
However, the below properties are confirmed to work: e.g. However, the below properties are confirmed to work: e.g.
-DcloverGenHtml=false switches off the Html generation. -DcloverGenHtml=false switches off the Html generation.
The default values provided here exactly correspond to Clover defaults, so The default values provided here exactly correspond to Clover defaults, so
the behavior is 100% backwards compatible. --> the behavior is 100% backwards compatible. -->
<cloverAlwaysReport>true</cloverAlwaysReport> <cloverAlwaysReport>true</cloverAlwaysReport>