commit e8df8cf6f24fb0c408510a18e0421f8ede4d9efd Author: iwakeh iwakeh@torproject.org Date: Mon Dec 26 13:16:00 2016 +0100
Implements task-20596: use metrics-base and reduced build.xml, added bootstrap script.
Removed obsolete metrics_checks.xml and made bootstrap-development.sh executable.
Only add metrics-lib class files to release jar. --- .gitmodules | 3 + build.xml | 302 +++------------------------- src/build | 1 + src/main/resources/bootstrap-development.sh | 10 + src/test/resources/metrics_checks.xml | 220 -------------------- 5 files changed, 42 insertions(+), 494 deletions(-)
diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e87aef6 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/build"] + path = src/build + url = https://git.torproject.org/metrics-base diff --git a/build.xml b/build.xml index 794188f..a870eca 100644 --- a/build.xml +++ b/build.xml @@ -1,29 +1,17 @@ -<project default="jar" name="descriptor" basedir="."> +<?xml version="1.0"?> + +<!DOCTYPE project [ + <!ENTITY base SYSTEM "src/build/java/base.xml"> +]> + +<project default="usage" name="descriptor" basedir="."> + <property name="release.version" value="1.5.0-dev" /> - <property name="allsources" value="src"/> - <property name="sources" value="src/main/java"/> - <property name="resources" value="src/main/resources"/> - <property name="generated" value="generated"/> - <property name="dist" value="${generated}/dist"/> - <property name="classes" value="${generated}/classes"/> - <property name="docs" value="${generated}/javadoc"/> - <property name="tests" value="src/test/java"/> - <property name="testresources" value="src/test/resources/"/> - <property name="testresult" value="${generated}/test-results"/> - <property name="coverageresult" value="${generated}/coverage-report/"/> - <property name="instrument" value="${generated}/instrument/"/> - <property name="testclasses" value="${generated}/testclasses/"/> - <property name="libs" value="lib"/> - <property name="cobertura.ser.file" value="${basedir}/cobertura.ser" /> - <property name="jarfile" value="${dist}/descriptor-${release.version}.jar" /> - <property name="jarsourcesfile" - value="${dist}/descriptor-${release.version}-sources.jar" /> - <property name="jardocsfile" - value="${dist}/descriptor-${release.version}-javadoc.jar" /> - <property name="source-and-target-java-version" value="1.7" /> - <property name="release.tarball" - value="${dist}/descriptor-${release.version}.tar.gz" /> - <property file="build.properties" /> + <property name="javadoc-title" value="DescripTor API Documentation"/> + <property name="javadoc-excludes" value="**/impl/**" /> + <property name="implementation-title" value="DescripTor" /> + <property name="name" value="descriptor" /> + <property name="jarpatternprop" value="empty" />
<patternset id="runtime" > <include name="commons-compress-1.9.jar"/> @@ -32,254 +20,8 @@ <include name="xz-1.5.jar"/> </patternset>
- <path id="classpath"> - <pathelement path="${classes}"/> - <fileset dir="${libs}"> - <patternset refid="runtime" /> - </fileset> - </path> - - <path id="checkstyle.classpath" > - <fileset dir="${libs}"> - <include name="checkstyle-6.17-all.jar" /> - </fileset> - </path> - - <path id="test.classpath"> - <pathelement path="${classes}"/> - <pathelement path="${testclasses}"/> - <pathelement path="${testresources}"/> - <fileset dir="${libs}"> - <patternset refid="runtime" /> - </fileset> - <fileset dir="${libs}"> - <include name="junit4-4.11.jar"/> - <include name="hamcrest-core-1.3.jar"/> - <include name="logback-core-1.1.2.jar" /> - <include name="logback-classic-1.1.2.jar" /> - </fileset> - </path> - - <path id="cobertura.classpath"> - <fileset dir="${libs}"> - <include name="cobertura-2.1.1.jar" /> - <include name="slf4j-api-1.7.7.jar" /> - <include name="commons-lang3-3.3.2.jar" /> - <include name="asm4-5.0.3.jar" /> - <include name="asm4-util-5.0.3.jar" /> - <include name="asm4-tree-5.0.3.jar" /> - <include name="asm4-commons-5.0.3.jar" /> - <include name="asm4-analysis-5.0.3.jar" /> - <include name="oro-2.0.8.jar" /> - <include name="logback-core-1.1.2.jar" /> - <include name="logback-classic-1.1.2.jar" /> - </fileset> - </path> - - <path id="cobertura.test.classpath"> - <path location="${instrument}" /> - <path refid="test.classpath" /> - <path refid="cobertura.classpath" /> - </path> - - <target name="clean" > - <delete includeEmptyDirs="true" quiet="true"> - <fileset dir="${generated}" defaultexcludes="false" includes="**" /> - </delete> - <delete file="${cobertura.ser.file}" quiet="true" /> - </target> - - <target name="init"> - <mkdir dir="${classes}"/> - <mkdir dir="${testclasses}"/> - <mkdir dir="${docs}"/> - <mkdir dir="${testresult}"/> - <mkdir dir="${instrument}"/> - </target> - - <target name="compile" - depends="init"> - <javac destdir="${classes}" - srcdir="${sources}" - source="${source-and-target-java-version}" - target="${source-and-target-java-version}" - debug="true" - deprecation="true" - optimize="false" - failonerror="true" - includeantruntime="false"> - <classpath refid="classpath"/> - </javac> - </target> - - <target name="docs"> - <javadoc destdir="${docs}" - footer="&copy; 2016 The Tor Project" - doctitle="DescripTor API Documentation" - overview="${basedir}/${resources}/overview.html" - use="true" - windowtitle="DescripTor API Documentation"> - <classpath refid="classpath"/> - <fileset dir="${sources}"> - <exclude name="**/impl/**"/> - </fileset> - </javadoc> - </target> - - <target name="testcompile" depends="init"> - <javac destdir="${testclasses}" - srcdir="${tests}" - source="${source-and-target-java-version}" - target="${source-and-target-java-version}" - debug="true" - deprecation="true" - optimize="false" - failonerror="true" - includeantruntime="false"> - <classpath refid="test.classpath"/> - </javac> - </target> - - <target name="test" depends="compile,testcompile"> - <junit fork="true" haltonfailure="true" printsummary="off"> - <classpath refid="test.classpath"/> - <formatter type="plain" usefile="false"/> - <batchtest> - <fileset dir="${testclasses}" - includes="**/*Test.class"/> - </batchtest> - </junit> - </target> - - <target name="benchmark" depends="compile,testcompile"> - <java fork="true" - maxmemory="2048m" - classname="org.torproject.descriptor.benchmark.MeasurePerformance"> - <classpath refid="classpath"/> - </java> - </target> - - <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties"> - <classpath refid="checkstyle.classpath" /> - </taskdef> - <target name="checks" depends="compile"> - <checkstyle config="${testresources}/metrics_checks.xml"> - <fileset dir="${sources}" - includes="**/*.java" /> - <classpath> - <path refid="classpath" /> - <path refid="checkstyle.classpath" /> - </classpath> - <formatter type="plain" - toFile="${generated}/checkstyle_report.txt"/> - </checkstyle> - <exec executable="cat" outputproperty="checkstyle.result"> - <arg value="${generated}/checkstyle_report.txt" /> - </exec> - <fail message="Checkstyle complaints: ${checkstyle.result}" > - <condition> - <not> - <length string="${checkstyle.result}" - length="29" /> - </not> - </condition> - </fail> - </target> - - <target name="jar" depends="compile,docs"> - <exec executable="git" outputproperty="git.revision"> - <arg value="rev-parse" /> - <arg value="--short" /> - <arg value="HEAD" /> - </exec> - <jar destfile="${jarfile}" - basedir="${classes}"> - <manifest> - <attribute name="Created-By" value="The Tor Project" /> - <attribute name="Implementation-Title" value="DescripTor"/> - <attribute name="Implementation-Version" - value="${release.version}-${git.revision}"/> - </manifest> - </jar> - <jar destfile="${jarsourcesfile}"> - <fileset dir="${sources}" /> - <fileset dir="${tests}"/> - <manifest> - <attribute name="Created-By" value="The Tor Project" /> - <attribute name="Implementation-Title" value="DescripTor"/> - <attribute name="Implementation-Version" - value="${release.version}-${git.revision}"/> - </manifest> - </jar> - <jar destfile="${jardocsfile}"> - <fileset dir="${docs}" /> - <manifest> - <attribute name="Created-By" value="The Tor Project" /> - <attribute name="Implementation-Title" value="DescripTor"/> - <attribute name="Implementation-Version" - value="${release.version}-${git.revision}"/> - </manifest> - </jar> - </target> - - <target name="signjar" depends="jar"> - <signjar alias="${jarsigner.alias}" - storepass="${jarsigner.storepass}" - sigalg="SHA256withRSA" - digestalg="SHA-256" - tsaurl="http://timestamp.digicert.com" - lazy="true"> - <path> - <fileset dir="${dist}" includes="descriptor-${release.version}*.jar" /> - </path> - </signjar> - </target> - - <target name="tar" depends="signjar"> - <tar destfile="${release.tarball}" compression="gzip"> - <tarfileset dir="." prefix="descriptor-${release.version}"> - <include name="${jarfile}" /> - <include name="${jarsourcesfile}" /> - <include name="${jardocsfile}" /> - <include name="build.xml" /> - <include name="LICENSE" /> - <include name="CERT" /> - <include name="*.md" /> - </tarfileset> - <tarfileset dir="${allsources}" - prefix="descriptor-${release.version}/${allsources}" /> - <tarfileset dir="${libs}" - prefix="descriptor-${release.version}/${libs}" /> - </tar> - </target> - - <taskdef classpathref="cobertura.classpath" resource="tasks.properties" /> - <target name="coverage" depends="compile,testcompile"> - <delete file="${cobertura.ser.file}" quiet="true" /> - <copy todir="${instrument}" > - <fileset dir="${classes}"/> - </copy> - <cobertura-instrument ignoreTrivial="true"> - <fileset dir="${instrument}"> - <include name="**/**/*.class" /> - </fileset> - </cobertura-instrument> - <junit fork="true" haltonfailure="false" printsummary="on"> - <sysproperty key="net.sourceforge.cobertura.datafile" - file="${cobertura.ser.file}" /> - <classpath refid="cobertura.test.classpath" /> - <formatter type="xml" /> - <batchtest toDir="${testresult}" > - <fileset dir="${testclasses}" - includes="**/*Test.class"/> - </batchtest> - </junit> - <cobertura-report format="html" destdir="${coverageresult}" > - <fileset dir="${sources}"> - <include name="**/*.java" /> - </fileset> - </cobertura-report> - <cobertura-check totallinerate="58" totalbranchrate="50" > + <target name="coverage-check"> + <cobertura-check totallinerate="58" totalbranchrate="50" > <regex pattern="org.torproject.descriptor.benchmark.*" linerate="0" branchrate="0"/> <regex pattern="org.torproject.descriptor.index" @@ -297,5 +39,17 @@ </cobertura-check> </target>
-</project> + <target name="benchmark" depends="compile,testcompile"> + <java fork="true" + maxmemory="2048m" + classname="org.torproject.descriptor.benchmark.MeasurePerformance"> + <classpath refid="test.classpath"/> + </java> + </target> + + <!-- The following line adds the common targets and properties + for Metrics' Java Projects. + --> + &base;
+</project> diff --git a/src/build b/src/build new file mode 160000 index 0000000..7a01d68 --- /dev/null +++ b/src/build @@ -0,0 +1 @@ +Subproject commit 7a01d68f813cb5ae2904e73dbc81999ce0622eca diff --git a/src/main/resources/bootstrap-development.sh b/src/main/resources/bootstrap-development.sh new file mode 100755 index 0000000..33a1a50 --- /dev/null +++ b/src/main/resources/bootstrap-development.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# +# Copyright 2016 The Tor Project +# See LICENSE for licensing information +# +# Use for submodule initialization and checkout. +# Only necessary after very first checkout without recursion. +# +git submodule update --init --remote + diff --git a/src/test/resources/metrics_checks.xml b/src/test/resources/metrics_checks.xml deleted file mode 100644 index 60fffe2..0000000 --- a/src/test/resources/metrics_checks.xml +++ /dev/null @@ -1,220 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE module PUBLIC - "-//Puppy Crawl//DTD Check Configuration 1.3//EN" - "http://www.puppycrawl.com/dtds/configuration_1_3.dtd"> - -<!-- - Checkstyle configuration that checks the Google coding conventions from Google Java Style - that can be found at https://google.github.io/styleguide/javaguide.html with the following - modifications: - - - Replaced com.google with org.torproject in import statement ordering - [CustomImportOrder]. - - - Relaxed requirement that catch parameters must be at least two - characters long [CatchParameterName]. - - - Added a check for unused imports [UnusedImports]. - - Checkstyle is very configurable. Be sure to read the documentation at - http://checkstyle.sf.net (or in your downloaded distribution). - - To completely disable a check, just comment it out or delete it from the file. - - Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov. - --> - -<module name = "Checker"> - <property name="charset" value="UTF-8"/> - - <property name="severity" value="warning"/> - - <property name="fileExtensions" value="java, properties, xml"/> - <!-- Checks for whitespace --> - <!-- See http://checkstyle.sf.net/config_whitespace.html --> - <module name="FileTabCharacter"> - <property name="eachLine" value="true"/> - </module> - - <module name="TreeWalker"> - <module name="OuterTypeFilename"/> - <module name="IllegalTokenText"> - <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/> - <property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/> - <property name="message" value="Avoid using corresponding octal or Unicode escape."/> - </module> - <module name="AvoidEscapedUnicodeCharacters"> - <property name="allowEscapesForControlCharacters" value="true"/> - <property name="allowByTailComment" value="true"/> - <property name="allowNonPrintableEscapes" value="true"/> - </module> - <module name="LineLength"> - <property name="max" value="100"/> - <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/> - </module> - <module name="AvoidStarImport"/> - <module name="OneTopLevelClass"/> - <module name="UnusedImports"/> - <module name="NoLineWrap"/> - <module name="EmptyBlock"> - <property name="option" value="TEXT"/> - <property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/> - </module> - <module name="NeedBraces"/> - <module name="LeftCurly"> - <property name="maxLineLength" value="100"/> - </module> - <module name="RightCurly"/> - <module name="RightCurly"> - <property name="option" value="alone"/> - <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/> - </module> - <module name="WhitespaceAround"> - <property name="allowEmptyConstructors" value="true"/> - <property name="allowEmptyMethods" value="true"/> - <property name="allowEmptyTypes" value="true"/> - <property name="allowEmptyLoops" value="true"/> - <message key="ws.notFollowed" - value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/> - <message key="ws.notPreceded" - value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/> - </module> - <module name="OneStatementPerLine"/> - <module name="MultipleVariableDeclarations"/> - <module name="ArrayTypeStyle"/> - <module name="MissingSwitchDefault"/> - <module name="FallThrough"/> - <module name="UpperEll"/> - <module name="ModifierOrder"/> - <module name="EmptyLineSeparator"> - <property name="allowNoEmptyLineBetweenFields" value="true"/> - </module> - <module name="SeparatorWrap"> - <property name="tokens" value="DOT"/> - <property name="option" value="nl"/> - </module> - <module name="SeparatorWrap"> - <property name="tokens" value="COMMA"/> - <property name="option" value="EOL"/> - </module> - <module name="PackageName"> - <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/> - <message key="name.invalidPattern" - value="Package name ''{0}'' must match pattern ''{1}''."/> - </module> - <module name="TypeName"> - <message key="name.invalidPattern" - value="Type name ''{0}'' must match pattern ''{1}''."/> - </module> - <module name="MemberName"> - <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/> - <message key="name.invalidPattern" - value="Member name ''{0}'' must match pattern ''{1}''."/> - </module> - <module name="ParameterName"> - <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/> - <message key="name.invalidPattern" - value="Parameter name ''{0}'' must match pattern ''{1}''."/> - </module> - <module name="CatchParameterName"> - <property name="format" value="^[a-z][a-zA-Z0-9]*$"/> - <message key="name.invalidPattern" - value="Catch parameter name ''{0}'' must match pattern ''{1}''."/> - </module> - <module name="LocalVariableName"> - <property name="tokens" value="VARIABLE_DEF"/> - <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/> - <property name="allowOneCharVarInForLoop" value="true"/> - <message key="name.invalidPattern" - value="Local variable name ''{0}'' must match pattern ''{1}''."/> - </module> - <module name="ClassTypeParameterName"> - <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/> - <message key="name.invalidPattern" - value="Class type name ''{0}'' must match pattern ''{1}''."/> - </module> - <module name="MethodTypeParameterName"> - <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/> - <message key="name.invalidPattern" - value="Method type name ''{0}'' must match pattern ''{1}''."/> - </module> - <module name="InterfaceTypeParameterName"> - <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/> - <message key="name.invalidPattern" - value="Interface type name ''{0}'' must match pattern ''{1}''."/> - </module> - <module name="NoFinalizer"/> - <module name="GenericWhitespace"> - <message key="ws.followed" - value="GenericWhitespace ''{0}'' is followed by whitespace."/> - <message key="ws.preceded" - value="GenericWhitespace ''{0}'' is preceded with whitespace."/> - <message key="ws.illegalFollow" - value="GenericWhitespace ''{0}'' should followed by whitespace."/> - <message key="ws.notPreceded" - value="GenericWhitespace ''{0}'' is not preceded with whitespace."/> - </module> - <module name="Indentation"> - <property name="basicOffset" value="2"/> - <property name="braceAdjustment" value="0"/> - <property name="caseIndent" value="2"/> - <property name="throwsIndent" value="4"/> - <property name="lineWrappingIndentation" value="4"/> - <property name="arrayInitIndent" value="2"/> - </module> - <module name="AbbreviationAsWordInName"> - <property name="ignoreFinal" value="false"/> - <property name="allowedAbbreviationLength" value="1"/> - </module> - <module name="OverloadMethodsDeclarationOrder"/> - <module name="VariableDeclarationUsageDistance"/> - <module name="CustomImportOrder"> - <property name="specialImportsRegExp" value="org.torproject"/> - <property name="sortImportsInGroupAlphabetically" value="true"/> - <property name="customImportOrderRules" value="STATIC###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE"/> - </module> - <module name="MethodParamPad"/> - <module name="OperatorWrap"> - <property name="option" value="NL"/> - <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/> - </module> - <module name="AnnotationLocation"> - <property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/> - </module> - <module name="AnnotationLocation"> - <property name="tokens" value="VARIABLE_DEF"/> - <property name="allowSamelineMultipleAnnotations" value="true"/> - </module> - <module name="NonEmptyAtclauseDescription"/> - <module name="JavadocTagContinuationIndentation"/> - <module name="SummaryJavadoc"> - <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/> - </module> - <module name="JavadocParagraph"/> - <module name="AtclauseOrder"> - <property name="tagOrder" value="@param, @return, @throws, @deprecated"/> - <property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/> - </module> - <module name="JavadocMethod"> - <property name="scope" value="public"/> - <property name="allowMissingParamTags" value="true"/> - <property name="allowMissingThrowsTags" value="true"/> - <property name="allowMissingReturnTag" value="true"/> - <property name="minLineCount" value="2"/> - <property name="allowedAnnotations" value="Override, Test"/> - <property name="allowThrowsTagsForSubclasses" value="true"/> - </module> - <module name="MethodName"> - <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/> - <message key="name.invalidPattern" - value="Method name ''{0}'' must match pattern ''{1}''."/> - </module> - <module name="SingleLineJavadoc"> - <property name="ignoreInlineTags" value="false"/> - </module> - <module name="EmptyCatchBlock"> - <property name="exceptionVariableName" value="expected"/> - </module> - <module name="CommentsIndentation"/> - </module> -</module>
tor-commits@lists.torproject.org