[tor-commits] [metrics-lib/master] Implements task-20596: use metrics-base and reduced build.xml,
karsten at torproject.org
karsten at torproject.org
Thu Jan 5 14:36:18 UTC 2017
commit e8df8cf6f24fb0c408510a18e0421f8ede4d9efd
Author: iwakeh <iwakeh at 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="© 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>
More information about the tor-commits
mailing list