aboutsummaryrefslogtreecommitdiff
path: root/buildscripts
diff options
context:
space:
mode:
authorJulien Desprez <jdesprez@google.com>2018-10-22 11:37:22 -0700
committerandroid-build-merger <android-build-merger@google.com>2018-10-22 11:37:22 -0700
commit13217871fefa43f6d16fbb31b04e9904996d87d5 (patch)
treeede84fcf0a9687d4907ae5f8a4788271d62e0922 /buildscripts
parentcfbefd32336596ea63784607e4106dc37ce0567f (diff)
parent6fbc3cf5a1a3369fd354c1e5d9f90c86e4bce0a4 (diff)
downloadopencensus-java-13217871fefa43f6d16fbb31b04e9904996d87d5.tar.gz
Merge remote-tracking branch 'aosp/upstream-master' into merge am: dd3cabeacc
am: 6fbc3cf5a1 Change-Id: I11b0ec1cf561d2a14da78e444b1594f167787fe6
Diffstat (limited to 'buildscripts')
-rw-r--r--buildscripts/checkstyle.license15
-rw-r--r--buildscripts/checkstyle.xml277
-rw-r--r--buildscripts/codecov.yml2
-rw-r--r--buildscripts/import-control.xml252
-rw-r--r--buildscripts/kokoro/linux.cfg5
-rwxr-xr-xbuildscripts/kokoro/linux.sh23
-rw-r--r--buildscripts/kokoro/linux_build.cfg19
-rw-r--r--buildscripts/kokoro/linux_example_bazel.cfg10
-rw-r--r--buildscripts/kokoro/linux_example_format.cfg9
-rw-r--r--buildscripts/kokoro/linux_example_gradle.cfg10
-rw-r--r--buildscripts/kokoro/linux_example_license.cfg10
-rw-r--r--buildscripts/kokoro/linux_example_maven.cfg10
-rw-r--r--buildscripts/kokoro/linux_framework.cfg10
-rw-r--r--buildscripts/kokoro/linux_git_history.cfg10
-rwxr-xr-xbuildscripts/kokoro/linux_presubmit.sh90
-rw-r--r--buildscripts/kokoro/macos.cfg6
-rwxr-xr-xbuildscripts/kokoro/windows.bat21
-rw-r--r--buildscripts/kokoro/windows.cfg5
18 files changed, 784 insertions, 0 deletions
diff --git a/buildscripts/checkstyle.license b/buildscripts/checkstyle.license
new file mode 100644
index 00000000..27bac1a2
--- /dev/null
+++ b/buildscripts/checkstyle.license
@@ -0,0 +1,15 @@
+^/\*$
+^ \* Copyright \d\d\d\d(-\d\d)?, OpenCensus Authors$
+^ \*$
+^ \* Licensed 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\.$
+^ \*/$ \ No newline at end of file
diff --git a/buildscripts/checkstyle.xml b/buildscripts/checkstyle.xml
new file mode 100644
index 00000000..50b146e7
--- /dev/null
+++ b/buildscripts/checkstyle.xml
@@ -0,0 +1,277 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+ "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
+ "https://checkstyle.org/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.
+
+ 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="error"/>
+
+
+ <module name="RegexpHeader">
+ <property name="headerFile" value="${rootDir}/buildscripts/checkstyle.license"/>
+ <property name="fileExtensions" value="java"/>
+ </module>
+
+ <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(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="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
+ </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="RedundantImport"/>
+ <module name="OneTopLevelClass"/>
+ <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"/>
+ <module name="RightCurly">
+ <property name="id" value="RightCurlySame"/>
+ <property name="tokens"
+ value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE,
+ LITERAL_DO"/>
+ </module>
+ <module name="RightCurly">
+ <property name="id" value="RightCurlyAlone"/>
+ <property name="option" value="alone"/>
+ <property name="tokens"
+ value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, 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"/>
+ <!-- <!-\- This rule conflicts with Error Prone's exhaustiveness checking. -\-> -->
+ <!-- <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="id" value="SeparatorWrapDot"/>
+ <property name="tokens" value="DOT"/>
+ <property name="option" value="nl"/>
+ </module>
+ <module name="SeparatorWrap">
+ <property name="id" value="SeparatorWrapComma"/>
+ <property name="tokens" value="COMMA"/>
+ <property name="option" value="EOL"/>
+ </module>
+ <module name="SeparatorWrap">
+ <!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/258 -->
+ <property name="id" value="SeparatorWrapEllipsis"/>
+ <property name="tokens" value="ELLIPSIS"/>
+ <property name="option" value="EOL"/>
+ </module>
+ <module name="SeparatorWrap">
+ <!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/259 -->
+ <property name="id" value="SeparatorWrapArrayDeclarator"/>
+ <property name="tokens" value="ARRAY_DECLARATOR"/>
+ <property name="option" value="EOL"/>
+ </module>
+ <module name="SeparatorWrap">
+ <property name="id" value="SeparatorWrapMethodRef"/>
+ <property name="tokens" value="METHOD_REF"/>
+ <property name="option" value="nl"/>
+ </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="LambdaParameterName">
+ <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
+ <message key="name.invalidPattern"
+ value="Lambda parameter name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="CatchParameterName">
+ <property name="format" value="^[a-z]([a-z0-9][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]*)?$"/>
+ <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>
+ <!-- <!-\- Checkstyle indentation rules conflict with google-java-format: -\-> -->
+ <!-- <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"/>
+ <!-- <!-\- Many unit tests define all variables at the start of the method. -\-> -->
+ <!-- <module name="VariableDeclarationUsageDistance"/> -->
+ <module name="CustomImportOrder">
+ <property name="sortImportsInGroupAlphabetically" value="true"/>
+ <property name="separateLineBetweenGroups" value="true"/>
+ <property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
+ </module>
+ <module name="MethodParamPad"/>
+ <module name="NoWhitespaceBefore">
+ <property name="tokens"
+ value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
+ <property name="allowLineBreaks" value="true"/>
+ </module>
+ <module name="ParenPad"/>
+ <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, METHOD_REF "/>
+ </module>
+ <module name="AnnotationLocation">
+ <property name="id" value="AnnotationLocationMostCases"/>
+ <property name="tokens"
+ value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
+ </module>
+ <module name="AnnotationLocation">
+ <property name="id" value="AnnotationLocationVariables"/>
+ <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"/>
+ <!-- <!-\- Too restrictive for tests -\-> -->
+ <!-- <property name="allowedAnnotations" value="Override, Test"/ -->
+ <property name="allowedAnnotations"
+ value="Override, Test, Before, After, BeforeClass, AfterClass, Setup,
+ TearDown"/>
+ <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">
+ <!-- <!-\- Wrong interpretation of the style guide; -\-> -->
+ <!-- <property name="ignoreInlineTags" value="false"/ -->
+ </module>
+ <module name="EmptyCatchBlock">
+ <property name="exceptionVariableName" value="expected"/>
+ </module>
+ <module name="CommentsIndentation"/>
+ <module name="SuppressWarningsHolder"/>
+ <module name="ImportControl">
+ <property name="file" value="${rootDir}/buildscripts/import-control.xml"/>
+ <property name="path" value="^.*[\\/]src[\\/]main[\\/]java[\\/].*$"/>
+ </module>
+ <module name="SuppressionCommentFilter"/>
+ </module>
+ <module name="SuppressWarningsFilter"/>
+</module>
diff --git a/buildscripts/codecov.yml b/buildscripts/codecov.yml
new file mode 100644
index 00000000..a2c8d611
--- /dev/null
+++ b/buildscripts/codecov.yml
@@ -0,0 +1,2 @@
+ignore:
+ - "impl_core/src/main/java/io/opencensus/implcore/internal/VarInt.java" # ignore VarInt
diff --git a/buildscripts/import-control.xml b/buildscripts/import-control.xml
new file mode 100644
index 00000000..d545878a
--- /dev/null
+++ b/buildscripts/import-control.xml
@@ -0,0 +1,252 @@
+<?xml version="1.0"?>
+<!DOCTYPE import-control PUBLIC
+ "-//Puppy Crawl//DTD Import Control 1.3//EN"
+ "http://checkstyle.sourceforge.net/dtds/import_control_1_3.dtd">
+
+<!--
+
+General guidelines on imports:
+
+- 'stats' depends on 'tags', but 'tags' shouldn't depend on 'stats' or 'trace'.
+ 'stats'/'tags' and 'trace' should remain independent, where possible.
+
+- Packages should not be split between artifacts.
+
+- 'internal' packages should only be imported by packages within the same
+ artifact.
+
+- Since we are trying to remove dependencies on Guava (issue #1113), we should
+ avoid adding any new Guava imports here, especially in the API.
+
+-->
+
+<import-control pkg="io.opencensus">
+ <allow pkg="com.google.auto.value"/>
+ <allow pkg="com.google.errorprone.annotations"/>
+ <allow pkg="java"/>
+ <allow pkg="javax"/>
+ <allow class="io.grpc.Context"/>
+ <subpackage name="common">
+ <allow pkg="io.opencensus.common"/>
+ </subpackage>
+ <subpackage name="internal">
+ <allow pkg="io.opencensus.common"/>
+ <allow pkg="io.opencensus.internal"/>
+ </subpackage>
+ <subpackage name="tags">
+ <allow pkg="io.opencensus.common"/>
+ <allow pkg="io.opencensus.internal"/>
+ <allow pkg="io.opencensus.tags"/>
+ </subpackage>
+ <subpackage name="metrics">
+ <allow pkg="io.opencensus.internal"/>
+ <allow pkg="io.opencensus.common"/>
+ <allow pkg="io.opencensus.metrics"/>
+ </subpackage>
+ <subpackage name="stats">
+ <allow pkg="io.opencensus.common"/>
+ <allow pkg="io.opencensus.internal"/>
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.tags"/>
+ </subpackage>
+ <subpackage name="trace">
+ <allow pkg="io.opencensus.common"/>
+ <allow pkg="io.opencensus.internal"/>
+ <allow pkg="io.opencensus.trace"/>
+
+ <!-- These dependencies on impl/implcore are only needed by -->
+ <!-- io.opencensus.trace.TraceComponentImpl and io.opencensus.trace.TraceComponentImplLite, -->
+ <!-- which are deprecated. -->
+ <allow class="io.opencensus.impl.internal.DisruptorEventQueue"/>
+ <allow class="io.opencensus.impl.trace.internal.ThreadLocalRandomHandler"/>
+ <allow class="io.opencensus.implcore.common.MillisClock"/>
+ <allow class="io.opencensus.implcore.internal.SimpleEventQueue"/>
+ <allow class="io.opencensus.implcore.trace.TraceComponentImplBase"/>
+ <allow class="io.opencensus.implcore.trace.internal.RandomHandler.SecureRandomHandler"/>
+ </subpackage>
+ <subpackage name="contrib">
+ <allow pkg="com.google.common"/>
+ <allow pkg="io.opencensus.common"/>
+ <subpackage name="agent">
+ <allow pkg="com.google.auto"/>
+ <allow pkg="com.typesafe.config"/>
+ <allow pkg="edu.umd.cs.findbugs.annotations"/>
+ <allow pkg="io.opencensus.contrib.agent"/>
+ <allow pkg="io.opencensus.trace"/>
+ <allow pkg="net.bytebuddy"/>
+ </subpackage>
+ <subpackage name="appengine.standard.util">
+ <allow pkg="com.google.apphosting"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ <subpackage name="exemplar.util">
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ <subpackage name="grpc.metrics">
+ <allow pkg="io.opencensus.contrib.grpc.metrics"/>
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.tags"/>
+ </subpackage>
+ <subpackage name="http.util">
+ <allow pkg="io.opencensus.contrib.http.util"/>
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.tags"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ <subpackage name="logcorrelation.log4j2">
+ <allow pkg="io.opencensus.contrib.logcorrelation.log4j2"/>
+ <allow pkg="io.opencensus.trace"/>
+ <disallow pkg="org.apache.logging.log4j.core.impl"/>
+ <allow pkg="org.apache.logging.log4j"/>
+ </subpackage>
+ <subpackage name="logcorrelation.stackdriver">
+ <allow pkg="com.google.cloud"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ <subpackage name="spring">
+ <allow pkg="io.opencensus.trace"/>
+ <allow pkg="org.aspectj.lang"/>
+ <allow pkg="org.aspectj.lang.annotation"/>
+ <allow pkg="org.aspectj.lang.reflect"/>
+ <allow pkg="org.springframework.beans.factory.annotation"/>
+ <subpackage name="sleuth">
+ <allow pkg="io.opencensus.trace"/>
+ <allow pkg="org.apache.commons.logging"/>
+ <allow pkg="org.springframework.beans.factory.annotation"/>
+ <allow pkg="org.springframework.beans.factory.config"/>
+ <allow pkg="org.springframework.boot.autoconfigure"/>
+ <allow pkg="org.springframework.boot.context"/>
+ <allow pkg="org.springframework.context.annotation"/>
+ <allow pkg="org.springframework.boot.context.properties"/>
+ <allow pkg="org.springframework.cloud.sleuth"/>
+ <allow pkg="org.springframework.core"/>
+ </subpackage>
+ </subpackage>
+ <subpackage name="zpages">
+ <allow pkg="com.sun.net.httpserver"/>
+ <allow pkg="io.opencensus.contrib.grpc.metrics"/>
+ <allow pkg="io.opencensus.contrib.zpages"/>
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.tags"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ <subpackage name="monitoredresource.util">
+ <allow pkg="io.opencensus.contrib.monitoredresource.util"/>
+ </subpackage>
+ <subpackage name="dropwizard">
+ <allow pkg="io.opencensus.contrib.dropwizard"/>
+ <allow pkg="io.opencensus.metrics"/>
+ <allow pkg="io.opencensus.implcore"/>
+ <allow pkg="io.opencensus.internal"/>
+ <allow pkg="com.codahale.metrics"/>
+ </subpackage>
+ </subpackage>
+ <subpackage name="exporter">
+ <allow pkg="com.google.common"/>
+ <allow pkg="io.opencensus.common"/>
+ <subpackage name="stats">
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.tags"/>
+ <subpackage name="prometheus">
+ <allow pkg="io.opencensus.exporter.stats.prometheus"/>
+ <allow pkg="io.opencensus.trace"/>
+ <allow pkg="io.prometheus.client"/>
+ </subpackage>
+ <subpackage name="signalfx">
+ <allow pkg="com.signalfx"/>
+ <allow pkg="io.opencensus.exporter.stats.signalfx"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ <subpackage name="stackdriver">
+ <allow pkg="com.google"/>
+ <allow pkg="io.opencensus.exporter.stats.stackdriver"/>
+ <allow pkg="io.opencensus.trace"/>
+ <allow pkg="io.opencensus.contrib.monitoredresource.util"/>
+ </subpackage>
+ </subpackage>
+ <subpackage name="trace">
+ <allow pkg="io.opencensus.trace"/>
+ <subpackage name="instana">
+ <allow pkg="io.opencensus.exporter.trace.instana"/>
+ </subpackage>
+ <subpackage name="jaeger">
+ <allow pkg="com.uber.jaeger"/>
+ <allow pkg="io.opencensus.exporter.trace.jaeger"/>
+ <allow pkg="org.apache.thrift"/>
+ </subpackage>
+ <subpackage name="ocagent">
+ <allow pkg="com.google.protobuf"/>
+ <allow pkg="io.grpc"/>
+ <allow pkg="io.opencensus.contrib.monitoredresource.util"/>
+ <allow pkg="io.opencensus.contrib.opencensus.proto.util"/>
+ <allow pkg="io.opencensus.exporter.trace.ocagent"/>
+ <allow pkg="io.opencensus.proto"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ <subpackage name="stackdriver">
+ <allow pkg="com.google"/>
+ <allow pkg="io.opencensus.exporter.trace.stackdriver"/>
+ <allow pkg="io.opencensus.contrib.monitoredresource.util"/>
+ </subpackage>
+ <subpackage name="zipkin">
+ <allow pkg="io.opencensus.exporter.trace.zipkin"/>
+ <allow pkg="zipkin2"/>
+ </subpackage>
+ </subpackage>
+ </subpackage>
+ <subpackage name="implcore">
+ <allow pkg="com.google.common"/>
+ <allow pkg="io.opencensus.common"/>
+ <allow pkg="io.opencensus.implcore"/>
+ <allow pkg="io.opencensus.metrics"/>
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.tags"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ <subpackage name="impl">
+ <allow pkg="com.lmax.disruptor"/>
+ <allow pkg="io.opencensus.common"/>
+ <allow pkg="io.opencensus.impl"/>
+ <allow pkg="io.opencensus.implcore"/>
+ <allow pkg="io.opencensus.metrics"/>
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.tags"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ <subpackage name="impllite">
+ <allow pkg="io.opencensus.common"/>
+ <allow pkg="io.opencensus.implcore"/>
+ <allow pkg="io.opencensus.impllite"/>
+ <allow pkg="io.opencensus.metrics"/>
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.tags"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ <subpackage name="testing">
+ <allow pkg="com.google.common"/>
+ <allow pkg="io.opencensus.common"/>
+ <subpackage name="common">
+ <allow pkg="io.opencensus.testing.common"/>
+ </subpackage>
+ <subpackage name="export">
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.tags"/>
+ <allow pkg="io.opencensus.testing.export"/>
+ <allow pkg="io.opencensus.trace"/>
+ </subpackage>
+ </subpackage>
+ <subpackage name="examples">
+ <allow pkg="com.google.common"/>
+ <allow pkg="io.grpc"/>
+ <allow pkg="io.opencensus.common"/>
+ <allow pkg="io.opencensus.contrib"/>
+ <allow pkg="io.opencensus.examples"/>
+ <allow pkg="io.opencensus.exporter"/>
+ <allow pkg="io.opencensus.stats"/>
+ <allow pkg="io.opencensus.tags"/>
+ <allow pkg="io.opencensus.testing.export"/>
+ <allow pkg="io.opencensus.trace"/>
+ <allow pkg="io.prometheus"/>
+ </subpackage>
+</import-control>
diff --git a/buildscripts/kokoro/linux.cfg b/buildscripts/kokoro/linux.cfg
new file mode 100644
index 00000000..0d9e253b
--- /dev/null
+++ b/buildscripts/kokoro/linux.cfg
@@ -0,0 +1,5 @@
+# Config file for internal CI
+
+# Location of the continuous shell script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/linux.sh"
+timeout_mins: 60 \ No newline at end of file
diff --git a/buildscripts/kokoro/linux.sh b/buildscripts/kokoro/linux.sh
new file mode 100755
index 00000000..e8aa21be
--- /dev/null
+++ b/buildscripts/kokoro/linux.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# This file is used for Linux builds.
+# To run locally:
+# ./buildscripts/kokoro/linux.sh
+
+# This script assumes `set -e`. Removing it may lead to undefined behavior.
+set -exu -o pipefail
+
+# It would be nicer to use 'readlink -f' here but osx does not support it.
+readonly OPENCENSUS_JAVA_DIR="$(cd "$(dirname "$0")"/../.. && pwd)"
+
+# cd to the root dir of opencensus-java
+cd $(dirname $0)/../..
+
+# Run tests
+./gradlew clean build
+
+OS=`uname`
+# Check the example only on Linux.
+if [ "$OS" = "Linux" ] ; then
+ pushd examples; ./gradlew clean assemble check --stacktrace; popd
+fi
diff --git a/buildscripts/kokoro/linux_build.cfg b/buildscripts/kokoro/linux_build.cfg
new file mode 100644
index 00000000..ddd15937
--- /dev/null
+++ b/buildscripts/kokoro/linux_build.cfg
@@ -0,0 +1,19 @@
+# Config file for child task BUILD
+
+env_vars {
+ key: "TASK"
+ value: "BUILD"
+}
+
+# Location of the continuous shell script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/linux_presubmit.sh"
+timeout_mins: 60
+
+before_action {
+ fetch_keystore {
+ keystore_resource {
+ keystore_config_id: 73495
+ keyname: "codecov-auth-token"
+ }
+ }
+}
diff --git a/buildscripts/kokoro/linux_example_bazel.cfg b/buildscripts/kokoro/linux_example_bazel.cfg
new file mode 100644
index 00000000..3f4c872e
--- /dev/null
+++ b/buildscripts/kokoro/linux_example_bazel.cfg
@@ -0,0 +1,10 @@
+# Config file for child task BUILD_EXAMPLES_BAZEL
+
+env_vars {
+ key: "TASK"
+ value: "BUILD_EXAMPLES_BAZEL"
+}
+
+# Location of the continuous shell script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/linux_presubmit.sh"
+timeout_mins: 60
diff --git a/buildscripts/kokoro/linux_example_format.cfg b/buildscripts/kokoro/linux_example_format.cfg
new file mode 100644
index 00000000..6f9a3dc1
--- /dev/null
+++ b/buildscripts/kokoro/linux_example_format.cfg
@@ -0,0 +1,9 @@
+# Config file for child task CHECK_EXAMPLES_FORMAT
+env_vars {
+ key: "TASK"
+ value: "CHECK_EXAMPLES_FORMAT"
+}
+
+# Location of the continuous shell script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/linux_presubmit.sh"
+timeout_mins: 60
diff --git a/buildscripts/kokoro/linux_example_gradle.cfg b/buildscripts/kokoro/linux_example_gradle.cfg
new file mode 100644
index 00000000..7c14df77
--- /dev/null
+++ b/buildscripts/kokoro/linux_example_gradle.cfg
@@ -0,0 +1,10 @@
+# Config file for child task BUILD_EXAMPLES_GRADLE
+
+env_vars {
+ key: "TASK"
+ value: "BUILD_EXAMPLES_GRADLE"
+}
+
+# Location of the continuous shell script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/linux_presubmit.sh"
+timeout_mins: 60
diff --git a/buildscripts/kokoro/linux_example_license.cfg b/buildscripts/kokoro/linux_example_license.cfg
new file mode 100644
index 00000000..19cc67d0
--- /dev/null
+++ b/buildscripts/kokoro/linux_example_license.cfg
@@ -0,0 +1,10 @@
+# Config file for child task CHECK_EXAMPLES_LICENSE
+
+env_vars {
+ key: "TASK"
+ value: "CHECK_EXAMPLES_LICENSE"
+}
+
+# Location of the continuous shell script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/linux_presubmit.sh"
+timeout_mins: 60
diff --git a/buildscripts/kokoro/linux_example_maven.cfg b/buildscripts/kokoro/linux_example_maven.cfg
new file mode 100644
index 00000000..98f4a3b9
--- /dev/null
+++ b/buildscripts/kokoro/linux_example_maven.cfg
@@ -0,0 +1,10 @@
+# Config file for child task BUILD_EXAMPLES_MAVEN
+
+env_vars {
+ key: "TASK"
+ value: "BUILD_EXAMPLES_MAVEN"
+}
+
+# Location of the continuous shell script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/linux_presubmit.sh"
+timeout_mins: 60
diff --git a/buildscripts/kokoro/linux_framework.cfg b/buildscripts/kokoro/linux_framework.cfg
new file mode 100644
index 00000000..112fc206
--- /dev/null
+++ b/buildscripts/kokoro/linux_framework.cfg
@@ -0,0 +1,10 @@
+# Config file for child task CHECKER_FRAMEWORK
+
+env_vars {
+ key: "TASK"
+ value: "CHECKER_FRAMEWORK"
+}
+
+# Location of the continuous shell script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/linux_presubmit.sh"
+timeout_mins: 60
diff --git a/buildscripts/kokoro/linux_git_history.cfg b/buildscripts/kokoro/linux_git_history.cfg
new file mode 100644
index 00000000..5677835a
--- /dev/null
+++ b/buildscripts/kokoro/linux_git_history.cfg
@@ -0,0 +1,10 @@
+# Config file for child task CHECK_GIT_HISTORY
+
+env_vars {
+ key: "TASK"
+ value: "CHECK_GIT_HISTORY"
+}
+
+# Location of the continuous shell script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/linux_presubmit.sh"
+timeout_mins: 60
diff --git a/buildscripts/kokoro/linux_presubmit.sh b/buildscripts/kokoro/linux_presubmit.sh
new file mode 100755
index 00000000..bb1281b4
--- /dev/null
+++ b/buildscripts/kokoro/linux_presubmit.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+# This file is used for Linux builds.
+# It expects TASK environment variable is defined.
+# To run locally:
+# ./buildscripts/kokoro/linux.sh
+
+# This script assumes `set -e`. Removing it may lead to undefined behavior.
+set -exu -o pipefail
+
+# It would be nicer to use 'readlink -f' here but osx does not support it.
+readonly OPENCENSUS_JAVA_DIR="$(cd "$(dirname "$0")"/../.. && pwd)"
+
+# cd to the root dir of opencensus-java
+cd $(dirname $0)/../..
+
+valid_tasks() {
+ echo "Valid tasks are"
+ echo ""
+ echo "- BUILD"
+ echo "- BUILD_EXAMPLES_BAZEL"
+ echo "- BUILD_EXAMPLES_GRADLE"
+ echo "- BUILD_EXAMPLES_MAVEN"
+ echo "- CHECKER_FRAMEWORK"
+ echo "- CHECK_EXAMPLES_FORMAT"
+ echo "- CHECK_EXAMPLES_LICENSE"
+ echo "- CHECK_GIT_HISTORY"
+}
+
+if [[ ! -v TASK ]]; then
+ set +x
+ echo "TASK not set in environment"
+ valid_tasks
+ exit 1
+fi
+
+case "$TASK" in
+ "CHECK_GIT_HISTORY")
+ python ./scripts/check-git-history.py
+ ;;
+ "BUILD")
+ ./gradlew clean assemble --stacktrace
+ ./gradlew check :opencensus-all:jacocoTestReport
+ ./gradlew verGJF
+
+ # Run codecoverage reporting only if the script is running
+ # as a part of KOKORO BUILD. If it is outside of kokoro
+ # then there is no access to the codecov token and hence
+ # there is no point in running it.
+ if [[ -v KOKORO_BUILD_NUMBER ]]; then
+ # Get token from file located at
+ # $KOKORO_KEYSTORE_DIR/73495_codecov-auth-token
+ if [ -f $KOKORO_KEYSTORE_DIR/73495_codecov-auth-token ] ; then
+ curl -s https://codecov.io/bash | bash -s -- -Z -t @$KOKORO_KEYSTORE_DIR/73495_codecov-auth-token
+ else
+ echo "Codecov token file not found"
+ exit 1
+ fi
+ else
+ echo "Skipping codecov reporting"
+ fi
+ ;;
+ "CHECKER_FRAMEWORK")
+ ./gradlew clean assemble -PcheckerFramework=true
+ ;;
+ "CHECK_EXAMPLES_LICENSE")
+ curl -L -o checkstyle-8.12-all.jar https://github.com/checkstyle/checkstyle/releases/download/checkstyle-8.12/checkstyle-8.12-all.jar
+ java -DrootDir=. -jar checkstyle-8.12-all.jar -c buildscripts/checkstyle.xml examples/src/
+ ;;
+ "CHECK_EXAMPLES_FORMAT")
+ curl -L -o google-java-format-1.5-all-deps.jar \
+ https://github.com/google/google-java-format/releases/download/google-java-format-1.5/google-java-format-1.5-all-deps.jar
+ java -jar google-java-format-1.5-all-deps.jar --set-exit-if-changed --dry-run `find examples/src/ -name '*.java'`
+ ;;
+ "BUILD_EXAMPLES_GRADLE")
+ pushd examples && ./gradlew clean assemble --stacktrace && popd
+ ;;
+ "BUILD_EXAMPLES_MAVEN")
+ pushd examples && mvn clean package appassembler:assemble -e && popd
+ ;;
+ "BUILD_EXAMPLES_BAZEL")
+ pushd examples && bazel clean && bazel build :all && popd
+ ;;
+ *)
+ set +x
+ echo "Unknown task $TASK"
+ valid_tasks
+ exit 1
+ ;;
+esac
diff --git a/buildscripts/kokoro/macos.cfg b/buildscripts/kokoro/macos.cfg
new file mode 100644
index 00000000..fe3a9803
--- /dev/null
+++ b/buildscripts/kokoro/macos.cfg
@@ -0,0 +1,6 @@
+# Config file for internal CI
+
+# Same script is used for macos as it is for Linux.
+# Location of the continuous shell script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/linux.sh"
+timeout_mins: 60
diff --git a/buildscripts/kokoro/windows.bat b/buildscripts/kokoro/windows.bat
new file mode 100755
index 00000000..7787df07
--- /dev/null
+++ b/buildscripts/kokoro/windows.bat
@@ -0,0 +1,21 @@
+@rem ##########################################################################
+@rem
+@rem Script to set up Kokoro worker and run Windows tests
+@rem
+@rem ##########################################################################
+@rem
+@rem To run locally execute 'buildscript\kokoro\windows.bat'.
+type c:\VERSION
+
+@rem Enter repo root
+cd /d %~dp0\..\..
+
+@rem Clear JAVA_HOME to prevent a different Java version from being used
+set JAVA_HOME=
+set PATH=C:\Program Files\java\jdk1.8.0_152\bin;%PATH%
+
+cmd.exe /C "%cd%\gradlew.bat" clean build || exit /b 1
+pushd examples
+cmd.exe /C "%cd%\gradlew.bat" clean assemble check --stacktrace || exit /b 1
+popd
+
diff --git a/buildscripts/kokoro/windows.cfg b/buildscripts/kokoro/windows.cfg
new file mode 100644
index 00000000..e5ff9b08
--- /dev/null
+++ b/buildscripts/kokoro/windows.cfg
@@ -0,0 +1,5 @@
+# Config file for internal CI
+
+# Location of the continuous windows batch script in repository.
+build_file: "opencensus-java/buildscripts/kokoro/windows.bat"
+timeout_mins: 60