Added 99th wait time for connection for ClientRequestExecutorPool.java
[voldemort/jeffpc.git] / build.xml
blob1f9a535f222f163d143e6655c84f960b21ad7701
1 <?xml version="1.0"?>
3 <project name="voldemort" basedir="." default="all">
4   <property file="build.properties" />
6   <property name="name" value="voldemort" />
7   <property name="display.name" value="Voldemort" />
8   <property name="author" value="Jay Kreps, Roshan Sumbaly, Alex Feinberg, Bhupesh Bansal, Lei Gao" />
9   <property environment="env" />
11   <path id="main-classpath">
12     <fileset dir="${lib.dir}">
13       <include name="*.jar" />
14     </fileset>
15     <pathelement path="${classes.dir}" />
16   </path>
18   <!-- set the build number based on environment variable, otherwise blank -->
19   <property environment="env" description="System environment variables (including those set by Hudson)"/>
20   <condition property="curr.release.snapshot" value="${curr.release}-snapshot-${env.BUILD_NUMBER}" else="${curr.release}">
21        <and>
22           <isset property="env.BUILD_NUMBER" />
23           <not>
24               <equals arg1="" arg2="${env.BUILD_NUMBER}" trim="yes"/>
25           </not>
26        </and>
27   </condition>
29   <path id="contrib-classpath">
30     <fileset dir="${dist.dir}">
31       <include name="${name}-${curr.release}.jar" />
32     </fileset>
33     <fileset dir="${contrib.root.dir}">
34       <include name="**/*.jar" />
35     </fileset>
36     <path refid="test-classpath" />
37   </path>
39   <path id="test-classpath">
40     <pathelement path="${env.VOLD_TEST_JARS}" />
41     <path refid="main-classpath" />
42     <pathelement path="${testclasses.dir}" />
43   </path>
45   <path id="contrib-test-classpath">
46     <path refid="main-classpath" />
47     <path refid="contrib-classpath" />
48     <fileset dir="${dist.dir}">
49       <include name="${name}-contrib-${curr.release}.jar" />
50     </fileset>
51     <pathelement path="${testclasses.dir}" />
52   </path>
54   <macrodef name="replace-dir">
55     <attribute name="dir" />
56     <sequential>
57       <delete dir="@{dir}" />
58       <mkdir dir="@{dir}" />
59     </sequential>
60   </macrodef>
62   <target name="all" depends="clean, jar, test, contrib-jar, srcjar" description="Build all artifacts." />
64   <target name="clean" description="Delete generated files.">
65     <delete dir="${dist.dir}" />
66     <replace-dir dir="${javadoc.dir}" />
67   </target>
69   <target name="build" description="Compile main source tree java files">
70     <replace-dir dir="${classes.dir}" />
71     <!-- copy non-java files to classes dir to load from classpath -->
72     <copy todir="${classes.dir}">
73       <fileset dir="${java.dir}">
74         <exclude name="**/*.java" />
75         <exclude name="**/*.html" />
76         <exclude name="**/log4j.properties" />
77       </fileset>
78     </copy>
79     <!-- place to put log4j.properties -->
80     <replace-dir dir="${resources.dir}"/>
81     <copy file="${java.dir}/log4j.properties" todir="${resources.dir}"/>
82     <javac destdir="${classes.dir}" target="1.5" debug="true" deprecation="false" failonerror="true" includeantruntime="false">
83       <src path="${java.dir}" />
84       <classpath refid="main-classpath" />
85     </javac>
86   </target>
88   <target name="buildtest" description="Compile test classes">
89     <replace-dir dir="${testclasses.dir}" />
90     <copy todir="${testclasses.dir}">
91       <fileset dir="${commontestsrc.dir}">
92         <exclude name="**/*.java" />
93         <exclude name="**/*.html" />
94       </fileset>
95     </copy>
96     <copy todir="${testclasses.dir}">
97       <fileset dir="${unittestsrc.dir}">
98         <exclude name="**/*.java" />
99         <exclude name="**/*.html" />
100       </fileset>
101     </copy>
102     <javac destdir="${testclasses.dir}" target="1.5" debug="true" deprecation="false" failonerror="true" includeantruntime="false">
103       <src path="${unittestsrc.dir}" />
104       <src path="${inttestsrc.dir}" />
105       <src path="${commontestsrc.dir}" />
106       <classpath refid="main-classpath" />
107     </javac>
108   </target>
110   <target name="test" depends="build, buildtest" description="Build test jar file">
111     <jar destfile="${dist.dir}/${name}-test-${curr.release}.jar">
112       <fileset dir="${testclasses.dir}" />
113     </jar>
114   </target>
116   <target name="protobuff" description="Generate source files from .proto files">
117     <pathconvert property="proto.sources" pathsep=" ">
118       <path id="proto-files">
119         <fileset dir="${protobuff.dir}" />
120       </path>
121     </pathconvert>
123     <property name="proto.path" location="${protobuff.dir}"/>
124     <property name="javaout.path" location="${java.dir}"/>
125     <property name="pythonout.path" location="${python.proto.dir}"/>
126     <exec executable="protoc" failonerror="true">
127       <arg value="--proto_path=${proto.path}"/>
128       <arg value="--java_out=${javaout.path}"/>
129       <arg value="--python_out=${pythonout.path}"/>
130       <arg line="${proto.sources}"/>
131     </exec>
132   </target>
134   <target name="jar" depends="build" description="Build server jar file">
135     <jar destfile="${dist.dir}/${name}-${curr.release}.jar">
136       <fileset dir="${classes.dir}">
137         <include name="**/*.*" />
138       </fileset>
139       <!-- include xsds -->
140       <fileset dir="${java.dir}">
141         <include name="**/*.xsd" />
142       </fileset>
143     </jar>
144   </target>
146   <target name="srcjar" description="Build source jar file">
147     <mkdir dir="${dist.dir}" />
148     <jar destfile="${dist.dir}/${name}-${curr.release}-src.jar">
149       <fileset dir="${java.dir}">
150         <include name="**/*.java" />
151       </fileset>
152     </jar>
153   </target>
155   <target name="alljar" depends="build, contrib-build" description="Build a jar file that includes all contrib code.">
156     <jar destfile="${dist.dir}/${name}-${curr.release}-all.jar">
157       <fileset dir="${classes.dir}">
158         <include name="**/*.*" />
159       </fileset>
160       <fileset dir="${contrib.classes.dir}">
161         <include name="**/*.*" />
162       </fileset>
163       <!-- include xsds -->
164       <fileset dir="${java.dir}">
165         <include name="**/*.xsd" />
166       </fileset>
167     </jar>
168   </target>
170   <target name="war" depends="build" description="Build server war file">
171     <war destfile="${dist.dir}/${name}.war" webxml="web.xml" basedir="${classes.dir}">
172       <classes dir="${classes.dir}"/>
173       <lib dir="${lib.dir}">
174         <exclude name="${lib.dir}/servlet-api*.jar"/>
175         <exclude name="${lib.dir}/src/**"/>
176       </lib>
177     </war>
178   </target>
180   <target name="contrib-build" depends="build, buildtest" description="Compile contrib packages (java and test) ">
181     <replace-dir dir="${contrib.classes.dir}" />
182     <javac destdir="${contrib.classes.dir}" target="1.5" debug="true" deprecation="false" failonerror="true" includeantruntime="false">
183       <src path="${contrib.root.dir}" />
184       <src path="${contrib.root.dir}" />
185       <classpath refid="main-classpath" />
186       <classpath refid="contrib-classpath" />
187     </javac>
188     <copy todir="${contrib.classes.dir}">
189       <fileset dir="${contrib.root.dir}/ec2-testing/resources" />
190     </copy>
191   </target>
193   <target name="contrib-jar" depends="contrib-build" description="Build contrib jar file">
194     <jar destfile="${dist.dir}/${name}-contrib-${curr.release}.jar">
195       <fileset dir="${contrib.classes.dir}">
196         <include name="**/*.*" />
197       </fileset>
198     </jar>
199   </target>
201   <target name="contrib-srcjar" description="Build contrib source jar file">
202     <mkdir dir="${dist.dir}" />
203     <jar destfile="${dist.dir}/${name}-contrib-${curr.release}-src.jar">
204       <fileset dir="${contrib.root.dir}/**/java">
205         <include name="**/*.java" />
206       </fileset>
207     </jar>
208   </target>
210   <target name="contrib-junit" depends="contrib-jar" description="Run contrib junit tests except EC2 and Krati tests.">
211     <replace-dir dir="${contribtestreport.dir}" />
212     <replace-dir dir="${contribtesthtml.dir}" />
213     <junit printsummary="yes" maxmemory="1024m" showoutput="true" failureProperty="test.failure">
214       <classpath refid="contrib-test-classpath" />
215       <formatter type="xml" />
216       <batchtest fork="yes" todir="${contribtestreport.dir}">
217         <fileset dir="${contrib.classes.dir}">
218           <include name="**/*Test.class" />
219           <exclude name="**/*PerformanceTest.class" />
220           <exclude name="**/*RemoteTest.class" />
221           <exclude name="**/Ec2*Test.class" />
222           <exclude name="**/Krati*Test.class" />
223         </fileset>
224       </batchtest>
225     </junit>
226     <junitreport todir="${contribtesthtml.dir}">
227       <fileset dir="${contribtestreport.dir}">
228         <include name="TEST-*.xml" />
229       </fileset>
230       <report todir="${contribtesthtml.dir}" format="frames" />
231     </junitreport>
232   </target>
234   <target name="ec2testing-junit" depends="all" description="Run EC2 testing contrib junit tests.">
235     <copy todir="${testclasses.dir}">
236       <fileset dir="${contrib.root.dir}/ec2-testing/resources" />
237     </copy>
238     <replace-dir dir="${contribtestreport.dir}" />
239     <replace-dir dir="${contribtesthtml.dir}" />
240     <junit printsummary="yes" maxmemory="1024m" showoutput="true" failureProperty="test.failure">
241       <syspropertyset>
242         <propertyref prefix="ec2" />
243       </syspropertyset>
244       <classpath refid="contrib-test-classpath" />
245       <formatter type="xml" />
246       <batchtest fork="yes" todir="${contribtestreport.dir}">
247         <fileset dir="${contrib.classes.dir}">
248           <include name="**/Ec2SmokeTest.class" />
249         </fileset>
250       </batchtest>
251     </junit>
252     <junitreport todir="${contribtesthtml.dir}">
253       <fileset dir="${contribtestreport.dir}">
254         <include name="TEST-*.xml" />
255       </fileset>
256       <report todir="${contribtesthtml.dir}" format="frames" />
257     </junitreport>
258   </target>
260   <target name="ec2testing-gossip" depends="contrib-jar" description="Run gossip tests on EC2.">
261     <copy todir="${testclasses.dir}">
262       <fileset dir="${contrib.root.dir}/ec2-testing/resources" />
263     </copy>
264     <replace-dir dir="${contribtestreport.dir}" />
265     <replace-dir dir="${contribtesthtml.dir}" />
266     <junit printsummary="yes" maxmemory="2048m" showoutput="true" failureProperty="test.failure">
267       <syspropertyset>
268         <propertyref prefix="ec2" />
269         <propertyref  prefix="log4j" />
270         <propertyref  prefix="gossip" />
271       </syspropertyset>
272       <classpath refid="contrib-test-classpath" />
273       <formatter type="xml" />
274       <batchtest fork="yes" todir="${contribtestreport.dir}">
275         <fileset dir="${contrib.classes.dir}">
276           <include name="**/Ec2GossipTest.class" />
277         </fileset>
278       </batchtest>
279     </junit>
280     <junitreport todir="${contribtesthtml.dir}">
281       <fileset dir="${contribtestreport.dir}">
282         <include name="TEST-*.xml" />
283       </fileset>
284       <report todir="${contribtesthtml.dir}" format="frames" />
285     </junitreport>
286   </target>
288   <target name="ec2testing-rebalancing" depends="contrib-jar" description="Run rebalancing tests on EC2.">
289     <copy todir="${testclasses.dir}">
290       <fileset dir="${contrib.root.dir}/ec2-testing/resources" />
291     </copy>
292     <replace-dir dir="${contribtestreport.dir}" />
293     <replace-dir dir="${contribtesthtml.dir}" />
294     <junit printsummary="yes" maxmemory="2048m" showoutput="true" failureProperty="test.failure">
295       <syspropertyset>
296         <propertyref prefix="ec2" />
297         <propertyref  prefix="log4j" />
298         <propertyref  prefix="rebalancing" />
299       </syspropertyset>
300       <classpath refid="contrib-test-classpath" />
301       <formatter type="xml" />
302       <batchtest fork="yes" todir="${contribtestreport.dir}">
303         <fileset dir="${contrib.classes.dir}">
304           <include name="**/Ec2RebalancingTest.class" />
305         </fileset>
306       </batchtest>
307     </junit>
308     <junitreport todir="${contribtesthtml.dir}">
309       <fileset dir="${contribtestreport.dir}">
310         <include name="TEST-*.xml" />
311       </fileset>
312       <report todir="${contribtesthtml.dir}" format="frames" />
313     </junitreport>
314   </target>
316   <macrodef name="create-release-artifacts">
317     <attribute name="version" />
318     <sequential>
319     <antcall target="all"/>
320     <zip destfile="${dist.dir}/${name}-@{version}.zip">
321       <zipfileset dir="." prefix="voldemort-@{version}" filemode="755" includes="bin/*"/>
322       <zipfileset dir="." prefix="voldemort-@{version}" includes="**">
323         <exclude name="${dist.dir}/*classes"/>
324         <exclude name="bin/*"/>
325         <exclude name=".git*/**"/>
326       </zipfileset>
327     </zip>
328     <tar destfile="${dist.dir}/${name}-@{version}.tar.gz" compression="gzip" longfile="gnu">
329       <tarfileset dir="." prefix="voldemort-@{version}" filemode="755" includes="bin/*"/>
330       <tarfileset dir="." prefix="voldemort-@{version}" includes="**">
331         <exclude name="${dist.dir}/*classes"/>
332         <exclude name="${dist.dir}/*.zip"/>
333         <exclude name="bin/*"/>
334         <exclude name=".git*/**"/>
335       </tarfileset>
336     </tar>
337     </sequential>
338   </macrodef>
340   <target name="snapshot"  description="Create a release-snapshot zip file with everything pre-built.">
341     <create-release-artifacts version="${curr.release.snapshot}" />
342   </target>
344   <target name="release" description="Create a release zip file with everything pre-built.">
345     <create-release-artifacts version="${curr.release}" />
346   </target>
348   <target name="hadoop-benchmark-jar" depends="build, contrib-build"
349     description="Build a jar file that includes all contrib code plus the necessary jars for running the hadoop benchmark.">
350     <jar destfile="${dist.dir}/hadoop-benchmark.jar">
351       <fileset dir="${classes.dir}">
352         <include name="**/*.*" />
353       </fileset>
354       <fileset dir="${contrib.classes.dir}">
355         <include name="**/*.*" />
356       </fileset>
357       <!-- include xsds -->
358       <fileset dir="${java.dir}">
359         <include name="**/*.xsd" />
360       </fileset>
361       <fileset dir="">
362         <include name="lib/jdom*.jar"/>
363         <include name="lib/google-collect*.jar"/>
364         <include name="lib/commons-lang*.jar"/>
365       </fileset>
366     </jar>
367   </target>
369   <target name="junit" depends="build, buildtest" description="Run junit tests.">
370     <replace-dir dir="${testreport.dir}" />
371     <replace-dir dir="${testhtml.dir}" />
372     <junit printsummary="yes" showoutput="true" maxmemory="1024m">
373       <classpath refid="test-classpath" />
374       <formatter type="xml" />
375       <batchtest fork="yes" todir="${testreport.dir}">
376         <fileset dir="${unittestsrc.dir}">
377           <include name="**/*Test.java" />
378           <exclude name="**/Abstract*.java" />
379         </fileset>
380       </batchtest>
381     </junit>
382     <junitreport todir="${testhtml.dir}">
383       <fileset dir="${testreport.dir}">
384         <include name="TEST-*.xml" />
385       </fileset>
386       <report todir="${testhtml.dir}" format="frames" />
387     </junitreport>
388   </target>
390   <target name="junit-test" depends="build, buildtest, contrib-jar" description="Run single junit test with -Dtest.name=">
391     <junit printsummary="yes" showoutput="true" maxmemory="1024m">
392       <classpath refid="contrib-test-classpath" />
393       <test name="${test.name}" />
394     </junit>
395   </target>
397   <target name="junit-all" depends="junit, contrib-junit" description="Run All junit tests including contrib.">
398   </target>
400   <macrodef name="make-javadocs">
401     <attribute name="dir" />
402     <attribute name="packagenames" />
403     <attribute name="javadir" />
404     <sequential>
405       <replace-dir dir="@{dir}" />
406       <javadoc sourcepath="@{javadir}" destdir="@{dir}" windowtitle="${display.name}" source="1.5" author="true" version="true" use="true" packagenames="@{packagenames}">
407         <doctitle>${display.name}</doctitle>
408         <bottom>${author}</bottom>
409         <classpath refid="main-classpath" />
410       </javadoc>
411     </sequential>
412   </macrodef>
414   <target name="docs" description="Create complete Javadoc documentation">
415     <make-javadocs dir="${javadoc.dir}/all" packagenames="*" javadir="${java.dir}"/>
416     <make-javadocs dir="${javadoc.dir}/client" packagenames="voldemort.versioning.*, voldemort.client.*,voldemort.serialization.*" javadir="${java.dir}"/>
417   </target>
419   <target name="redeploy" depends="war, deploy">
420   </target>
422   <taskdef file="tomcat-tasks.properties">
423     <classpath>
424       <path location="${lib.dir}/catalina-ant.jar" />
425     </classpath>
426   </taskdef>
428   <target name="list" description="List Tomcat applications">
429     <list url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" />
430   </target>
432   <target name="deploy" description="Deploy application" depends="war">
433     <deploy url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="${tomcat.context}" update="true" war="file:${dist.dir}/${name}.war" />
434   </target>
436   <target name="undeploy" description="Undeploy application">
437     <undeploy url="${tomcat.manager.url}"
438                  username="${tomcat.manager.username}"
439                  password="${tomcat.manager.password}"
440                  path="${tomcat.context}"/>
441   </target>
443 </project>