diff --git a/.travis.yml b/.travis.yml index ebedf605a4..972c0c4cc0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,9 +10,9 @@ jdk: # prevent travis running gradle assemble; let the build script do it anyway install: true - + +# running in container causes test failures and 2x-3x longer build, use standalone instances sudo: required -# as per http://blog.travis-ci.com/2014-12-17-faster-builds-with-container-based-infrastructure/ # script for build and release via Travis to Bintray script: gradle/buildViaTravis.sh diff --git a/HEADER b/HEADER new file mode 100644 index 0000000000..3949e0b453 --- /dev/null +++ b/HEADER @@ -0,0 +1,10 @@ +Copyright (c) 2016-present, RxJava Contributors. + +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. diff --git a/build.gradle b/build.gradle index 1b3e557648..927fde214a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,22 +1,47 @@ buildscript { - repositories { jcenter() } + repositories { + jcenter() + mavenCentral() + maven { + url "https://plugins.gradle.org/m2/" + } + } dependencies { - classpath 'com.netflix.nebula:gradle-rxjava-project-plugin:4.0.0' - classpath 'ru.vyarus:gradle-animalsniffer-plugin:1.1.0' + classpath "ru.vyarus:gradle-animalsniffer-plugin:1.2.0" + classpath "gradle.plugin.nl.javadude.gradle.plugins:license-gradle-plugin:0.13.1" + classpath "me.champeau.gradle:jmh-gradle-plugin:0.4.4" + classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3" + classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.5.2" } } -group = 'io.reactivex.rxjava2' +group = "io.reactivex.rxjava2" +ext.githubProjectName = "rxjava" + +version = project.properties["release.version"] + +def releaseTag = System.getenv("TRAVIS_TAG"); +if (releaseTag != null && !releaseTag.isEmpty()) { + if (releaseTag.startsWith("v")) { + releaseTag = releaseTag.substring(1); + } + version = releaseTag; + + println("Releasing with version " + project.properties["release.version"]); +} -description = 'RxJava: Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.' +description = "RxJava: Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM." -apply plugin: 'java' -// apply plugin: 'pmd' // disabled because runs out of memory on Travis -// apply plugin: 'findbugs' // disabled because runs out of memory on Travis -apply plugin: 'checkstyle' -apply plugin: 'jacoco' -apply plugin: 'ru.vyarus.animalsniffer' -apply plugin: 'nebula.rxjava-project' +apply plugin: "java" +apply plugin: "checkstyle" +apply plugin: "jacoco" +apply plugin: "ru.vyarus.animalsniffer" +apply plugin: "maven" +apply plugin: "osgi" +apply plugin: "me.champeau.gradle.jmh" +apply plugin: "com.github.hierynomus.license" +apply plugin: "com.jfrog.bintray" +apply plugin: "com.jfrog.artifactory" sourceCompatibility = JavaVersion.VERSION_1_6 targetCompatibility = JavaVersion.VERSION_1_6 @@ -32,61 +57,158 @@ def testNgVersion = "6.9.10" // -------------------------------------- +repositories { + mavenCentral() +} + dependencies { - signature 'org.codehaus.mojo.signature:java16:1.1@signature' + signature "org.codehaus.mojo.signature:java16:1.1@signature" compile "org.reactivestreams:reactive-streams:$reactiveStreamsVersion" testCompile "junit:junit:$junitVersion" testCompile "org.mockito:mockito-core:$mockitoVersion" - perfCompile "org.openjdk.jmh:jmh-core:$jmhVersion" - perfCompile "org.openjdk.jmh:jmh-generator-annprocess:$jmhVersion" - testCompile "org.reactivestreams:reactive-streams-tck:$reactiveStreamsVersion" testCompile "org.testng:testng:$testNgVersion" } javadoc { + failOnError = false exclude "**/internal/**" exclude "**/test/**" exclude "**/perf/**" + exclude "**/jmh/**" options { windowTitle = "RxJava Javadoc ${project.version}" } // Clear the following options to make the docs consistent with the old format - options.addStringOption('top').value = '' - options.addStringOption('doctitle').value = '' - options.addStringOption('header').value = '' + options.addStringOption("top").value = "" + options.addStringOption("doctitle").value = "" + options.addStringOption("header").value = "" options.links("http://docs.oracle.com/javase/7/docs/api/") options.links("http://www.reactive-streams.org/reactive-streams-${reactiveStreamsVersion}-javadoc/") if (JavaVersion.current().isJava7()) { // "./gradle/stylesheet.css" only supports Java 7 - options.addStringOption('stylesheetfile', rootProject.file('./gradle/stylesheet.css').toString()) + options.addStringOption("stylesheetfile", rootProject.file("./gradle/stylesheet.css").toString()) } } animalsniffer { - annotation = 'io.reactivex.internal.util.SuppressAnimalSniffer' + annotation = "io.reactivex.internal.util.SuppressAnimalSniffer" +} + +task sourcesJar(type: Jar, dependsOn: classes) { + classifier = "sources" + from sourceSets.main.allSource +} + +task javadocJar(type: Jar, dependsOn: javadoc) { + classifier = "javadoc" + from javadoc.destinationDir +} + +artifacts { + archives jar + archives sourcesJar + archives javadocJar +} + +jar { + manifest { + name = "rxjava" + instruction "Bundle-Vendor", "RxJava Contributors" + instruction "Bundle-DocURL", "https://github.com/ReactiveX/RxJava" + instruction "Import-Package", "!org.junit,!junit.framework,!org.mockito.*,!org.testng.*,*" + instruction "Eclipse-ExtensibleAPI", "true" + } +} + +license { + header rootProject.file("HEADER") + ext.year = Calendar.getInstance().get(Calendar.YEAR) + skipExistingHeaders true + ignoreFailures true + excludes(["**/*.md", "**/*.txt"]) +} + +apply plugin: "maven-publish" + +install { + repositories.mavenInstaller.pom.project { + name "RxJava" + description "Reactive Extensions for Java" + url "https://github.com/ReactiveX/RxJava" + licenses { + license { + name "The Apache Software License, Version 2.0" + url "http://www.apache.org/licenses/LICENSE-2.0.txt" + distribution "repo" + } + } + developers { + developer { + id "akarnokd" + name "David Karnok" + email "akarnokd@gmail.com" + } + } + scm { + connection "scm:git:git@github.com:ReactiveX/RxJava.git" + url "scm:git:git@github.com:ReactiveX/RxJava.git" + developerConnection "scm:git:git@github.com:ReactiveX/RxJava.git" + } + issueManagement { + system "github" + url "https://github.com/ReactiveX/RxJava/issues" + } + } +} + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact (sourcesJar) { + classifier = "sources" + } + } + } +} + +// Reactive-Streams as compile dependency +publishing.publications.all { + pom.withXml { + asNode().dependencies."*".findAll() { + it.scope.text() == "runtime" && project.configurations.compile.allDependencies.find { dep -> + dep.name == it.artifactId.text() + } + }.each { it.scope*.value = "compile"} + } } -// support for snapshot/final releases with the various branches RxJava uses -nebulaRelease { - addReleaseBranchPattern(/\d+\.\d+\.\d+/) - addReleaseBranchPattern('HEAD') +jmh { + jmhVersion = "1.19" + humanOutputFile = null + + if (project.hasProperty("jmh")) { + include = ".*" + project.jmh + ".*" + println("JMH: " + include); + } + } -if (project.hasProperty('release.useLastTag')) { - tasks.prepare.enabled = false +plugins.withType(EclipsePlugin) { + project.eclipse.classpath.plusConfigurations += [ configurations.jmh ] } test { testLogging { // showing skipped occasionally should prevent CI timeout due to lack of standard output - events=['skipped', 'failed'] // "started", "passed" + events=["skipped", "failed"] // "started", "passed" // showStandardStreams = true exceptionFormat="full" @@ -102,7 +224,7 @@ test { maxHeapSize = "1200m" - if (System.getenv('CI') == null) { + if (System.getenv("CI") == null) { maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1 } } @@ -110,7 +232,7 @@ test { task testng(type: Test) { useTestNG() testLogging { - events=['skipped', 'failed'] + events=["skipped", "failed"] exceptionFormat="full" debug.events = ["skipped", "failed"] @@ -127,10 +249,10 @@ task testng(type: Test) { check.dependsOn testng jacoco { - toolVersion = '0.7.7.201606060606' // See http://www.eclemma.org/jacoco/. + toolVersion = "0.7.9" // See http://www.eclemma.org/jacoco/. } -task GCandMem(dependsOn: 'check') << { +task GCandMem(dependsOn: "check") doLast { print("Memory usage before: ") println(java.lang.management.ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed() / 1024.0 / 1024.0) System.gc() @@ -139,7 +261,7 @@ task GCandMem(dependsOn: 'check') << { println(java.lang.management.ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed() / 1024.0 / 1024.0) } -task GCandMem2(dependsOn: 'test') << { +task GCandMem2(dependsOn: "test") doLast { print("Memory usage before: ") println(java.lang.management.ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed() / 1024.0 / 1024.0) System.gc() @@ -159,7 +281,7 @@ jacocoTestReport { afterEvaluate { classDirectories = files(classDirectories.files.collect { fileTree(dir: it, - exclude: ['io/reactivex/tck/**']) + exclude: ["io/reactivex/tck/**"]) }) } } @@ -168,84 +290,71 @@ jacocoTestReport.dependsOn GCandMem build.dependsOn jacocoTestReport -// pmd { -// toolVersion = '5.4.2' -// ignoreFailures = true -// sourceSets = [sourceSets.main] -// ruleSets = [] -// ruleSetFiles = files('pmd.xml') -// } - -// pmdMain { -// reports { -// html.enabled = true -// xml.enabled = true -// } -// } - -// build.dependsOn pmdMain - -// task pmdPrint(dependsOn: 'pmdMain') << { -// File file = new File('build/reports/pmd/main.xml') -// if (file.exists()) { - -// println("Listing first 100 PMD violations") - -// file.eachLine { line, count -> -// if (count <= 100) { -// println(line) -// } -// } - -// } else { -// println("PMD file not found.") -// } -// } - -// build.dependsOn pmdPrint - checkstyle { - configFile file('checkstyle.xml') + configFile file("checkstyle.xml") ignoreFailures = true toolVersion ="6.19" } -/* -findbugs { - ignoreFailures true - toolVersion = '3.0.1' - effort = 'max' - reportLevel = 'low' - sourceSets = [sourceSets.main] -} - -findbugsMain { - reports { - html.enabled = false // Findbugs can only have on report enabled - xml.enabled = true - } -} -*/ - -// from https://discuss.gradle.org/t/maven-publish-plugin-generated-pom-making-dependency-scope-runtime/7494/10 +if (rootProject.hasProperty("releaseMode")) { -publishing.publications.all { - pom.withXml { - asNode().dependencies.'*'.findAll() { - it.scope.text() == 'runtime' && project.configurations.compile.allDependencies.find { dep -> - dep.name == it.artifactId.text() - } - }.each { it.scope*.value = 'compile'} - - asNode().developers.'*'.findAll() { - it.id.text() == 'benjchristensen' - } .each { - it.id*.value = 'akarnokd' - it.name*.value = 'David Karnok' - it.email*.value = 'akarnokd@gmail.com' + if ("branch".equals(rootProject.releaseMode)) { + // From https://github.com/ReactiveX/RxAndroid/blob/2.x/rxandroid/build.gradle#L94 + + println("ReleaseMode: " + rootProject.releaseMode); + artifactory { + contextUrl = "https://oss.jfrog.org" + + publish { + repository { + repoKey = "oss-snapshot-local" + + username = rootProject.bintrayUser + password = rootProject.bintrayKey + } + + defaults { + publishConfigs("archives") + } + } } - asNode().properties.nebula_Module_Owner*.value = 'akarnokd@gmail.com' - asNode().properties.nebula_Module_Email*.value = 'akarnokd@gmail.com' + build.finalizedBy(artifactoryPublish) } + + if ("full".equals(rootProject.releaseMode)) { + // based on https://github.com/bintray/gradle-bintray-plugin + println("ReleaseMode: " + rootProject.releaseMode); + + bintray { + user = rootProject.bintrayUser + key = rootProject.bintrayKey + configurations = ["archives"] + publications = ["mavenJava"] + publish = true + pkg { + repo = "generic" + name = "rxjava" + userOrg = "reactivex" + labels = ["rxjava", "reactivex"] + licenses = ["Apache-2.0"] + vcsUrl = "https://github.com/ReactiveX/RxJava.git" + version { + name = rver + gpg { + sign = true + } + mavenCentralSync { + sync = true + user = rootProject.sonatypeUsername + password = rootProject.sonatypePassword + close = "1" + } + } + } + } + + build.finalizedBy(bintrayUpload) + } } + diff --git a/gradle.properties b/gradle.properties index 5d8d80efe5..53ddd3a0ff 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ release.scope=patch -release.version=2.0.0-DP0-SNAPSHOT +release.version=2.2.0-SNAPSHOT diff --git a/gradle/buildViaTravis.sh b/gradle/buildViaTravis.sh index 4456600e36..f8ef3a8440 100755 --- a/gradle/buildViaTravis.sh +++ b/gradle/buildViaTravis.sh @@ -12,14 +12,13 @@ export GRADLE_OPTS=-Xmx1024m if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then echo -e "Build Pull Request #$TRAVIS_PULL_REQUEST => Branch [$TRAVIS_BRANCH]" - ./gradlew -Prelease.useLastTag=true build + ./gradlew -PreleaseMode=pr build elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_TAG" == "" ]; then echo -e 'Build Branch with Snapshot => Branch ['$TRAVIS_BRANCH']' - ./gradlew -Prelease.travisci=true -PbintrayUser="${bintrayUser}" -PbintrayKey="${bintrayKey}" -PsonatypeUsername="${sonatypeUsername}" -PsonatypePassword="${sonatypePassword}" build snapshot --stacktrace + ./gradlew -PreleaseMode=branch -PbintrayUser="${bintrayUser}" -PbintrayKey="${bintrayKey}" -PsonatypeUsername="${sonatypeUsername}" -PsonatypePassword="${sonatypePassword}" build --stacktrace elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_TAG" != "" ]; then echo -e 'Build Branch for Release => Branch ['$TRAVIS_BRANCH'] Tag ['$TRAVIS_TAG']' - ./gradlew -Prelease.travisci=true -Prelease.useLastTag=true -PbintrayUser="${bintrayUser}" -PbintrayKey="${bintrayKey}" -PsonatypeUsername="${sonatypeUsername}" -PsonatypePassword="${sonatypePassword}" final --stacktrace + ./gradlew -PreleaseMode=full -PbintrayUser="${bintrayUser}" -PbintrayKey="${bintrayKey}" -PsonatypeUsername="${sonatypeUsername}" -PsonatypePassword="${sonatypePassword}" build --stacktrace else echo -e 'WARN: Should not be here => Branch ['$TRAVIS_BRANCH'] Tag ['$TRAVIS_TAG'] Pull Request ['$TRAVIS_PULL_REQUEST']' - ./gradlew -Prelease.useLastTag=true build fi diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d3b83982b9..736fb7d3f9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d19bad0fda..74bb77845e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Jun 28 11:19:41 CEST 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-bin.zip diff --git a/gradlew b/gradlew index 27309d9231..cccdd3d517 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 832fdb6079..f9553162f1 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -49,7 +49,6 @@ goto fail @rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line diff --git a/src/perf/java/io/reactivex/BlockingGetPerf.java b/src/jmh/java/io/reactivex/BlockingGetPerf.java similarity index 100% rename from src/perf/java/io/reactivex/BlockingGetPerf.java rename to src/jmh/java/io/reactivex/BlockingGetPerf.java diff --git a/src/perf/java/io/reactivex/BlockingPerf.java b/src/jmh/java/io/reactivex/BlockingPerf.java similarity index 100% rename from src/perf/java/io/reactivex/BlockingPerf.java rename to src/jmh/java/io/reactivex/BlockingPerf.java diff --git a/src/perf/java/io/reactivex/CallableAsyncPerf.java b/src/jmh/java/io/reactivex/CallableAsyncPerf.java similarity index 100% rename from src/perf/java/io/reactivex/CallableAsyncPerf.java rename to src/jmh/java/io/reactivex/CallableAsyncPerf.java diff --git a/src/perf/java/io/reactivex/EachTypeFlatMapPerf.java b/src/jmh/java/io/reactivex/EachTypeFlatMapPerf.java similarity index 100% rename from src/perf/java/io/reactivex/EachTypeFlatMapPerf.java rename to src/jmh/java/io/reactivex/EachTypeFlatMapPerf.java diff --git a/src/perf/java/io/reactivex/FlatMapJustPerf.java b/src/jmh/java/io/reactivex/FlatMapJustPerf.java similarity index 100% rename from src/perf/java/io/reactivex/FlatMapJustPerf.java rename to src/jmh/java/io/reactivex/FlatMapJustPerf.java diff --git a/src/perf/java/io/reactivex/FlattenCrossMapPerf.java b/src/jmh/java/io/reactivex/FlattenCrossMapPerf.java similarity index 100% rename from src/perf/java/io/reactivex/FlattenCrossMapPerf.java rename to src/jmh/java/io/reactivex/FlattenCrossMapPerf.java diff --git a/src/perf/java/io/reactivex/FlattenJustPerf.java b/src/jmh/java/io/reactivex/FlattenJustPerf.java similarity index 100% rename from src/perf/java/io/reactivex/FlattenJustPerf.java rename to src/jmh/java/io/reactivex/FlattenJustPerf.java diff --git a/src/perf/java/io/reactivex/InputWithIncrementingInteger.java b/src/jmh/java/io/reactivex/InputWithIncrementingInteger.java similarity index 100% rename from src/perf/java/io/reactivex/InputWithIncrementingInteger.java rename to src/jmh/java/io/reactivex/InputWithIncrementingInteger.java diff --git a/src/perf/java/io/reactivex/JustAsyncPerf.java b/src/jmh/java/io/reactivex/JustAsyncPerf.java similarity index 100% rename from src/perf/java/io/reactivex/JustAsyncPerf.java rename to src/jmh/java/io/reactivex/JustAsyncPerf.java diff --git a/src/perf/java/io/reactivex/LatchedSingleObserver.java b/src/jmh/java/io/reactivex/LatchedSingleObserver.java similarity index 100% rename from src/perf/java/io/reactivex/LatchedSingleObserver.java rename to src/jmh/java/io/reactivex/LatchedSingleObserver.java diff --git a/src/perf/java/io/reactivex/ObservableFlatMapPerf.java b/src/jmh/java/io/reactivex/ObservableFlatMapPerf.java similarity index 100% rename from src/perf/java/io/reactivex/ObservableFlatMapPerf.java rename to src/jmh/java/io/reactivex/ObservableFlatMapPerf.java diff --git a/src/perf/java/io/reactivex/OperatorFlatMapPerf.java b/src/jmh/java/io/reactivex/OperatorFlatMapPerf.java similarity index 100% rename from src/perf/java/io/reactivex/OperatorFlatMapPerf.java rename to src/jmh/java/io/reactivex/OperatorFlatMapPerf.java diff --git a/src/perf/java/io/reactivex/OperatorMergePerf.java b/src/jmh/java/io/reactivex/OperatorMergePerf.java similarity index 100% rename from src/perf/java/io/reactivex/OperatorMergePerf.java rename to src/jmh/java/io/reactivex/OperatorMergePerf.java diff --git a/src/perf/java/io/reactivex/PerfAsyncConsumer.java b/src/jmh/java/io/reactivex/PerfAsyncConsumer.java similarity index 100% rename from src/perf/java/io/reactivex/PerfAsyncConsumer.java rename to src/jmh/java/io/reactivex/PerfAsyncConsumer.java diff --git a/src/perf/java/io/reactivex/PerfConsumer.java b/src/jmh/java/io/reactivex/PerfConsumer.java similarity index 100% rename from src/perf/java/io/reactivex/PerfConsumer.java rename to src/jmh/java/io/reactivex/PerfConsumer.java diff --git a/src/perf/java/io/reactivex/PerfInteropConsumer.java b/src/jmh/java/io/reactivex/PerfInteropConsumer.java similarity index 100% rename from src/perf/java/io/reactivex/PerfInteropConsumer.java rename to src/jmh/java/io/reactivex/PerfInteropConsumer.java diff --git a/src/perf/java/io/reactivex/PerfObserver.java b/src/jmh/java/io/reactivex/PerfObserver.java similarity index 100% rename from src/perf/java/io/reactivex/PerfObserver.java rename to src/jmh/java/io/reactivex/PerfObserver.java diff --git a/src/perf/java/io/reactivex/PerfSubscriber.java b/src/jmh/java/io/reactivex/PerfSubscriber.java similarity index 100% rename from src/perf/java/io/reactivex/PerfSubscriber.java rename to src/jmh/java/io/reactivex/PerfSubscriber.java diff --git a/src/perf/java/io/reactivex/RangePerf.java b/src/jmh/java/io/reactivex/RangePerf.java similarity index 100% rename from src/perf/java/io/reactivex/RangePerf.java rename to src/jmh/java/io/reactivex/RangePerf.java diff --git a/src/perf/java/io/reactivex/ReducePerf.java b/src/jmh/java/io/reactivex/ReducePerf.java similarity index 100% rename from src/perf/java/io/reactivex/ReducePerf.java rename to src/jmh/java/io/reactivex/ReducePerf.java diff --git a/src/perf/java/io/reactivex/RxVsStreamPerf.java b/src/jmh/java/io/reactivex/RxVsStreamPerf.java similarity index 100% rename from src/perf/java/io/reactivex/RxVsStreamPerf.java rename to src/jmh/java/io/reactivex/RxVsStreamPerf.java diff --git a/src/perf/java/io/reactivex/StrictPerf.java b/src/jmh/java/io/reactivex/StrictPerf.java similarity index 100% rename from src/perf/java/io/reactivex/StrictPerf.java rename to src/jmh/java/io/reactivex/StrictPerf.java diff --git a/src/perf/java/io/reactivex/ToFlowablePerf.java b/src/jmh/java/io/reactivex/ToFlowablePerf.java similarity index 100% rename from src/perf/java/io/reactivex/ToFlowablePerf.java rename to src/jmh/java/io/reactivex/ToFlowablePerf.java diff --git a/src/perf/java/io/reactivex/XMapYPerf.java b/src/jmh/java/io/reactivex/XMapYPerf.java similarity index 100% rename from src/perf/java/io/reactivex/XMapYPerf.java rename to src/jmh/java/io/reactivex/XMapYPerf.java diff --git a/src/perf/java/io/reactivex/parallel/ParallelPerf.java b/src/jmh/java/io/reactivex/parallel/ParallelPerf.java similarity index 100% rename from src/perf/java/io/reactivex/parallel/ParallelPerf.java rename to src/jmh/java/io/reactivex/parallel/ParallelPerf.java