123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458 |
- <?xml version="1.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="hdfsproxy" default="jar" xmlns:ivy="antlib:org.apache.ivy.ant">
- <property name="hdfsproxyVersion" value="2.0"/>
- <property name="final.name" value="${ant.project.name}-${hdfsproxyVersion}"/>
- <property name="javac.debug" value="on"/>
- <property name="javac.optimize" value="on"/>
- <import file="../build-contrib.xml"/>
-
- <property name="bin.dir" value="${basedir}/bin"/>
- <property name="lib.dir" value="${basedir}/lib"/>
- <property name="hadoop.jars.dir" value="${basedir}/hadoopjars"/>
-
- <property name="docs.dir" value="${basedir}/docs"/>
- <property name="test.build.dir" value="${build.dir}/test"/>
- <property name="test.build.classes" value="${test.build.dir}/classes"/>
- <property name="src.test.resources" value="${basedir}/src/test/resources"/>
- <property name="ssl.keystore.proxy" value="${src.test.resources}/ssl-keys/proxy.keystore"/>
- <property name="ssl.keystore.client" value="${src.test.resources}/ssl-keys/client.keystore"/>
- <property name="ssl.client.cert" value="${src.test.resources}/ssl-keys/test.crt"/>
- <property name="proxy.conf.test" value="${src.test.resources}/proxy-config"/>
- <property name="tomcat.conf.test" value="${src.test.resources}/tomcat-config"/>
- <property name="target.dir" value="${build.dir}/target"/>
- <property name="logs.dir" value="${target.dir}/logs"/>
- <property name="reports.dir" value="${target.dir}/reports"/>
- <property name="tomcatconfig.dir" value="${target.dir}/tomcat-config"/>
- <property name="tomcat.container.id" value="tomcat5x"/>
- <property name="cargo.logging" value="high"/>
- <property name="cactus.formatter.type" value="xml"/>
- <property name="cactus.warfile.name" value="test"/>
-
- <available file="${hadoop.root}/build/classes" type="dir" property="test.available"/>
- <property environment="env"/>
- <!-- check if environment has been set -->
- <condition property="proxy.conf.dir" value="${env.HDFSPROXY_CONF_DIR}" else="${basedir}/conf">
- <and>
- <isset property="env.HDFSPROXY_CONF_DIR"/>
- <available file="${env.HDFSPROXY_CONF_DIR}/hdfsproxy-default.xml"/>
- </and>
- </condition>
-
- <condition property="startCactus">
- <and>
- <or>
- <equals arg1="${testcase}" arg2="TestProxyFilter" />
- <equals arg1="${testcase}" arg2="TestProxyUtil" />
- <equals arg1="${testcase}" arg2="TestProxyForwardServlet" />
- <not>
- <isset property="testcase"/>
- </not>
- </or>
- <isset property="test.available"/>
- </and>
- </condition>
-
- <condition property="useClover">
- <and>
- <isset property="clover.home"/>
- <available file="${clover.home}/lib/clover.jar"/>
- </and>
- </condition>
- <property name="ivy.settings.file" location="${hadoop.root}/ivy/ivysettings.xml"/>
-
- <target name="ivy-init" depends="ivy-init-antlib">
- <ivy:settings id="${ant.project.name}.ivy.settings"/>
- </target>
-
- <!-- Define the Cactus tasks -->
- <target name="load-tasks" depends="ivy-retrieve-common">
- <taskdef resource="cactus.tasks"
- classpathref="cactus.classpath">
- </taskdef>
- </target>
-
- <target name="jar" depends="compile" description="Create jar">
- <echo>
- Building the .jar files.
- </echo>
- <jar jarfile="${build.dir}/${final.name}.jar" basedir="${build.classes}" includes="org/apache/hadoop/hdfsproxy/**/*.class" >
- <manifest>
- <section name="org/apache/hadoop/hdfsproxy">
- <attribute name="Implementation-Title" value="HdfsProxy"/>
- <attribute name="Implementation-Version" value="${hdfsproxyVersion}"/>
- <attribute name="Implementation-Vendor" value="Apache"/>
- </section>
- </manifest>
- </jar>
- </target>
-
-
- <!-- ================================================================== -->
- <!-- Make war file -->
- <!-- ================================================================== -->
-
- <target name="war" depends="compile" description="Create war">
- <echo>
- Building the .war file
- </echo>
- <war destfile="${build.dir}/${final.name}.war" webxml="${basedir}/conf/tomcat-web.xml">
- <lib dir="${common.ivy.lib.dir}">
- <include name="commons-logging-${commons-logging.version}.jar"/>
- <include name="junit-${junit.version}.jar"/>
- <include name="log4j-${log4j.version}.jar"/>
- <include name="slf4j-api-${slf4j-api.version}.jar"/>
- <include name="slf4j-log4j12-${slf4j-log4j12.version}.jar"/>
- <include name="xmlenc-${xmlenc.version}.jar"/>
- <include name="core-${core.version}.jar"/>
- </lib>
- <classes dir="${proxy.conf.dir}" excludes="**/*.example **/*.template **/*.sh hadoop-site.xml"/>
- <classes dir="${build.classes}"/>
- <classes dir="${hadoop.root}/build/classes"/>
- </war>
- </target>
-
- <target name="forward" depends="compile" description="Create forward war">
- <echo>
- Building the forward war file
- </echo>
- <war destfile="${build.dir}/${final.name}-forward.war" webxml="${basedir}/conf/tomcat-forward-web.xml">
- <lib dir="${common.ivy.lib.dir}">
- <include name="commons-logging-${commons-logging.version}.jar"/>
- <include name="junit-${junit.version}.jar"/>
- <include name="log4j-${log4j.version}.jar"/>
- <include name="slf4j-api-${slf4j-api.version}.jar"/>
- <include name="slf4j-log4j12-${slf4j-log4j12.version}.jar"/>
- <include name="xmlenc-${xmlenc.version}.jar"/>
- <include name="core-${core.version}.jar"/>
- </lib>
- <classes dir="${proxy.conf.dir}" excludes="**/*.example **/*.template **/*.sh hadoop-site.xml"/>
- <classes dir="${build.classes}"/>
- <classes dir="${hadoop.root}/build/classes"/>
- </war>
- </target>
-
- <target name="cactifywar" depends="war,load-tasks,cactifywar-pure,cactifywar-clover" description="To include clover coverage test use -Dclover.home ..."/>
-
- <target name="cactifywar-pure" depends="war,load-tasks" unless="useClover">
- <mkdir dir="${target.dir}" />
- <echo> no clover found ...</echo>
- <cactifywar srcfile="${build.dir}/${final.name}.war"
- destfile="${target.dir}/${cactus.warfile.name}.war"
- mergewebxml="${src.test.resources}/cactus-web.xml">
- <servletredirector/>
- <servletredirector name="ServletRedirectorSecure"
- mapping="/ServletRedirectorSecure" roles="test"/>
- <filterredirector mapping="/test/filterRedirector.jsp"/>
- <classes dir="${proxy.conf.test}" excludes="**/*.template **/*.sh"/>
- <classes dir="${test.build.dir}"/>
- </cactifywar>
- </target>
- <target name="cactifywar-clover" depends="war,load-tasks" if="useClover">
- <mkdir dir="${target.dir}" />
- <echo> Including clover.jar in the war file ...</echo>
- <cactifywar srcfile="${build.dir}/${final.name}.war"
- destfile="${target.dir}/${cactus.warfile.name}.war"
- mergewebxml="${src.test.resources}/cactus-web.xml">
- <servletredirector/>
- <servletredirector name="ServletRedirectorSecure"
- mapping="/ServletRedirectorSecure" roles="test"/>
- <filterredirector mapping="/test/filterRedirector.jsp"/>
- <classes dir="${proxy.conf.test}" excludes="**/*.template **/*.sh"/>
- <classes dir="${test.build.dir}"/>
- <lib dir="${clover.home}/lib">
- <include name="clover.jar"/>
- </lib>
- </cactifywar>
- </target>
-
- <target name="test" depends="compile,compile-test,test-junit,test-cactus" description="Automated Test Framework" if="test.available"/>
-
- <target name="test-junit" depends="compile,compile-test" if="test.available">
- <junit fork="yes" printsummary="yes" errorProperty="tests.failed" failureProperty="tests.failed">
- <classpath refid="test.classpath"/>
- <sysproperty key="test.build.data" value="${build.test}/data"/>
- <sysproperty key="build.test" value="${build.test}"/>
- <sysproperty key="user.dir" value="${build.test}/data"/>
- <sysproperty key="fs.default.name" value="${fs.default.name}"/>
- <sysproperty key="hadoop.test.localoutputfile" value="${hadoop.test.localoutputfile}"/>
- <sysproperty key="hadoop.log.dir" value="${hadoop.log.dir}"/>
- <sysproperty key="test.src.dir" value="${test.src.dir}"/>
- <sysproperty key="javax.net.ssl.trustStore" value="${ssl.keystore.proxy}"/>
- <sysproperty key="javax.net.ssl.trustStorePassword" value="changeme"/>
- <sysproperty key="javax.net.ssl.keyStore.proxy" value="${ssl.keystore.proxy}"/>
- <sysproperty key="javax.net.ssl.keyStore" value="${ssl.keystore.client}"/>
- <sysproperty key="javax.net.ssl.keyStorePassword" value="changeme"/>
- <sysproperty key="javax.net.ssl.keyPassword" value="changeme"/>
- <sysproperty key="javax.net.ssl.clientCert" value="${ssl.client.cert}"/>
- <formatter type="xml" />
- <batchtest todir="${test.build.dir}" unless="testcase">
- <fileset dir="${src.test}">
- <include name="**/TestHdfsProxy.java"/>
- <include name="**/TestProxyUgiManager.java"/>
- </fileset>
- </batchtest>
- <batchtest todir="${test.build.dir}" if="testcase">
- <fileset dir="${src.test}">
- <include name="**/${testcase}.java"/>
- <exclude name="**/TestProxyFilter.java"/>
- <exclude name="**/TestProxyUtil.java"/>
- <exclude name="**/TestProxyForwardServlet.java"/>
- </fileset>
- </batchtest>
- </junit>
- <fail if="tests.failed">Tests failed!</fail>
- </target>
- <target name="test-cactus" depends="compile,compile-test,cactifywar" if="startCactus">
- <exec executable="${env.JAVA_HOME}/bin/java" outputproperty="cargo.servlet.admin.port">
- <arg line="-cp ${build.test} org.apache.hadoop.hdfsproxy.FindFreePort -random"/>
- </exec>
- <exec executable="${env.JAVA_HOME}/bin/java" outputproperty="cargo.servlet.http.port">
- <arg line="-cp ${build.test} org.apache.hadoop.hdfsproxy.FindFreePort ${cargo.servlet.admin.port}"/>
- </exec>
- <exec executable="${env.JAVA_HOME}/bin/java" outputproperty="cargo.servlet.https.port">
- <arg line="-cp ${build.test} org.apache.hadoop.hdfsproxy.FindFreePort ${cargo.servlet.http.port}"/>
- </exec>
-
- <echo> Free Ports: startup-${cargo.servlet.admin.port} / http-${cargo.servlet.http.port} / https-${cargo.servlet.https.port}</echo>
- <echo>Please take a deep breath while Cargo gets the Tomcat for running the servlet tests...</echo>
-
- <mkdir dir="${tomcatconfig.dir}" />
- <mkdir dir="${tomcatconfig.dir}/conf" />
- <mkdir dir="${tomcatconfig.dir}/webapps" />
- <mkdir dir="${tomcatconfig.dir}/temp" />
- <mkdir dir="${logs.dir}" />
- <mkdir dir="${reports.dir}" />
- <copy file="${tomcat.conf.test}/server.xml" tofile="${tomcatconfig.dir}/conf/server.xml" overwrite="true">
- <filterset>
- <filter token="ADMIN.PORT" value="${cargo.servlet.admin.port}"/>
- <filter token="HTTP.PORT" value="${cargo.servlet.http.port}"/>
- <filter token="HTTPS.PORT" value="${cargo.servlet.https.port}"/>
- </filterset>
- </copy>
- <copy file="${tomcat.conf.test}/web.xml" tofile="${tomcatconfig.dir}/conf/web.xml"/>
- <copy file="${tomcat.conf.test}/tomcat-users.xml" tofile="${tomcatconfig.dir}/conf/tomcat-users.xml"/>
-
- <cactus warfile="${target.dir}/${cactus.warfile.name}.war" fork="yes" haltonfailure="no" printsummary="yes" failureproperty="tests.failed">
- <classpath>
- <path refid="cactus.classpath"/>
- <pathelement location="${build.classes}"/>
- <pathelement location="${proxy.conf.dir}"/>
- <pathelement location="${src.test.resources}"/>
- <pathelement location="${src.test.resources}/proxy-config"/>
- </classpath>
- <containerset>
- <cargo containerId="${tomcat.container.id}" timeout="30000" output="${logs.dir}/output.log" log="${logs.dir}/cargo.log">
- <zipUrlInstaller
- installUrl="http://apache.osuosl.org/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.zip"
- installDir="${target.dir}/${tomcat.container.id}"/>
- <configuration type="existing" home="${tomcatconfig.dir}">
- <property name="cargo.servlet.port" value="${cargo.servlet.http.port}"/>
- <property name="cargo.logging" value="${cargo.logging}"/>
- <property name="cactus.toDir" value="${build.test}"/>
- <deployable type="war" file="${target.dir}/${cactus.warfile.name}.war"/>
- </configuration>
- </cargo>
- </containerset>
- <sysproperty key="test.build.data" value="${build.test}/data"/>
- <sysproperty key="build.test" value="${build.test}"/>
- <sysproperty key="build.target" value="${target.dir}"/>
- <sysproperty key="javax.net.ssl.trustStore" value="${ssl.keystore.proxy}"/>
- <sysproperty key="javax.net.ssl.trustStorePassword" value="changeme"/>
- <sysproperty key="javax.net.ssl.keyStore.proxy" value="${ssl.keystore.proxy}"/>
- <sysproperty key="javax.net.ssl.keyStore" value="${ssl.keystore.client}"/>
- <sysproperty key="javax.net.ssl.keyStorePassword" value="changeme"/>
- <sysproperty key="javax.net.ssl.keyPassword" value="changeme"/>
- <sysproperty key="javax.net.ssl.clientCert" value="${ssl.client.cert}"/>
- <sysproperty key="test.proxy.conf.dir" value="${proxy.conf.test}"/>
- <sysproperty key="test.proxy.https.port" value="${cargo.servlet.https.port}"/>
-
- <formatter type="${cactus.formatter.type}"/>
- <batchtest todir="${reports.dir}" unless="testcase">
- <fileset dir="${src.test}">
- <include name="**/Test*.java"/>
- <exclude name="**/TestHdfsProxy.java"/>
- <exclude name="**/TestProxyUgiManager.java"/>
- </fileset>
- </batchtest>
- <batchtest todir="${reports.dir}" if="testcase">
- <fileset dir="${src.test}">
- <include name="**/${testcase}.java"/>
- <exclude name="**/TestHdfsProxy.java"/>
- <exclude name="**/TestProxyUgiManager.java"/>
- </fileset>
- </batchtest>
- </cactus>
- <fail if="tests.failed">Tests failed!</fail>
- </target>
- <!-- ====================================================== -->
- <!-- Macro definitions -->
- <!-- ====================================================== -->
- <macrodef name="macro_tar" description="Worker Macro for tar">
- <attribute name="param.destfile"/>
- <element name="param.listofitems"/>
- <sequential>
- <tar compression="gzip" longfile="gnu"
- destfile="@{param.destfile}">
- <param.listofitems/>
- </tar>
- </sequential>
- </macrodef>
- <!-- ================================================================== -->
- <!-- D I S T R I B U T I O N -->
- <!-- ================================================================== -->
- <!-- -->
- <!-- ================================================================== -->
- <target name="local-package" depends="jar,war" description="Package in local build directory">
- <mkdir dir="${build.dir}/${final.name}"/>
- <mkdir dir="${build.dir}/${final.name}/logs"/>
- <copy todir="${build.dir}/${final.name}" includeEmptyDirs="false">
- <fileset dir="${build.dir}">
- <include name="*.jar" />
- <include name="*.war" />
- </fileset>
- </copy>
- <copy todir="${build.dir}/${final.name}/lib" includeEmptyDirs="false">
- <fileset dir="${common.ivy.lib.dir}">
- <include name="commons-logging-${commons-logging.version}.jar"/>
- <include name="commons-logging-api-${commons-logging-api.version}.jar"/>
- <include name="junit-${junit.version}.jar"/>
- <include name="log4j-${log4j.version}.jar"/>
- <include name="slf4j-api-${slf4j-api.version}.jar"/>
- <include name="slf4j-log4j12-${slf4j-log4j12.version}.jar"/>
- <include name="xmlenc-${xmlenc.version}.jar"/>
- <include name="jetty-util-${jetty-util.version}.jar"/>
- <include name="jetty-${jetty.version}.jar"/>
- <include name="servlet-api-2.5-${servlet-api-2.5.version}.jar"/>
- <include name="core-${core.version}.jar"/>
- <include name="jsp-${jsp.version}-${jetty.version}.jar"/>
- <include name="jsp-api-${jsp.version}-${jetty.version}.jar"/>
- </fileset>
- </copy>
- <copy todir="${build.dir}/${final.name}/lib" includeEmptyDirs="false">
- <fileset dir="${hadoop.root}/build">
- <include name="*-core.jar"/>
- <include name="*-tools.jar"/>
- </fileset>
- </copy>
- <copy todir="${build.dir}/${final.name}/bin">
- <fileset dir="${bin.dir}"/>
- </copy>
-
- <copy todir="${build.dir}/${final.name}/conf">
- <fileset dir="${proxy.conf.dir}"/>
- </copy>
-
- <copy todir="${build.dir}/${final.name}">
- <fileset dir="${basedir}">
- <include name="README" />
- <include name="build.xml" />
- <include name="*.txt" />
- </fileset>
- </copy>
- <copy todir="${build.dir}/${final.name}/src" includeEmptyDirs="true">
- <fileset dir="${src.dir}" excludes="**/*.template **/docs/build/**/*"/>
- </copy>
- <chmod perm="ugo+x" type="file" parallel="false">
- <fileset dir="${build.dir}/${final.name}/bin"/>
- </chmod>
- </target>
- <target name="package" depends="local-package" description="Build distribution">
- <mkdir dir="${dist.dir}/contrib/${name}"/>
- <copy todir="${dist.dir}/contrib/${name}">
- <fileset dir="${build.dir}/${final.name}">
- <exclude name="**/lib/**" />
- <exclude name="**/src/**" />
- <exclude name="*.war" />
- </fileset>
- </copy>
- <chmod dir="${dist.dir}/contrib/${name}/bin" perm="a+x" includes="*"/>
- </target>
- <!-- ================================================================== -->
- <!-- Make release tarball -->
- <!-- ================================================================== -->
- <target name="tar" depends="local-package,war" description="Make release tarball">
- <macro_tar param.destfile="${build.dir}/${final.name}.tar.gz">
- <param.listofitems>
- <tarfileset dir="${build.dir}" mode="664">
- <exclude name="${final.name}/bin/*" />
- <include name="${final.name}/**" />
- </tarfileset>
- <tarfileset dir="${build.dir}" mode="755">
- <include name="${final.name}/bin/*" />
- </tarfileset>
- </param.listofitems>
- </macro_tar>
- </target>
- <target name="binary" depends="local-package,war" description="Make tarball without source and documentation">
- <macro_tar param.destfile="${build.dir}/${final.name}-bin.tar.gz">
- <param.listofitems>
- <tarfileset dir="${build.dir}" mode="664">
- <exclude name="${final.name}/bin/*" />
- <exclude name="${final.name}/src/**" />
- <exclude name="${final.name}/docs/**" />
- <include name="${final.name}/**" />
- </tarfileset>
- <tarfileset dir="${build.dir}" mode="755">
- <include name="${final.name}/bin/*" />
- </tarfileset>
- </param.listofitems>
- </macro_tar>
- </target>
- <!-- the unit test classpath -->
- <path id="test.classpath">
- <pathelement location="${proxy.conf.test}" />
- <pathelement location="${test.build.dir}" />
- <pathelement location="${hadoop.root}/build/test/classes"/>
- <pathelement location="${hadoop.root}/build/test/core/classes"/>
- <pathelement location="${hadoop.root}/build/test/hdfs/classes"/>
- <pathelement location="${hadoop.root}/build/test/mapred/classes"/>
- <!--<pathelement location="${hadoop.root}/src/contrib/test"/>-->
- <pathelement location="${hadoop.root}/conf"/>
- <pathelement location="${hadoop.root}/build"/>
- <pathelement location="${hadoop.root}/build/classes"/>
- <pathelement location="${hadoop.root}/build/tools"/>
- <pathelement location="${build.examples}"/>
- <pathelement path="${clover.jar}"/>
- <path refid="contrib-classpath"/>
- </path>
-
- <path id="cactus.classpath">
- <path refid="test.classpath"/>
- </path>
- </project>
|