cloudstack/build/developer.xml

431 lines
18 KiB
XML
Executable File

<?xml version="1.0" encoding="UTF-8"?>
<!--
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="CloudStack Developer Targets" basedir=".">
<description>
This is a developer.xml with tools to start and stop tomcat and
generally developer targets that has nothing to do with compiling.
</description>
<dirname property="base.dir" file="${ant.file.CloudStack Developer Targets}/.."/>
<property name="build.dir" location="${base.dir}/build"/>
<property name="tomcat.home" location="${env.CATALINA_HOME}"/>
<property name="assertion" value="-ea"/>
<property name="dist.dir" location="${base.dir}/dist"/>
<property name="deploy.work.dir" location="${dist.dir}"/>
<property name="server.deploy.to.dir" location="${tomcat.home}"/>
<property name="unittest.dir" location="${base.dir}/unittest"/>
<property name="unittest.target.dir" location="${unittest.dir}/classes"/>
<property name="unittest.jar.dir" location="${unittest.dir}/jar"/>
<property name="unittest.formatter" value="plain" />
<property name="ovm.dir" location="${base.dir}/ovm" />
<property name="usage.dir" location="${base.dir}/usage" />
<!-- directories for api doc -->
<property name="api.docs.dir" location="${dist.dir}/apidocs" />
<condition property="jmxport" value="${jmxport.override}" else="45219">
<isset property="jmxport.override" />
</condition>
<macrodef name="compile-test">
<attribute name="top.dir" description="Top Directory of the source. We will add src to this to get the source code."/>
<attribute name="jar.name" description="Name of the jar file"/>
<attribute name="classpath" description="class path to use"/>
<element name="include-files" optional="true"/>
<element name="exclude-files" optional="true"/>
<sequential>
<mkdir dir="${unittest.target.dir}/@{jar.name}"/>
<depend srcdir="@{top.dir}/test" destdir="${unittest.target.dir}/@{jar.name}" cache="${dep.cache.dir}" />
<echo message="Compiling @{top.dir}/test"/>
<javac srcdir="@{top.dir}/test" debug="${debug}" debuglevel="${debuglevel}" deprecation="${deprecation}" destdir="${unittest.target.dir}/@{jar.name}" source="${source.compat.version}" target="${target.compat.version}" includeantruntime="false" compiler="javac1.6">
<compilerarg line="-Xlint:-path"/>
<classpath refid="@{classpath}" />
<exclude-files/>
</javac>
<jar jarfile="${unittest.jar.dir}/@{jar.name}" basedir="${unittest.target.dir}/@{jar.name}" update="true"/>
</sequential>
</macrodef>
<target name="clean-edits" description="Delete all the editor backup files in the source tree.">
<delete>
<fileset dir="${base.dir}" includes="**/*~" />
</delete>
</target>
<target name="run" depends="start-tomcat"/>
<target name="stop" depends="stop-tomcat"/>
<target name="debug" depends="debug-tomcat"/>
<target name="setup">
<mkdir dir="${build.dir}/override"/>
<copy todir="${build.dir}/override">
<fileset dir="${build.dir}">
<include name="build-cloud.properties"/>
<include name="replace.properties"/>
</fileset>
</copy>
<loadproperties srcfile="${build.dir}/override/replace.properties" resource="propertyresource"/>
<!-- propertyfile file="${build.dir}/override/replace.properties"/ -->
</target>
<target name="debug-suspend">
<java jar="${tomcat.home}/bin/bootstrap.jar" fork="true">
<jvmarg value="-Dcatalina.home=${tomcat.home}"/>
<jvmarg value="-Dcom.sun.management.jmxremote.port=${jmxport}"/>
<jvmarg value="-Dcom.sun.management.jmxremote.authenticate=false"/>
<jvmarg value="-Dcom.sun.management.jmxremote.ssl=false"/>
<jvmarg value="-Xdebug"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"/>
<jvmarg value="-ea"/>
<jvmarg value="-Xms256m"/>
<jvmarg value="-Xmx384m"/>
</java>
</target>
<target name="stop-tomcat">
<java dir="${tomcat.home}/bin/" jar="${tomcat.home}/bin/bootstrap.jar" fork="true">
<arg value="stop"/>
</java>
</target>
<target name="start-tomcat" depends="stop-tomcat">
<echo message="Start Tomcat" />
<java dir="${tomcat.home}/bin/" jar="${tomcat.home}/bin/bootstrap.jar" fork="true">
<jvmarg value="${assertion}"/>
<jvmarg value="-Dcom.sun.management.jmxremote.port=${jmxport}"/>
<jvmarg value="-Dcom.sun.management.jmxremote.authenticate=false"/>
<jvmarg value="-Dcom.sun.management.jmxremote.ssl=false"/>
<jvmarg value="-Xms256m"/>
<jvmarg value="-Xmx512m"/>
<jvmarg value="-XX:MaxPermSize=128m"/>
<jvmarg value="-ea"/>
<arg value="start"/>
</java>
</target>
<target name="debug-tomcat">
<java jar="${tomcat.home}/bin/bootstrap.jar" fork="true">
<jvmarg value="-Dcatalina.home=${tomcat.home}"/>
<jvmarg value="-Dcom.sun.management.jmxremote.port=${jmxport}"/>
<jvmarg value="-Dcom.sun.management.jmxremote.authenticate=false"/>
<jvmarg value="-Dcom.sun.management.jmxremote.ssl=false"/>
<jvmarg value="-Xdebug"/>
<jvmarg value="${debug.jvmarg}"/>
<jvmarg value="-ea"/>
<jvmarg value="-Xms256m"/>
<jvmarg value="-Xmx512m"/>
<jvmarg value="-XX:MaxPermSize=128m"/>
</java>
</target>
<target name="clean-tomcat" depends="stop-tomcat,clean-awsapi-tomcat">
<delete dir="${tomcat.home}/webapps/client"/>
<delete dir="${tomcat.home}/webapps/awsapi" />
<delete dir="${tomcat.home}/webapps7080/awsapi" />
<delete dir="${tomcat.home}/work/Catalina"/>
<delete dir="${tomcat.home}/temp" />
<delete dir="${tomcat.home}/logs" />
<delete quiet="false" >
<fileset dir="${tomcat.home}/conf" >
<include name="**/*component*.xml" />
</fileset>
</delete>
</target>
<target name="unzip" if="zip.uptodate">
<unzip src="${deploy.work.dir}/client.zip" dest="${deploy.work.dir}/client"/>
</target>
<target name="unzip-usage" if="usagezip.uptodate">
<unzip src="${deploy.work.dir}/usage.zip" dest="${deploy.work.dir}/usage"/>
</target>
<target name="deploy-ovm" >
<ant antfile="${base.dir}/plugins/hypervisors/ovm/build.xml" target="deploy-ovm"/>
</target>
<target name="deploy-server" depends="deploy-common, deploy-ovm, deploy-awsapi" >
<copy todir="${server.deploy.to.dir}/webapps/client/WEB-INF/lib/vms" file="${dist.dir}/systemvm.iso" />
</target>
<target name="deploy-server-encrypt" depends="deploy-server" >
<move file="${server.deploy.to.dir}/conf/db-enc.properties" tofile="${server.deploy.to.dir}/conf/db.properties" overwrite="true"/>
<echo file="/etc/cloud/management/key" append="false">password</echo>
</target>
<target name="deploy-common" >
<condition property="zip.uptodate">
<available file="${deploy.work.dir}/client.zip" type="file"/>
</condition>
<antcall target="unzip" inheritAll="true"/>
<unwar overwrite="true" src="${deploy.work.dir}/client/client.war" dest="${server.deploy.to.dir}/webapps/client"/>
<copy todir="${server.deploy.to.dir}/lib">
<fileset dir="${deps.dir}/">
<include name="*.jar"/>
<exclude name="servlet*.jar"/>
<exclude name="axis2*.jar"/>
<exclude name="*slf4j*.jar"/>
</fileset>
</copy>
<touch file="${server.deploy.to.dir}/webapps/client/WEB-INF/lib/scripts/vm/hypervisor/xenserver/version"/>
<echo file="${server.deploy.to.dir}/webapps/client/WEB-INF/lib/scripts/vm/hypervisor/xenserver/version" append="false" message="${version}.${build.number}"/>
<copy overwrite="true" todir="${server.deploy.to.dir}/conf">
<fileset dir="${deploy.work.dir}/client/conf/">
<include name="**/*"/>
</fileset>
</copy>
<chmod perm="755">
<fileset dir="${server.deploy.to.dir}/webapps/client/WEB-INF/lib">
<include name="**/*"/>
</fileset>
</chmod>
<!-- <copy overwrite="true" todir="${server.deploy.to.dir}/lib" file="${server.deploy.to.dir}/webapps/client/WEB-INF/lib/cloud-mysql-connector-java-5.1.7-bin.jar" />
<delete file="${server.deploy.to.dir}/webapps/client/WEB-INF/lib/cloud-mysql-connector-java-5.1.7-bin.jar" />
-->
<replace file="${server.deploy.to.dir}/conf/catalina.properties" summary="true">
<replacetoken><![CDATA[shared.loader=
]]></replacetoken>
<replacevalue><![CDATA[shared.loader=${catalina.home},${catalina.home}/conf
]]></replacevalue> </replace>
</target>
<target name="deploy-usage">
<condition property="usagezip.uptodate">
<available file="${deploy.work.dir}/usage.zip" type="file" />
</condition>
<antcall target="unzip-usage" inheritAll="true" />
<copy overwrite="true" todir="${server.deploy.to.dir}/conf">
<fileset dir="${usage.dir}/conf/">
<include name="*.in" />
</fileset>
<globmapper from="*.in" to="*" />
</copy>
<copy overwrite="true" todir="${server.deploy.to.dir}/webapps/client/WEB-INF/lib">
<fileset dir="${deploy.work.dir}/usage/lib/">
<include name="**/*.jar"/>
</fileset>
</copy>
</target>
<target name="deploy-cloudstack-db">
<condition property="server-setup.file" value="override/server-setup.xml" else="server-setup.xml">
<available file="${setup.db.dir}/override/server-setup.xml" />
</condition>
<condition property="templates.file" value="override/templates.sql" else="templates.sql" >
<available file="${setup.db.dir}/override/templates.sql" />
</condition>
<echo message="${db.scripts.dir}\\deploy-db-dev.sh ${server-setup.file} ${templates.file} ${DBROOTPW}" />
<exec dir="${db.scripts.dir}" executable="bash" failonerror="true">
<arg value="deploy-db-dev.sh" />
<arg value="${server-setup.file}" />
<arg value="${templates.file}" />
<arg value="${DBROOTPW}" />
<env key="CATALINA_HOME" value="${tomcat.home}"/>
</exec>
<chmod perm="666">
<fileset dir="${db.scripts.dir}">
<include name="**/*"/>
</fileset>
</chmod>
</target>
<target name="deploydb" depends="deploy-cloudstack-db, deploy-awsapi-db">
</target>
<target name="deploydb-simulator">
<condition property="server-setup.file" value="${setup.db.dir}/override/server-setup.xml" else="server-setup.xml">
<available file="${setup.db.dir}/override/server-setup.xml" />
</condition>
<condition property="templates.file" value="${setup.db.dir}/override/templates.sql" else="templates.sql" >
<available file="${setup.db.dir}/override/templates.sql" />
</condition>
<echo message="deploydb ${server-setup.file} ${templates.file} ${DBROOTPW}" />
<exec dir="${db.scripts.dir}" executable="bash" failonerror="true">
<arg value="deploy-db-simulator.sh" />
<arg value="${server-setup.file}" />
<arg value="${templates.file}" />
<arg value="${DBROOTPW}" />
<env key="CATALINA_HOME" value="${tomcat.home}"/>
</exec>
<chmod perm="666">
<fileset dir="${db.scripts.dir}">
<include name="**/*"/>
</fileset>
</chmod>
</target>
<path id="test.classpath">
<path refid="deps.classpath" />
<path refid="dist.classpath"/>
<!-- external deps, added for jenkins
depends on mysql-connector-java rpm
-->
<fileset dir="/usr/share/java/" erroronmissingdir="true">
<include name="mysql-connector-java.jar" />
</fileset>
<fileset dir="${unittest.jar.dir}">
<include name="*.jar"/>
</fileset>
<fileset dir="${deps.dir}">
<include name="junit-*.jar"/>
</fileset>
<dirset dir="${utils.test.dir}/resources"/>
<dirset dir="${server.test.dir}/resources"/>
<dirset dir="${base.dir}/setup/db"/>
</path>
<target name="compile-tests" depends="compile-all">
<mkdir dir="${unittest.dir}"/>
<mkdir dir="${unittest.target.dir}"/>
<mkdir dir="${unittest.jar.dir}"/>
<compile-test jar.name="utils-test.jar" top.dir="${utils.dir}" classpath="test.classpath"/>
<compile-test jar.name="server-test.jar" top.dir="${server.dir}" classpath="test.classpath"/>
</target>
<target name="unittest" description="Execute unit tests" depends="compile-tests">
<junit fork="true" printsummary="true" showoutput="true" failureproperty="junit.failure">
<!-- N.b. use failureproperty instead of haltonfailure, because if we use
the former, we will get no detailed report about the failure.
If the test fails, the fail element below will still assure that
the Ant run will exit with error status.
-->
<!--bootclasspath refid="test.classpath"/-->
<classpath refid="test.classpath"/>
<jvmarg value="${debug.jvmarg}"/>
<batchtest todir="${unittest.dir}">
<formatter type="${unittest.formatter}"/>
<fileset dir="${utils.test.dir}">
<include name="**/*Test.java"/>
</fileset>
<fileset dir="${server.test.dir}">
<include name="**/*Test.java"/>
<exclude name="**/upgrade/*.java"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${unittest.dir}">
<fileset dir="${unittest.dir}"/>
<report todir="${unittest.dir}/test-reports"/>
</junitreport>
<fail if="junit.failure" message="Unit test(s) failed. See reports!"/>
</target>
<target name="test" description="Execute one unit test" depends="compile-tests">
<junit fork="true" printsummary="true" showoutput="true" failureproperty="junit.failure">
<!-- N.b. use failureproperty instead of haltonfailure, because if we use
the former, we will get no detailed report about the failure.
If the test fails, the fail element below will still assure that
the Ant run will exit with error status.
-->
<classpath refid="test.classpath"/>
<jvmarg value="${debug.jvmarg}"/>
<jvmarg value="-ea"/>
<jvmarg value="-Xms1024m"/>
<jvmarg value="-Xmx1024m"/>
<batchtest todir="${unittest.dir}">
<formatter type="${unittest.formatter}"/>
<fileset dir="${utils.test.dir}">
<include name="**/${test}.java"/>
</fileset>
<fileset dir="${server.test.dir}">
<include name="**/${test}.java"/>
<exclude name="**/upgrade/*.java"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${unittest.dir}">
<fileset dir="${unittest.dir}"/>
<report todir="${unittest.dir}/test-reports"/>
</junitreport>
<fail if="junit.failure" message="Unit test(s) failed. See reports!"/>
</target>
<target name="test-suspend" description="Execute one unit test" depends="compile-tests">
<junit fork="true" printsummary="true" showoutput="true" failureproperty="junit.failure">
<!-- N.b. use failureproperty instead of haltonfailure, because if we use
the former, we will get no detailed report about the failure.
If the test fails, the fail element below will still assure that
the Ant run will exit with error status.
-->
<classpath refid="test.classpath"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"/>
<jvmarg value="${assertion}"/>
<batchtest todir="${unittest.dir}">
<formatter type="${unittest.formatter}"/>
<fileset dir="${utils.test.dir}">
<include name="**/${test}.java"/>
</fileset>
<fileset dir="${server.test.dir}">
<include name="**/${test}.java"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${unittest.dir}">
<fileset dir="${unittest.dir}"/>
<report todir="${unittest.dir}/test-reports"/>
</junitreport>
<fail if="junit.failure" message="Unit test(s) failed. See reports!"/>
</target>
<target name="build-apidocs" description="Generate api documentation" depends="build-all">
<property name="commands.file" location="${dist.dir}/client/conf/commands.properties" />
<property name="commands.ext.file" location="${dist.dir}/client/conf/commands-ext.properties" />
<property name="commands.vr.file" location="${dist.dir}/client/conf/virtualrouter_commands.properties" />
<echo message="build-apidocs" />
<exec dir="${apidoc.scripts.dir}" executable="bash" failonerror="true">
<arg value="build-apidoc.sh" />
<arg value="${target.dir}/jar" />
<arg value="${deps.dir}" />
<arg value="${dist.dir}" />
<arg value="-f ${commands.file},${commands.ext.file},${commands.vr.file}" />
</exec>
<echo message="Result locates at ${dist.dir}/commands.xml" />
<chmod perm="666">
<fileset dir="${apidoc.scripts.dir}">
<include name="**/*"/>
</fileset>
</chmod>
</target>
<target name="build-apidocs-zip" depends="build-apidocs">
<delete file="${dist.dir}/apidocs-${version}.zip" />
<zip destfile="${dist.dir}/apidocs-${version}.zip" basedir="${dist.dir}/xmldoc/html" />
</target>
</project>