|
@@ -1,370 +0,0 @@
|
|
|
-<!--
|
|
|
- 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 name="aspects"
|
|
|
- xmlns:artifact="urn:maven-artifact-ant">
|
|
|
- <!-- The followng are duplications and have to be customized elsewhere too -->
|
|
|
- <!-- TODO this version has to be updated synchronously with Ivy -->
|
|
|
- <property name="aspectversion" value="1.6.5"/>
|
|
|
- <!-- TODO this has to be changed synchronously with build.xml version prop.-->
|
|
|
- <!-- this workarounds of test-patch setting its own 'version' -->
|
|
|
- <property name="project.version" value="3.0.0-SNAPSHOT"/>
|
|
|
-
|
|
|
- <!-- Properties common for all fault injections -->
|
|
|
- <property name="build-fi.dir" value="${basedir}/build-fi"/>
|
|
|
- <property name="hadoop-fi.jar" location="${build.dir}/${final.name}-fi.jar" />
|
|
|
- <property name="compile-inject.output" value="${build-fi.dir}/compile-fi.log"/>
|
|
|
- <property file="${basedir}/build.properties"/>
|
|
|
-
|
|
|
- <!-- Properties related to system fault injection and tests -->
|
|
|
- <property name="herriot.suffix" value="instrumented"/>
|
|
|
- <property name="system-test-build-dir" value="${build-fi.dir}/system"/>
|
|
|
- <!-- This varialbe is set by respective injection targets -->
|
|
|
- <property name="hadoop.instrumented.jars" value=""/>
|
|
|
- <!-- Properties specifically for system fault-injections and system tests -->
|
|
|
- <property name="herriot.suffix" value="instrumented"/>
|
|
|
- <property name="instrumented.final.name"
|
|
|
- value="${name}-${herriot.suffix}-${version}"/>
|
|
|
- <property name="hadoop-mapred-instrumented.pom"
|
|
|
- location="${ivy.dir}/hadoop-mapred-${herriot.suffix}.xml" />
|
|
|
- <property name="hadoop-mapred-instrumented-test.pom"
|
|
|
- location="${ivy.dir}/hadoop-mapred-${herriot.suffix}-test.xml" />
|
|
|
- <property name="hadoop-mapred-instrumented.jar"
|
|
|
- location="${system-test-build-dir}/${name}-${herriot.suffix}-${version}.jar" />
|
|
|
- <property name="hadoop-mapred-instrumented-sources.jar"
|
|
|
- location="${system-test-build-dir}/${name}-${herriot.suffix}-${version}-sources.jar" />
|
|
|
- <property name="hadoop-mapred-instrumented-test.jar"
|
|
|
- location="${system-test-build-dir}/${name}-${herriot.suffix}-test-${version}.jar" />
|
|
|
- <property name="hadoop-mapred-instrumented-test-sources.jar"
|
|
|
- location="${system-test-build-dir}/${name}-${herriot.suffix}-test-${version}-sources.jar" />
|
|
|
- <!--All Fault Injection (FI) related targets are located in this session -->
|
|
|
-
|
|
|
- <target name="clean-fi">
|
|
|
- <delete dir="${build-fi.dir}"/>
|
|
|
- </target>
|
|
|
-
|
|
|
- <!-- Weaving aspects in place
|
|
|
- Later on one can run 'ant jar-fault-inject' to create
|
|
|
- Hadoop jar file with instrumented classes
|
|
|
- -->
|
|
|
- <!-- Target -classes-compilation has to be defined in build.xml and
|
|
|
- needs to depend on classes compilation and test classes compilation
|
|
|
- targets. This is a poor man parametrization for targets -->
|
|
|
- <target name="-compile-fault-inject" depends="-classes-compilation" >
|
|
|
- <!-- AspectJ task definition -->
|
|
|
- <taskdef
|
|
|
- resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
|
|
|
- <classpath>
|
|
|
- <pathelement
|
|
|
- location="${common.ivy.lib.dir}/aspectjtools-${aspectversion}.jar"/>
|
|
|
- </classpath>
|
|
|
- </taskdef>
|
|
|
- <echo message="Start weaving aspects in place"/>
|
|
|
- <path id="aspect.path">
|
|
|
- <pathelement location="${hadoop.instrumented.jars}"/>
|
|
|
- </path>
|
|
|
- <iajc
|
|
|
- encoding="${build.encoding}"
|
|
|
- srcdir="${java.src.dir};${build.src};${src.dir.path}"
|
|
|
- includes="org/apache/hadoop/**/*.java, org/apache/hadoop/**/*.aj"
|
|
|
- excludes="org/apache/hadoop/record/**/*"
|
|
|
- destDir="${dest.dir}"
|
|
|
- debug="${javac.debug}"
|
|
|
- target="${javac.version}"
|
|
|
- source="${javac.version}"
|
|
|
- deprecation="${javac.deprecation}"
|
|
|
- fork="true"
|
|
|
- maxmem="256m">
|
|
|
- <aspectpath refid="aspect.path"/>
|
|
|
- <classpath refid="test.classpath"/>
|
|
|
- </iajc>
|
|
|
- <loadfile property="injection.failure" srcfile="${compile-inject.output}">
|
|
|
- <filterchain>
|
|
|
- <linecontainsregexp>
|
|
|
- <regexp pattern='iajc.*warning'/>
|
|
|
- </linecontainsregexp>
|
|
|
- </filterchain>
|
|
|
- </loadfile>
|
|
|
- <fail if="injection.failure">
|
|
|
- Broken binding of advises: ${line.separator}${injection.failure}
|
|
|
- </fail>
|
|
|
- <echo message="Weaving of aspects is finished"/>
|
|
|
- </target>
|
|
|
-
|
|
|
- <!-- Classpath for running system tests -->
|
|
|
- <path id="test.system.classpath">
|
|
|
- <pathelement location="${hadoop.conf.dir.deployed}" />
|
|
|
- <pathelement location="${system-test-build-dir}/test/extraconf" />
|
|
|
- <pathelement location="${system-test-build-dir}/test/classes" />
|
|
|
- <pathelement location="${system-test-build-dir}/classes" />
|
|
|
- <pathelement location="${system-test-build-dir}/test/mapred/classes"/>
|
|
|
- <pathelement location="${system-test-build-dir}/tools" />
|
|
|
- <pathelement location="${system-test-build-dir}" />
|
|
|
- <pathelement location="${test.src.dir}" />
|
|
|
- <pathelement path="${clover.jar}" />
|
|
|
- <fileset dir="${system-test-build-dir}">
|
|
|
- <include name="**/*.jar" />
|
|
|
- <exclude name="**/excluded/" />
|
|
|
- </fileset>
|
|
|
- <path refid="classpath" />
|
|
|
- </path>
|
|
|
- <!-- compile system tests... -->
|
|
|
- <path id="test.system.compile.classpath">
|
|
|
- <pathelement location="${system-test-build-dir}/test/extraconf" />
|
|
|
- <pathelement location="${system-test-build-dir}/test/classes" />
|
|
|
- <pathelement location="${system-test-build-dir}/classes" />
|
|
|
- <pathelement location="${system-test-build-dir}/test/mapred/classes" />
|
|
|
- <pathelement location="${system-test-build-dir}/test/mapred/testjar" />
|
|
|
- <pathelement location="${system-test-build-dir}/tools" />
|
|
|
- <pathelement location="${system-test-build-dir}/examples" />
|
|
|
- <path refid="ivy-system.classpath"/>
|
|
|
- </path>
|
|
|
-
|
|
|
- <!-- ================ -->
|
|
|
- <!-- run system tests -->
|
|
|
- <!-- ================ -->
|
|
|
- <target name="test-system" depends="ivy-retrieve-common, ivy-retrieve-system"
|
|
|
- description="Run system tests">
|
|
|
- <subant buildpath="build.xml" target="jar-test-system"/>
|
|
|
- <subant target="test-system-contrib">
|
|
|
- <property name="hadoop.home" value="${hadoop.home}"/>
|
|
|
- <property name="hadoop.conf.dir" value="${hadoop.conf.dir}"/>
|
|
|
- <property name="version" value="${version}"/>
|
|
|
- <property name="hadoop.conf.dir.deployed"
|
|
|
- value="${hadoop.conf.dir.deployed}"/>
|
|
|
- <fileset file="${contrib.dir}/build.xml"/>
|
|
|
- </subant>
|
|
|
- <macro-test-runner test.file="${test.mapred.all.tests.file}"
|
|
|
- suite.type="system/test"
|
|
|
- classpath="test.system.classpath"
|
|
|
- test.dir="${system-test-build-dir}/test"
|
|
|
- fileset.dir="${test.src.dir}"
|
|
|
- hadoop.conf.dir.deployed="${hadoop.conf.dir.deployed}">
|
|
|
- </macro-test-runner>
|
|
|
- </target>
|
|
|
-
|
|
|
- <target name="injectfaults"
|
|
|
- description="Instrument classes with faults and other AOP advices">
|
|
|
- <!--mkdir to prevent <subant> failure in case the folder has been removed-->
|
|
|
- <mkdir dir="${build-fi.dir}"/>
|
|
|
- <delete file="${compile-inject.output}"/>
|
|
|
- <weave-injectfault-aspects dest.dir="${build-fi.dir}/classes"
|
|
|
- src.dir="${test.src.dir}/aop"
|
|
|
- aspects.jars="${build-fi.dir}/ivy/lib/${ant.project.name}/test/hadoop-common-${project.version}.jar">
|
|
|
- </weave-injectfault-aspects>
|
|
|
- </target>
|
|
|
-
|
|
|
- <!-- =============================================================== -->
|
|
|
- <!-- Create hadoop-{version}-dev-core.jar required to be deployed on -->
|
|
|
- <!-- cluster for system tests -->
|
|
|
- <!-- =============================================================== -->
|
|
|
- <target name="jar-system"
|
|
|
- depends="inject-system-faults"
|
|
|
- description="Make hadoop-mapred-instrumented.jar with system injections.">
|
|
|
- <macro-jar-fault-inject target.name="jar"
|
|
|
- build.dir="${system-test-build-dir}"
|
|
|
- jar.final.name="final.name"
|
|
|
- jar.final.value="${instrumented.final.name}">
|
|
|
- </macro-jar-fault-inject>
|
|
|
- <jar jarfile="${system-test-build-dir}/${instrumented.final.name}-sources.jar"
|
|
|
- update="yes">
|
|
|
- <fileset dir="${test.src.dir}/system/java" includes="org/apache/hadoop/**/*.java" />
|
|
|
- <fileset dir="${test.src.dir}/system/aop" includes="org/apache/hadoop/**/*.aj" />
|
|
|
- </jar>
|
|
|
- </target>
|
|
|
-
|
|
|
- <target name="jar-test-system" depends="inject-system-faults, compile-test-system"
|
|
|
- description="Make hadoop-mapred-instrumented-test.jar with system injections.">
|
|
|
- <subant buildpath="build.xml" target="-do-jar-test">
|
|
|
- <property name="build.dir" value="${system-test-build-dir}"/>
|
|
|
- <property name="test.final.name"
|
|
|
- value="${name}-${herriot.suffix}-test-${project.version}"/>
|
|
|
- <property name="test.build.classes"
|
|
|
- value="${system-test-build-dir}/test/classes"/>
|
|
|
- </subant>
|
|
|
- <jar jarfile="${hadoop-mapred-instrumented-test-sources.jar}">
|
|
|
- <fileset dir="${test.src.dir}/system/test" includes="org/apache/hadoop/**/*.java" />
|
|
|
- </jar>
|
|
|
- </target>
|
|
|
-
|
|
|
- <target name="compile-test-system" description="Compiles system tests">
|
|
|
- <subant buildpath="build.xml" target="-compile-test-system.wrapper">
|
|
|
- <property name="build.dir" value="${system-test-build-dir}"/>
|
|
|
- </subant>
|
|
|
- </target>
|
|
|
-
|
|
|
- <target name="-compile-test-system.wrapper" depends="inject-system-faults, ivy-retrieve-common, ivy-retrieve-system">
|
|
|
- <macro-compile-test
|
|
|
- source.dir="${test.src.dir}/system/test"
|
|
|
- dest.dir="${system-test-build-dir}/test/classes"
|
|
|
- classpath="test.system.compile.classpath"/>
|
|
|
- </target>
|
|
|
-
|
|
|
- <macrodef name="weave-injectfault-aspects">
|
|
|
- <attribute name="dest.dir" />
|
|
|
- <attribute name="src.dir" />
|
|
|
- <attribute name="aspects.jars"/>
|
|
|
- <attribute name="base.build.dir" default="${build-fi.dir}"/>
|
|
|
- <sequential>
|
|
|
- <subant buildpath="build.xml" target="-compile-fault-inject"
|
|
|
- output="${compile-inject.output}">
|
|
|
- <property name="build.dir" value="@{base.build.dir}" />
|
|
|
- <property name="src.dir.path" value="@{src.dir}" />
|
|
|
- <property name="dest.dir" value="@{dest.dir}" />
|
|
|
- <property name="hadoop.instrumented.jars" value="@{aspects.jars}"/>
|
|
|
- </subant>
|
|
|
- </sequential>
|
|
|
- </macrodef>
|
|
|
-
|
|
|
- <target name="inject-system-faults"
|
|
|
- description="Inject system faults">
|
|
|
- <mkdir dir="${system-test-build-dir}"/>
|
|
|
- <delete file="${compile-inject.output}"/>
|
|
|
- <subant buildpath="build.xml" target="ivy-retrieve-system">
|
|
|
- <property name="build.dir" value="${system-test-build-dir}"/>
|
|
|
- </subant>
|
|
|
- <weave-injectfault-aspects dest.dir="${system-test-build-dir}/classes"
|
|
|
- src.dir="${test.src.dir}/system/java;${test.src.dir}/system/aop"
|
|
|
- aspects.jars="${system-test-build-dir}/ivy/lib/${ant.project.name}/system/hadoop-common-${herriot.suffix}-${project.version}.jar"
|
|
|
- base.build.dir="${system-test-build-dir}">
|
|
|
- </weave-injectfault-aspects>
|
|
|
- </target>
|
|
|
-
|
|
|
- <macrodef name="macro-run-tests-fault-inject">
|
|
|
- <attribute name="target.name" />
|
|
|
- <attribute name="testcasesonly" />
|
|
|
- <sequential>
|
|
|
- <subant buildpath="build.xml" target="@{target.name}">
|
|
|
- <property name="build.dir" value="${build-fi.dir}"/>
|
|
|
- <property name="test.fault.inject" value="yes"/>
|
|
|
- <property name="test.include" value="TestFi*"/>
|
|
|
- <!-- This one is needed for the special "regression" target only -->
|
|
|
- <property name="special.fi.testcasesonly" value="@{testcasesonly}"/>
|
|
|
- </subant>
|
|
|
- </sequential>
|
|
|
- </macrodef>
|
|
|
-
|
|
|
- <!-- ================================================================== -->
|
|
|
- <!-- Make hadoop-fi.jar including all Fault injected artifacts -->
|
|
|
- <!-- ================================================================== -->
|
|
|
- <macrodef name="macro-jar-fault-inject">
|
|
|
- <attribute name="target.name" />
|
|
|
- <attribute name="build.dir" />
|
|
|
- <attribute name="jar.final.name" />
|
|
|
- <attribute name="jar.final.value" />
|
|
|
- <sequential>
|
|
|
- <subant buildpath="build.xml" target="@{target.name}">
|
|
|
- <property name="build.dir" value="@{build.dir}"/>
|
|
|
- <property name="@{jar.final.name}" value="@{jar.final.value}"/>
|
|
|
- <property name="jar.extra.properties.list"
|
|
|
- value="${test.src.dir}/fi-site.xml" />
|
|
|
- </subant>
|
|
|
- </sequential>
|
|
|
- </macrodef>
|
|
|
-
|
|
|
- <!-- ================================================================== -->
|
|
|
- <!-- Make test jar files including all Fault Injected artifacts -->
|
|
|
- <!-- ================================================================== -->
|
|
|
-
|
|
|
- <macrodef name="macro-jar-test-fault-inject">
|
|
|
- <attribute name="target.name" />
|
|
|
- <attribute name="jar.final.name" />
|
|
|
- <attribute name="jar.final.value" />
|
|
|
- <sequential>
|
|
|
- <subant buildpath="build.xml" target="@{target.name}">
|
|
|
- <property name="build.dir" value="${build-fi.dir}"/>
|
|
|
- <property name="@{jar.final.name}"
|
|
|
- value="@{jar.final.value}"/>
|
|
|
- </subant>
|
|
|
- </sequential>
|
|
|
- </macrodef>
|
|
|
-
|
|
|
- <!--End of Fault Injection (FI) related session-->
|
|
|
-
|
|
|
- <!-- Start of cluster controller binary target -->
|
|
|
- <property name="runAs.src"
|
|
|
- value ="${test.src.dir}/system/c++/runAs"/>
|
|
|
- <property name="runAs.build.dir"
|
|
|
- value="${system-test-build-dir}/c++-build"/>
|
|
|
- <property name="runAs.configure.script"
|
|
|
- value="${runAs.build.dir}/configure"/>
|
|
|
- <target name="init-runAs-build">
|
|
|
- <condition property="runAs.parameters.passed">
|
|
|
- <not>
|
|
|
- <equals arg1="${run-as.hadoop.home.dir}"
|
|
|
- arg2="$${run-as.hadoop.home.dir}"/>
|
|
|
- </not>
|
|
|
- </condition>
|
|
|
- <fail unless="runAs.parameters.passed"
|
|
|
- message="Required parameters run-as.hadoop.home.dir not passed to the build"/>
|
|
|
- <mkdir dir="${runAs.build.dir}"/>
|
|
|
- <copy todir="${runAs.build.dir}" overwrite="true">
|
|
|
- <fileset dir="${runAs.src}" includes="**/*"/>
|
|
|
- </copy>
|
|
|
- <chmod perm="+x" file="${runAs.configure.script}">
|
|
|
- </chmod>
|
|
|
- </target>
|
|
|
-
|
|
|
- <target name="configure-runAs"
|
|
|
- depends="init-runAs-build">
|
|
|
- <exec executable="${runAs.configure.script}"
|
|
|
- dir="${runAs.build.dir}" failonerror="true">
|
|
|
- <arg value="--with-home=${run-as.hadoop.home.dir}"/>
|
|
|
- </exec>
|
|
|
- </target>
|
|
|
- <target name="run-as" depends="configure-runAs">
|
|
|
- <exec executable="${make.cmd}" dir="${runAs.build.dir}"
|
|
|
- searchpath="yes" failonerror="yes">
|
|
|
- <arg value="all" />
|
|
|
- </exec>
|
|
|
- </target>
|
|
|
- <!-- End of cluster controller binary target -->
|
|
|
- <!-- Install Herriot artifacts to the local Maven -->
|
|
|
- <target name="-mvn-system-install" depends="mvn-taskdef, jar-system, jar-test-system">
|
|
|
- <artifact:pom file="${hadoop-mapred-instrumented.pom}"
|
|
|
- id="hadoop.mapred.${herriot.suffix}"/>
|
|
|
- <artifact:pom file="${hadoop-mapred-instrumented-test.pom}"
|
|
|
- id="hadoop.mapred.${herriot.suffix}.test"/>
|
|
|
- <artifact:install file="${hadoop-mapred-instrumented.jar}">
|
|
|
- <pom refid="hadoop.mapred.${herriot.suffix}"/>
|
|
|
- <attach file="${hadoop-mapred-instrumented-sources.jar}" classifier="sources" />
|
|
|
- </artifact:install>
|
|
|
- <artifact:install file="${hadoop-mapred-instrumented-test.jar}">
|
|
|
- <pom refid="hadoop.mapred.${herriot.suffix}.test"/>
|
|
|
- <attach file="${hadoop-mapred-instrumented-test-sources.jar}" classifier="sources" />
|
|
|
- </artifact:install>
|
|
|
- </target>
|
|
|
- <target name="-mvn-system-deploy" depends="mvn-taskdef, jar-system, jar-test-system">
|
|
|
- <property name="repourl" value="https://repository.apache.org/content/repositories/snapshots" />
|
|
|
- <artifact:pom file="${hadoop-mapred-instrumented.pom}"
|
|
|
- id="hadoop.mapred.${herriot.suffix}"/>
|
|
|
- <artifact:pom file="${hadoop-mapred-instrumented-test.pom}"
|
|
|
- id="hadoop.mapred.${herriot.suffix}.test"/>
|
|
|
-
|
|
|
- <artifact:install-provider artifactId="wagon-http" version="1.0-beta-2"/>
|
|
|
- <artifact:deploy file="${hadoop-mapred-instrumented.jar}">
|
|
|
- <remoteRepository id="apache.snapshots.https" url="${repourl}"/>
|
|
|
- <pom refid="hadoop.mapred.${herriot.suffix}"/>
|
|
|
- <attach file="${hadoop-mapred-instrumented-sources.jar}" classifier="sources" />
|
|
|
- </artifact:deploy>
|
|
|
- <artifact:deploy file="${hadoop-mapred-instrumented-test.jar}">
|
|
|
- <remoteRepository id="apache.snapshots.https" url="${repourl}"/>
|
|
|
- <pom refid="hadoop.mapred.${herriot.suffix}.test"/>
|
|
|
- <attach file="${hadoop-mapred-instrumented-test-sources.jar}" classifier="sources" />
|
|
|
- </artifact:deploy>
|
|
|
- </target>
|
|
|
- <!-- End of Maven -->
|
|
|
-</project>
|