diff --git a/.github/workflows/commit_performance_result.yml b/.github/workflows/commit_performance_result.yml index edfda26014..1f645574a2 100644 --- a/.github/workflows/commit_performance_result.yml +++ b/.github/workflows/commit_performance_result.yml @@ -21,7 +21,7 @@ jobs: with: role-to-assume: arn:aws:iam::637423498965:role/GitHubActionGrahQLJava aws-region: "ap-southeast-2" - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: ref: ${{ github.event.inputs.branch }} - run: | diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index a55be6d94e..a466243107 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -13,7 +13,7 @@ jobs: matrix: gradle-argument: [ 'assemble && ./gradlew check -x test','testWithJava11', 'testWithJava17', 'test -x testWithJava11 -x testWithJava17' ] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: gradle/actions/wrapper-validation@v5 - name: Set up JDK 21 uses: actions/setup-java@v5 @@ -41,7 +41,7 @@ jobs: MAVEN_CENTRAL_PGP_KEY: ${{ secrets.MAVEN_CENTRAL_PGP_KEY }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: gradle/actions/wrapper-validation@v5 - name: Set up JDK 21 uses: actions/setup-java@v5 diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index de26c9f353..9e4a427b36 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -22,7 +22,7 @@ jobs: matrix: gradle-argument: [ 'assemble && ./gradlew check -x test','testWithJava11', 'testWithJava17', 'test -x testWithJava11 -x testWithJava17' ] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: gradle/actions/wrapper-validation@v5 - name: Set up JDK 21 uses: actions/setup-java@v5 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d368345e24..8eb18b440b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: RELEASE_VERSION: ${{ github.event.inputs.version }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: gradle/actions/wrapper-validation@v5 - name: Set up JDK 21 uses: actions/setup-java@v5 diff --git a/build.gradle b/build.gradle index 0977eeeb1a..a9276fe452 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ +import aQute.bnd.gradle.BundleTaskExtension import net.ltgt.gradle.errorprone.CheckSeverity -import org.gradle.api.file.DuplicatesStrategy import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinVersion @@ -12,7 +12,7 @@ plugins { id 'antlr' id 'signing' id "com.gradleup.shadow" version "9.0.0" - id "biz.aQute.bnd.builder" version "6.4.0" + id "biz.aQute.bnd.builder" version "7.1.0" id "io.github.gradle-nexus.publish-plugin" version "2.0.0" id "groovy" id "me.champeau.jmh" version "0.7.3" @@ -127,9 +127,10 @@ dependencies { implementation 'org.antlr:antlr4-runtime:' + antlrVersion implementation 'com.google.guava:guava:' + guavaVersion - testImplementation group: 'junit', name: 'junit', version: '4.13.2' + testImplementation 'org.junit.jupiter:junit-jupiter:5.14.1' + testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' - testImplementation 'net.bytebuddy:byte-buddy:1.17.8' + testImplementation 'net.bytebuddy:byte-buddy:1.18.1' testImplementation 'org.objenesis:objenesis:3.4' testImplementation 'org.apache.groovy:groovy:4.0.28"' testImplementation 'org.apache.groovy:groovy-json:4.0.28' @@ -141,11 +142,14 @@ dependencies { testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion testImplementation "io.reactivex.rxjava2:rxjava:2.2.21" - testImplementation "io.projectreactor:reactor-core:3.7.12" + testImplementation "io.projectreactor:reactor-core:3.8.0" testImplementation 'org.testng:testng:7.11.0' // use for reactive streams test inheritance testImplementation "com.tngtech.archunit:archunit-junit5:1.4.1" testImplementation 'org.openjdk.jmh:jmh-core:1.37' // required for ArchUnit to check JMH tests + + // JUnit Platform launcher required for Gradle 9 + testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.14.1' antlr 'org.antlr:antlr4:' + antlrVersion @@ -157,7 +161,7 @@ dependencies { // jmhAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.37' errorprone 'com.uber.nullaway:nullaway:0.12.10' - errorprone 'com.google.errorprone:error_prone_core:2.43.0' + errorprone 'com.google.errorprone:error_prone_core:2.44.0' // just tests - no Kotlin otherwise testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8' @@ -186,27 +190,28 @@ shadowJar { manifest { attributes('Automatic-Module-Name': 'com.graphqljava') } - //Apply biz.aQute.bnd.builder plugin logic to shadowJar as in BndBuilderPlugin - convention.plugins.bundle = new aQute.bnd.gradle.BundleTaskConvention(it) - doLast { - //Call bnd after the ShadowJar was built to update the MANIFEST.MF - buildBundle() - } +} - //Configure bnd for shadowJar - // -exportcontents: graphql.* Adds all packages of graphql and below to the exported packages list - // -removeheaders: Private-Package Removes the MANIFEST.MF header Private-Package, which contains all the internal packages and - // also the repackaged packages like guava, which would be wrong after repackaging. - // Import-Package: Changes the imported packages header, to exclude guava and dependencies from the import list (! excludes packages) - // Guava was repackaged and included inside the jar, so we need to remove it. - // ANTLR was shaded, so we need to remove it. - // sun.misc is a JRE internal-only class that is not directly used by graphql-java. It was causing problems in libraries using graphql-java. - // The last ,* copies all the existing imports from the other dependencies, which is required. - bnd(''' +// Apply bnd to shadowJar task manually for Gradle 9 compatibility +tasks.named('shadowJar').configure { + // Get the BundleTaskExtension added by bnd plugin + def bundle = extensions.findByType(BundleTaskExtension) + if (bundle != null) { + //Configure bnd for shadowJar + // -exportcontents: graphql.* Adds all packages of graphql and below to the exported packages list + // -removeheaders: Private-Package Removes the MANIFEST.MF header Private-Package, which contains all the internal packages and + // also the repackaged packages like guava, which would be wrong after repackaging. + // Import-Package: Changes the imported packages header, to exclude guava and dependencies from the import list (! excludes packages) + // Guava was repackaged and included inside the jar, so we need to remove it. + // ANTLR was shaded, so we need to remove it. + // sun.misc is a JRE internal-only class that is not directly used by graphql-java. It was causing problems in libraries using graphql-java. + // The last ,* copies all the existing imports from the other dependencies, which is required. + bundle.bnd(''' -exportcontents: graphql.* -removeheaders: Private-Package Import-Package: !android.os.*,!com.google.*,!org.checkerframework.*,!graphql.com.google.*,!org.antlr.*,!graphql.org.antlr.*,!sun.misc.*,org.jspecify.annotations;resolution:=optional,* ''') + } } tasks.named('jmhJar') { @@ -235,9 +240,10 @@ task buildNewJar(type: Jar) { manifest { from file("build/extract/META-INF/MANIFEST.MF") } + def projectVersion = version doLast { - delete("build/libs/graphql-java-${project.version}.jar") - file("build/libs/graphql-java-tmp.jar").renameTo(file("build/libs/graphql-java-${project.version}.jar")) + delete("build/libs/graphql-java-${projectVersion}.jar") + file("build/libs/graphql-java-tmp.jar").renameTo(file("build/libs/graphql-java-${projectVersion}.jar")) } } @@ -254,6 +260,8 @@ check.dependsOn testng compileJava { options.compilerArgs += ["-parameters"] source file("build/generated-src"), sourceSets.main.java + // Gradle 9 requires explicit task dependencies + mustRunAfter generateTestGrammarSource, generateJmhGrammarSource } tasks.withType(GroovyCompile) { @@ -313,10 +321,7 @@ javadoc { options.encoding = 'UTF-8' } -artifacts { - archives sourcesJar - archives javadocJar -} +// Removed deprecated archives configuration in favor of direct assemble dependencies List failedTests = [] Map testsAndTime = [:] @@ -356,12 +361,30 @@ tasks.register('testWithJava17', Test) { javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(17) } + testClassesDirs = sourceSets.test.output.classesDirs + classpath = sourceSets.test.runtimeClasspath + classpath += sourceSets.jmh.output + dependsOn "jmhClasses" + + + dependsOn tasks.named('testClasses') + } + tasks.register('testWithJava11', Test) { javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(11) } + testClassesDirs = sourceSets.test.output.classesDirs + classpath = sourceSets.test.runtimeClasspath + + dependsOn tasks.named('testClasses') + + classpath += sourceSets.jmh.output + dependsOn "jmhClasses" + } + test.dependsOn testWithJava17 test.dependsOn testWithJava11 @@ -423,7 +446,7 @@ publishing { publications { graphqlJava(MavenPublication) { - version version + version = version from components.java artifact sourcesJar { @@ -488,7 +511,7 @@ nexusPublishing { } signing { - required { !project.hasProperty('publishToMavenLocal') } + setRequired { !project.hasProperty('publishToMavenLocal') } def signingKey = System.env.MAVEN_CENTRAL_PGP_KEY useInMemoryPgpKeys(signingKey, "") sign publishing.publications diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 9bbc975c74..f8e1ee3125 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 37f853b1c8..bad7c2462f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index faf93008b7..adff685a03 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -114,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -172,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -212,8 +210,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9b42019c79..e509b2dd8f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/performance-results/2025-11-10T02:38:55Z-aed1e8071dff708221d62f697d9cc2ccb8abeec9-jdk17.json b/performance-results/2025-11-10T02:38:55Z-aed1e8071dff708221d62f697d9cc2ccb8abeec9-jdk17.json new file mode 100644 index 0000000000..782d562ce9 --- /dev/null +++ b/performance-results/2025-11-10T02:38:55Z-aed1e8071dff708221d62f697d9cc2ccb8abeec9-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.338044625229986, + "scoreError" : 0.09054041694677148, + "scoreConfidence" : [ + 3.2475042082832144, + 3.4285850421767576 + ], + "scorePercentiles" : { + "0.0" : 3.3189585959882937, + "50.0" : 3.3402727761830593, + "90.0" : 3.3526743525655314, + "95.0" : 3.3526743525655314, + "99.0" : 3.3526743525655314, + "99.9" : 3.3526743525655314, + "99.99" : 3.3526743525655314, + "99.999" : 3.3526743525655314, + "99.9999" : 3.3526743525655314, + "100.0" : 3.3526743525655314 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3408681455663123, + 3.3526743525655314 + ], + [ + 3.3189585959882937, + 3.3396774067998063 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6890051397807382, + "scoreError" : 0.020880868956775756, + "scoreConfidence" : [ + 1.6681242708239625, + 1.7098860087375138 + ], + "scorePercentiles" : { + "0.0" : 1.68528380102628, + "50.0" : 1.688841751533499, + "90.0" : 1.6930532550296746, + "95.0" : 1.6930532550296746, + "99.0" : 1.6930532550296746, + "99.9" : 1.6930532550296746, + "99.99" : 1.6930532550296746, + "99.999" : 1.6930532550296746, + "99.9999" : 1.6930532550296746, + "100.0" : 1.6930532550296746 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.688122155421942, + 1.68528380102628 + ], + [ + 1.6895613476450562, + 1.6930532550296746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.846051952914502, + "scoreError" : 0.026721360269501077, + "scoreConfidence" : [ + 0.8193305926450009, + 0.8727733131840031 + ], + "scorePercentiles" : { + "0.0" : 0.8427957494904019, + "50.0" : 0.8446666033592609, + "90.0" : 0.8520788554490841, + "95.0" : 0.8520788554490841, + "99.0" : 0.8520788554490841, + "99.9" : 0.8520788554490841, + "99.99" : 0.8520788554490841, + "99.999" : 0.8520788554490841, + "99.9999" : 0.8520788554490841, + "100.0" : 0.8520788554490841 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8441499579335127, + 0.8451832487850092 + ], + [ + 0.8427957494904019, + 0.8520788554490841 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.252088060357288, + "scoreError" : 0.4771648154313855, + "scoreConfidence" : [ + 15.774923244925903, + 16.729252875788674 + ], + "scorePercentiles" : { + "0.0" : 16.029608992066514, + "50.0" : 16.296599252695735, + "90.0" : 16.420465351550128, + "95.0" : 16.420465351550128, + "99.0" : 16.420465351550128, + "99.9" : 16.420465351550128, + "99.99" : 16.420465351550128, + "99.999" : 16.420465351550128, + "99.9999" : 16.420465351550128, + "100.0" : 16.420465351550128 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.208576632847137, + 16.081561151829305, + 16.029608992066514 + ], + [ + 16.38462187254433, + 16.420465351550128, + 16.387694361306316 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2698.663645759781, + "scoreError" : 288.62368282476183, + "scoreConfidence" : [ + 2410.039962935019, + 2987.287328584543 + ], + "scorePercentiles" : { + "0.0" : 2578.736405499461, + "50.0" : 2706.2046102896543, + "90.0" : 2811.9951768453902, + "95.0" : 2811.9951768453902, + "99.0" : 2811.9951768453902, + "99.9" : 2811.9951768453902, + "99.99" : 2811.9951768453902, + "99.999" : 2811.9951768453902, + "99.9999" : 2811.9951768453902, + "100.0" : 2811.9951768453902 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2778.2800974206293, + 2781.6063194935978, + 2811.9951768453902 + ], + [ + 2634.1291231586792, + 2578.736405499461, + 2607.2347521409283 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73698.75873160781, + "scoreError" : 992.867119322088, + "scoreConfidence" : [ + 72705.89161228572, + 74691.62585092991 + ], + "scorePercentiles" : { + "0.0" : 73258.00645744364, + "50.0" : 73757.72794435843, + "90.0" : 74111.34667025204, + "95.0" : 74111.34667025204, + "99.0" : 74111.34667025204, + "99.9" : 74111.34667025204, + "99.99" : 74111.34667025204, + "99.999" : 74111.34667025204, + "99.9999" : 74111.34667025204, + "100.0" : 74111.34667025204 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73959.93202597754, + 74111.34667025204, + 73936.60209172322 + ], + [ + 73347.81134725684, + 73258.00645744364, + 73578.85379699363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.09273416120294, + "scoreError" : 13.107932920180547, + "scoreConfidence" : [ + 343.9848012410224, + 370.2006670813835 + ], + "scorePercentiles" : { + "0.0" : 350.5880334137143, + "50.0" : 356.85041446282776, + "90.0" : 362.5048329112332, + "95.0" : 362.5048329112332, + "99.0" : 362.5048329112332, + "99.9" : 362.5048329112332, + "99.99" : 362.5048329112332, + "99.999" : 362.5048329112332, + "99.9999" : 362.5048329112332, + "100.0" : 362.5048329112332 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 362.5048329112332, + 358.11616529219805, + 361.94849802246273 + ], + [ + 353.8142116941517, + 355.58466363345747, + 350.5880334137143 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.42890177800757, + "scoreError" : 3.936705964118912, + "scoreConfidence" : [ + 110.49219581388866, + 118.36560774212649 + ], + "scorePercentiles" : { + "0.0" : 112.77024860342567, + "50.0" : 114.32655619066726, + "90.0" : 116.24946385869715, + "95.0" : 116.24946385869715, + "99.0" : 116.24946385869715, + "99.9" : 116.24946385869715, + "99.99" : 116.24946385869715, + "99.999" : 116.24946385869715, + "99.9999" : 116.24946385869715, + "100.0" : 116.24946385869715 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 112.77024860342567, + 113.49250606090219, + 113.36045433020341 + ], + [ + 115.16060632043234, + 115.54013149438461, + 116.24946385869715 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06157939679865463, + "scoreError" : 9.618583003999885E-4, + "scoreConfidence" : [ + 0.060617538498254644, + 0.06254125509905462 + ], + "scorePercentiles" : { + "0.0" : 0.061229960868473744, + "50.0" : 0.06147676479370781, + "90.0" : 0.062097512732940466, + "95.0" : 0.062097512732940466, + "99.0" : 0.062097512732940466, + "99.9" : 0.062097512732940466, + "99.99" : 0.062097512732940466, + "99.999" : 0.062097512732940466, + "99.9999" : 0.062097512732940466, + "100.0" : 0.062097512732940466 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06140025590048383, + 0.061884289181529016, + 0.062097512732940466 + ], + [ + 0.061311088421568925, + 0.061229960868473744, + 0.061553273686931795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.724632635424617E-4, + "scoreError" : 2.6344581985985653E-5, + "scoreConfidence" : [ + 3.4611868155647605E-4, + 3.988078455284473E-4 + ], + "scorePercentiles" : { + "0.0" : 3.625593599814025E-4, + "50.0" : 3.728100420698519E-4, + "90.0" : 3.821870424103129E-4, + "95.0" : 3.821870424103129E-4, + "99.0" : 3.821870424103129E-4, + "99.9" : 3.821870424103129E-4, + "99.99" : 3.821870424103129E-4, + "99.999" : 3.821870424103129E-4, + "99.9999" : 3.821870424103129E-4, + "100.0" : 3.821870424103129E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.821870424103129E-4, + 3.8139131156599243E-4, + 3.791177213093357E-4 + ], + [ + 3.625593599814025E-4, + 3.6650236283036807E-4, + 3.630217831573588E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.269559016282703, + "scoreError" : 0.038937029374821984, + "scoreConfidence" : [ + 2.230621986907881, + 2.3084960456575248 + ], + "scorePercentiles" : { + "0.0" : 2.2346375109472745, + "50.0" : 2.26701463722846, + "90.0" : 2.3134616884494674, + "95.0" : 2.3147344126359637, + "99.0" : 2.3147344126359637, + "99.9" : 2.3147344126359637, + "99.99" : 2.3147344126359637, + "99.999" : 2.3147344126359637, + "99.9999" : 2.3147344126359637, + "100.0" : 2.3147344126359637 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.2730313879545454, + 2.3147344126359637, + 2.281271373859489, + 2.248245282598921, + 2.2346375109472745 + ], + [ + 2.302007170771001, + 2.257334576844956, + 2.280447496124031, + 2.260997886502374, + 2.2428830645884728 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013697955450872107, + "scoreError" : 1.6732340910096316E-4, + "scoreConfidence" : [ + 0.013530632041771143, + 0.01386527885997307 + ], + "scorePercentiles" : { + "0.0" : 0.013631215790191107, + "50.0" : 0.01369503703284702, + "90.0" : 0.013766701071858282, + "95.0" : 0.013766701071858282, + "99.0" : 0.013766701071858282, + "99.9" : 0.013766701071858282, + "99.99" : 0.013766701071858282, + "99.999" : 0.013766701071858282, + "99.9999" : 0.013766701071858282, + "100.0" : 0.013766701071858282 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013631215790191107, + 0.01364387506873014, + 0.013660930930048932 + ], + [ + 0.013755866708759073, + 0.013766701071858282, + 0.01372914313564511 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0378782012816015, + "scoreError" : 0.08766788535217386, + "scoreConfidence" : [ + 0.9502103159294276, + 1.1255460866337754 + ], + "scorePercentiles" : { + "0.0" : 1.007746763401854, + "50.0" : 1.0387699109643656, + "90.0" : 1.068172570925016, + "95.0" : 1.068172570925016, + "99.0" : 1.068172570925016, + "99.9" : 1.068172570925016, + "99.99" : 1.068172570925016, + "99.999" : 1.068172570925016, + "99.9999" : 1.068172570925016, + "100.0" : 1.068172570925016 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0122736328575768, + 1.0081500267137096, + 1.007746763401854 + ], + [ + 1.0652661890711546, + 1.0656600247202983, + 1.068172570925016 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010652945232675425, + "scoreError" : 3.803584764238686E-4, + "scoreConfidence" : [ + 0.010272586756251556, + 0.011033303709099293 + ], + "scorePercentiles" : { + "0.0" : 0.010503102322806693, + "50.0" : 0.010668442017940065, + "90.0" : 0.010807558290284233, + "95.0" : 0.010807558290284233, + "99.0" : 0.010807558290284233, + "99.9" : 0.010807558290284233, + "99.99" : 0.010807558290284233, + "99.999" : 0.010807558290284233, + "99.9999" : 0.010807558290284233, + "100.0" : 0.010807558290284233 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010513685606928759, + 0.010581702974843872, + 0.010503102322806693 + ], + [ + 0.010755181061036257, + 0.010756441140152737, + 0.010807558290284233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 2.9375419162556966, + "scoreError" : 0.1109063733466398, + "scoreConfidence" : [ + 2.826635542909057, + 3.0484482896023364 + ], + "scorePercentiles" : { + "0.0" : 2.894246222800926, + "50.0" : 2.931331565912193, + "90.0" : 3.002136018007203, + "95.0" : 3.002136018007203, + "99.0" : 3.002136018007203, + "99.9" : 3.002136018007203, + "99.99" : 3.002136018007203, + "99.999" : 3.002136018007203, + "99.9999" : 3.002136018007203, + "100.0" : 3.002136018007203 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.958260201064459, + 3.002136018007203, + 2.945329809187279 + ], + [ + 2.917333322637106, + 2.907945923837209, + 2.894246222800926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7796126456285033, + "scoreError" : 0.23283875805603949, + "scoreConfidence" : [ + 2.546773887572464, + 3.0124514036845427 + ], + "scorePercentiles" : { + "0.0" : 2.670534453137517, + "50.0" : 2.789565300194353, + "90.0" : 2.8773518420598387, + "95.0" : 2.8773518420598387, + "99.0" : 2.8773518420598387, + "99.9" : 2.8773518420598387, + "99.99" : 2.8773518420598387, + "99.999" : 2.8773518420598387, + "99.9999" : 2.8773518420598387, + "100.0" : 2.8773518420598387 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8773518420598387, + 2.8383128785471055, + 2.838707560885609 + ], + [ + 2.670534453137517, + 2.7119514172993493, + 2.7408177218416006 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18599123334867573, + "scoreError" : 0.0011423937507426631, + "scoreConfidence" : [ + 0.18484883959793308, + 0.1871336270994184 + ], + "scorePercentiles" : { + "0.0" : 0.18543118206934917, + "50.0" : 0.18608913251624842, + "90.0" : 0.18654264109834354, + "95.0" : 0.18654264109834354, + "99.0" : 0.18654264109834354, + "99.9" : 0.18654264109834354, + "99.99" : 0.18654264109834354, + "99.999" : 0.18654264109834354, + "99.9999" : 0.18654264109834354, + "100.0" : 0.18654264109834354 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18654264109834354, + 0.1861797835160948, + 0.1859990059518274 + ], + [ + 0.18561552837577017, + 0.18617925908066948, + 0.18543118206934917 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32810876796822175, + "scoreError" : 0.015056919358553808, + "scoreConfidence" : [ + 0.31305184860966795, + 0.34316568732677555 + ], + "scorePercentiles" : { + "0.0" : 0.32172933050220376, + "50.0" : 0.32864011410203586, + "90.0" : 0.33372230854968965, + "95.0" : 0.33372230854968965, + "99.0" : 0.33372230854968965, + "99.9" : 0.33372230854968965, + "99.99" : 0.33372230854968965, + "99.999" : 0.33372230854968965, + "99.9999" : 0.33372230854968965, + "100.0" : 0.33372230854968965 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3319940365181595, + 0.3329019899800266, + 0.33372230854968965 + ], + [ + 0.32172933050220376, + 0.3252861916859122, + 0.32301875057333895 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14600779372912423, + "scoreError" : 0.004776046754015337, + "scoreConfidence" : [ + 0.1412317469751089, + 0.15078384048313956 + ], + "scorePercentiles" : { + "0.0" : 0.14385533641176132, + "50.0" : 0.14608959001721966, + "90.0" : 0.14786604679875795, + "95.0" : 0.14786604679875795, + "99.0" : 0.14786604679875795, + "99.9" : 0.14786604679875795, + "99.99" : 0.14786604679875795, + "99.999" : 0.14786604679875795, + "99.9999" : 0.14786604679875795, + "100.0" : 0.14786604679875795 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14786604679875795, + 0.14740259283934967, + 0.14728562320868374 + ], + [ + 0.1448935568257556, + 0.14474360629043698, + 0.14385533641176132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4079880299513116, + "scoreError" : 0.03205713356793089, + "scoreConfidence" : [ + 0.37593089638338073, + 0.4400451635192425 + ], + "scorePercentiles" : { + "0.0" : 0.3966877857199524, + "50.0" : 0.40782736912460515, + "90.0" : 0.4199952694132964, + "95.0" : 0.4199952694132964, + "99.0" : 0.4199952694132964, + "99.9" : 0.4199952694132964, + "99.99" : 0.4199952694132964, + "99.999" : 0.4199952694132964, + "99.9999" : 0.4199952694132964, + "100.0" : 0.4199952694132964 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4167199247020585, + 0.4199952694132964, + 0.41836139633534136 + ], + [ + 0.39893481354715177, + 0.3972289899900695, + 0.3966877857199524 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15616937704345435, + "scoreError" : 0.0028553900692412384, + "scoreConfidence" : [ + 0.1533139869742131, + 0.1590247671126956 + ], + "scorePercentiles" : { + "0.0" : 0.1551964147371035, + "50.0" : 0.15608924906496224, + "90.0" : 0.15729753432953206, + "95.0" : 0.15729753432953206, + "99.0" : 0.15729753432953206, + "99.9" : 0.15729753432953206, + "99.99" : 0.15729753432953206, + "99.999" : 0.15729753432953206, + "99.9999" : 0.15729753432953206, + "100.0" : 0.15729753432953206 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1553434619961165, + 0.15521284077046052, + 0.1551964147371035 + ], + [ + 0.15729753432953206, + 0.156835036133808, + 0.15713097429370543 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046545122453364195, + "scoreError" : 0.0013062904647217822, + "scoreConfidence" : [ + 0.04523883198864241, + 0.04785141291808598 + ], + "scorePercentiles" : { + "0.0" : 0.045753262881692486, + "50.0" : 0.04659668735039607, + "90.0" : 0.04721084632634466, + "95.0" : 0.04721084632634466, + "99.0" : 0.04721084632634466, + "99.9" : 0.04721084632634466, + "99.99" : 0.04721084632634466, + "99.999" : 0.04721084632634466, + "99.9999" : 0.04721084632634466, + "100.0" : 0.04721084632634466 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04721084632634466, + 0.04662441498393812, + 0.04659428227301954 + ], + [ + 0.0465990924277726, + 0.04648883582741773, + 0.045753262881692486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8622900.335059777, + "scoreError" : 277916.9358002958, + "scoreConfidence" : [ + 8344983.399259482, + 8900817.270860072 + ], + "scorePercentiles" : { + "0.0" : 8503745.420068027, + "50.0" : 8625339.583503839, + "90.0" : 8735112.358951965, + "95.0" : 8735112.358951965, + "99.0" : 8735112.358951965, + "99.9" : 8735112.358951965, + "99.99" : 8735112.358951965, + "99.999" : 8735112.358951965, + "99.9999" : 8735112.358951965, + "100.0" : 8735112.358951965 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8503745.420068027, + 8560569.320786998, + 8540511.912894962 + ], + [ + 8690109.846220678, + 8707353.15143603, + 8735112.358951965 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-16T05:25:16Z-1846e706cdbc72dc6bd34f28103e4920bf007e7a-jdk17.json b/performance-results/2025-11-16T05:25:16Z-1846e706cdbc72dc6bd34f28103e4920bf007e7a-jdk17.json new file mode 100644 index 0000000000..d622bcca10 --- /dev/null +++ b/performance-results/2025-11-16T05:25:16Z-1846e706cdbc72dc6bd34f28103e4920bf007e7a-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.327378099396822, + "scoreError" : 0.03183314961136015, + "scoreConfidence" : [ + 3.295544949785462, + 3.359211249008182 + ], + "scorePercentiles" : { + "0.0" : 3.320861425421507, + "50.0" : 3.3280309675102933, + "90.0" : 3.332589037145195, + "95.0" : 3.332589037145195, + "99.0" : 3.332589037145195, + "99.9" : 3.332589037145195, + "99.99" : 3.332589037145195, + "99.999" : 3.332589037145195, + "99.9999" : 3.332589037145195, + "100.0" : 3.332589037145195 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3269517545246052, + 3.3291101804959813 + ], + [ + 3.320861425421507, + 3.332589037145195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.673722884212292, + "scoreError" : 0.055329545142390364, + "scoreConfidence" : [ + 1.6183933390699017, + 1.7290524293546823 + ], + "scorePercentiles" : { + "0.0" : 1.6626785964307167, + "50.0" : 1.6751245793092413, + "90.0" : 1.6819637817999684, + "95.0" : 1.6819637817999684, + "99.0" : 1.6819637817999684, + "99.9" : 1.6819637817999684, + "99.99" : 1.6819637817999684, + "99.999" : 1.6819637817999684, + "99.9999" : 1.6819637817999684, + "100.0" : 1.6819637817999684 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6626785964307167, + 1.671510634840157 + ], + [ + 1.6819637817999684, + 1.6787385237783259 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8412974822060514, + "scoreError" : 0.023214019611741347, + "scoreConfidence" : [ + 0.8180834625943101, + 0.8645115018177927 + ], + "scorePercentiles" : { + "0.0" : 0.8376630575467057, + "50.0" : 0.8409841132577003, + "90.0" : 0.8455586447620994, + "95.0" : 0.8455586447620994, + "99.0" : 0.8455586447620994, + "99.9" : 0.8455586447620994, + "99.99" : 0.8455586447620994, + "99.999" : 0.8455586447620994, + "99.9999" : 0.8455586447620994, + "100.0" : 0.8455586447620994 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8376630575467057, + 0.8455586447620994 + ], + [ + 0.8390929547022318, + 0.8428752718131687 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.16522528726286, + "scoreError" : 0.40949754560731466, + "scoreConfidence" : [ + 15.755727741655546, + 16.574722832870176 + ], + "scorePercentiles" : { + "0.0" : 15.963690598134303, + "50.0" : 16.157867252381752, + "90.0" : 16.324350639724614, + "95.0" : 16.324350639724614, + "99.0" : 16.324350639724614, + "99.9" : 16.324350639724614, + "99.99" : 16.324350639724614, + "99.999" : 16.324350639724614, + "99.9999" : 16.324350639724614, + "100.0" : 16.324350639724614 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.963690598134303, + 16.07387247272776, + 16.08649352020377 + ], + [ + 16.31370350822696, + 16.324350639724614, + 16.229240984559734 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2655.2596867611664, + "scoreError" : 45.567783081374444, + "scoreConfidence" : [ + 2609.691903679792, + 2700.8274698425407 + ], + "scorePercentiles" : { + "0.0" : 2632.926827718069, + "50.0" : 2652.48199722392, + "90.0" : 2679.7330804823773, + "95.0" : 2679.7330804823773, + "99.0" : 2679.7330804823773, + "99.9" : 2679.7330804823773, + "99.99" : 2679.7330804823773, + "99.999" : 2679.7330804823773, + "99.9999" : 2679.7330804823773, + "100.0" : 2679.7330804823773 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2666.991799009253, + 2632.926827718069, + 2652.896621728474 + ], + [ + 2652.0673727193666, + 2679.7330804823773, + 2646.9424189094584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72716.70428481487, + "scoreError" : 773.51522606465, + "scoreConfidence" : [ + 71943.18905875023, + 73490.21951087951 + ], + "scorePercentiles" : { + "0.0" : 72361.96984601567, + "50.0" : 72743.6495886003, + "90.0" : 73062.02595898345, + "95.0" : 73062.02595898345, + "99.0" : 73062.02595898345, + "99.9" : 73062.02595898345, + "99.99" : 73062.02595898345, + "99.999" : 73062.02595898345, + "99.9999" : 73062.02595898345, + "100.0" : 73062.02595898345 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73062.02595898345, + 72771.50004473145, + 72950.75683425504 + ], + [ + 72438.17389243442, + 72361.96984601567, + 72715.79913246915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.8020048520273, + "scoreError" : 5.589346398060289, + "scoreConfidence" : [ + 349.21265845396704, + 360.3913512500876 + ], + "scorePercentiles" : { + "0.0" : 351.3893597193541, + "50.0" : 355.15810343396356, + "90.0" : 356.68610308140063, + "95.0" : 356.68610308140063, + "99.0" : 356.68610308140063, + "99.9" : 356.68610308140063, + "99.99" : 356.68610308140063, + "99.999" : 356.68610308140063, + "99.9999" : 356.68610308140063, + "100.0" : 356.68610308140063 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.3893597193541, + 356.68610308140063, + 355.56759633412054 + ], + [ + 354.74861053380664, + 353.84153844255513, + 356.57882100092667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.67117331897435, + "scoreError" : 2.141232590269903, + "scoreConfidence" : [ + 111.52994072870445, + 115.81240590924426 + ], + "scorePercentiles" : { + "0.0" : 112.21291599952424, + "50.0" : 113.9334653575641, + "90.0" : 114.30750900497944, + "95.0" : 114.30750900497944, + "99.0" : 114.30750900497944, + "99.9" : 114.30750900497944, + "99.99" : 114.30750900497944, + "99.999" : 114.30750900497944, + "99.9999" : 114.30750900497944, + "100.0" : 114.30750900497944 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 112.21291599952424, + 113.83810797380151, + 114.12305926055407 + ], + [ + 114.02882274132669, + 113.51662493366017, + 114.30750900497944 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.062188169191476565, + "scoreError" : 0.0023936540451980092, + "scoreConfidence" : [ + 0.05979451514627856, + 0.06458182323667458 + ], + "scorePercentiles" : { + "0.0" : 0.06124934209591474, + "50.0" : 0.06218335943952324, + "90.0" : 0.06310011249929014, + "95.0" : 0.06310011249929014, + "99.0" : 0.06310011249929014, + "99.9" : 0.06310011249929014, + "99.99" : 0.06310011249929014, + "99.999" : 0.06310011249929014, + "99.9999" : 0.06310011249929014, + "100.0" : 0.06310011249929014 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06171534671710782, + 0.06124934209591474, + 0.06134289772420562 + ], + [ + 0.06310011249929014, + 0.06265137216193865, + 0.06306994395040239 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.885695361014419E-4, + "scoreError" : 2.1193939375008083E-5, + "scoreConfidence" : [ + 3.673755967264338E-4, + 4.0976347547645E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7943277669210106E-4, + "50.0" : 3.880578797527108E-4, + "90.0" : 3.9682762402683697E-4, + "95.0" : 3.9682762402683697E-4, + "99.0" : 3.9682762402683697E-4, + "99.9" : 3.9682762402683697E-4, + "99.99" : 3.9682762402683697E-4, + "99.999" : 3.9682762402683697E-4, + "99.9999" : 3.9682762402683697E-4, + "100.0" : 3.9682762402683697E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.841483443532056E-4, + 3.824129146613142E-4, + 3.7943277669210106E-4 + ], + [ + 3.9662814172297754E-4, + 3.9196741515221605E-4, + 3.9682762402683697E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.283195489673956, + "scoreError" : 0.08190031629242615, + "scoreConfidence" : [ + 2.20129517338153, + 2.3650958059663822 + ], + "scorePercentiles" : { + "0.0" : 2.2148474663418956, + "50.0" : 2.2721119023953036, + "90.0" : 2.3884783060226558, + "95.0" : 2.394353457026574, + "99.0" : 2.394353457026574, + "99.9" : 2.394353457026574, + "99.99" : 2.394353457026574, + "99.999" : 2.394353457026574, + "99.9999" : 2.394353457026574, + "100.0" : 2.394353457026574 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.335601946987389, + 2.394353457026574, + 2.3170578288163077, + 2.256142710128581, + 2.271859116537937 + ], + [ + 2.2815659466240876, + 2.27236468825267, + 2.271011917801998, + 2.217149818222124, + 2.2148474663418956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013910520126715792, + "scoreError" : 2.4229036072343765E-4, + "scoreConfidence" : [ + 0.013668229765992353, + 0.01415281048743923 + ], + "scorePercentiles" : { + "0.0" : 0.013824107031821317, + "50.0" : 0.013899307881602922, + "90.0" : 0.014015726485819802, + "95.0" : 0.014015726485819802, + "99.0" : 0.014015726485819802, + "99.9" : 0.014015726485819802, + "99.99" : 0.014015726485819802, + "99.999" : 0.014015726485819802, + "99.9999" : 0.014015726485819802, + "100.0" : 0.014015726485819802 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013824107031821317, + 0.013844417641415268, + 0.013833253634986617 + ], + [ + 0.014015726485819802, + 0.013991417844461172, + 0.013954198121790579 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9900315466248917, + "scoreError" : 0.027514047175033664, + "scoreConfidence" : [ + 0.962517499449858, + 1.0175455937999254 + ], + "scorePercentiles" : { + "0.0" : 0.9789323362372748, + "50.0" : 0.9907887843401966, + "90.0" : 1.0000819201, + "95.0" : 1.0000819201, + "99.0" : 1.0000819201, + "99.9" : 1.0000819201, + "99.99" : 1.0000819201, + "99.999" : 1.0000819201, + "99.9999" : 1.0000819201, + "100.0" : 1.0000819201 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0000819201, + 0.9971159973080758, + 0.9991750170846239 + ], + [ + 0.9789323362372748, + 0.9844615713723174, + 0.9804224376470588 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01061439932673366, + "scoreError" : 2.0629379472911498E-4, + "scoreConfidence" : [ + 0.010408105532004544, + 0.010820693121462775 + ], + "scorePercentiles" : { + "0.0" : 0.010498731685910397, + "50.0" : 0.010612826508393892, + "90.0" : 0.010706867523051293, + "95.0" : 0.010706867523051293, + "99.0" : 0.010706867523051293, + "99.9" : 0.010706867523051293, + "99.99" : 0.010706867523051293, + "99.999" : 0.010706867523051293, + "99.9999" : 0.010706867523051293, + "100.0" : 0.010706867523051293 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010669737240466893, + 0.010706867523051293, + 0.010637553573707994 + ], + [ + 0.010498731685910397, + 0.01058809944307979, + 0.01058540649418559 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.11285542775532, + "scoreError" : 0.2942878379339343, + "scoreConfidence" : [ + 2.8185675898213858, + 3.4071432656892546 + ], + "scorePercentiles" : { + "0.0" : 3.0090079386281587, + "50.0" : 3.106764922887427, + "90.0" : 3.230603739018088, + "95.0" : 3.230603739018088, + "99.0" : 3.230603739018088, + "99.9" : 3.230603739018088, + "99.99" : 3.230603739018088, + "99.999" : 3.230603739018088, + "99.9999" : 3.230603739018088, + "100.0" : 3.230603739018088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.183559154678549, + 3.230603739018088, + 3.208299325208467 + ], + [ + 3.0090079386281587, + 3.015691717902351, + 3.029970691096305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7859016069509877, + "scoreError" : 0.11239032496128941, + "scoreConfidence" : [ + 2.6735112819896982, + 2.898291931912277 + ], + "scorePercentiles" : { + "0.0" : 2.7253621708446865, + "50.0" : 2.7929375539885237, + "90.0" : 2.826023061599322, + "95.0" : 2.826023061599322, + "99.0" : 2.826023061599322, + "99.9" : 2.826023061599322, + "99.99" : 2.826023061599322, + "99.999" : 2.826023061599322, + "99.9999" : 2.826023061599322, + "100.0" : 2.826023061599322 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8099440691205393, + 2.8211641935119887, + 2.826023061599322 + ], + [ + 2.7759310388565086, + 2.7569851077728775, + 2.7253621708446865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18206567706696045, + "scoreError" : 0.009759337338625104, + "scoreConfidence" : [ + 0.17230633972833534, + 0.19182501440558555 + ], + "scorePercentiles" : { + "0.0" : 0.17867768248494703, + "50.0" : 0.18196781425481853, + "90.0" : 0.18580717712417086, + "95.0" : 0.18580717712417086, + "99.0" : 0.18580717712417086, + "99.9" : 0.18580717712417086, + "99.99" : 0.18580717712417086, + "99.999" : 0.18580717712417086, + "99.9999" : 0.18580717712417086, + "100.0" : 0.18580717712417086 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18580717712417086, + 0.18460062992634707, + 0.18524171856997315 + ], + [ + 0.17867768248494703, + 0.17873185571303463, + 0.17933499858329 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33441093559191254, + "scoreError" : 0.02075850677141205, + "scoreConfidence" : [ + 0.3136524288205005, + 0.3551694423633246 + ], + "scorePercentiles" : { + "0.0" : 0.32701770281229564, + "50.0" : 0.334749931126727, + "90.0" : 0.3418399474601764, + "95.0" : 0.3418399474601764, + "99.0" : 0.3418399474601764, + "99.9" : 0.3418399474601764, + "99.99" : 0.3418399474601764, + "99.999" : 0.3418399474601764, + "99.9999" : 0.3418399474601764, + "100.0" : 0.3418399474601764 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3418399474601764, + 0.34048287031425556, + 0.34105157693881727 + ], + [ + 0.32901699193919853, + 0.32705652408673186, + 0.32701770281229564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14688081130821792, + "scoreError" : 9.95243265407193E-4, + "scoreConfidence" : [ + 0.14588556804281072, + 0.14787605457362513 + ], + "scorePercentiles" : { + "0.0" : 0.14637150941877314, + "50.0" : 0.1469702237968893, + "90.0" : 0.14730876705064372, + "95.0" : 0.14730876705064372, + "99.0" : 0.14730876705064372, + "99.9" : 0.14730876705064372, + "99.99" : 0.14730876705064372, + "99.999" : 0.14730876705064372, + "99.9999" : 0.14730876705064372, + "100.0" : 0.14730876705064372 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14696345241454312, + 0.14712056010474747, + 0.14637150941877314 + ], + [ + 0.14697699517923543, + 0.14654358368136458, + 0.14730876705064372 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4071153460605485, + "scoreError" : 0.010540961127230457, + "scoreConfidence" : [ + 0.39657438493331804, + 0.41765630718777896 + ], + "scorePercentiles" : { + "0.0" : 0.40016624413765506, + "50.0" : 0.4076376666386089, + "90.0" : 0.41121837855174964, + "95.0" : 0.41121837855174964, + "99.0" : 0.41121837855174964, + "99.9" : 0.41121837855174964, + "99.99" : 0.41121837855174964, + "99.999" : 0.41121837855174964, + "99.9999" : 0.41121837855174964, + "100.0" : 0.41121837855174964 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41121837855174964, + 0.40824708613651206, + 0.4091594825498138 + ], + [ + 0.4068726378468549, + 0.4070282471407058, + 0.40016624413765506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16088992989651651, + "scoreError" : 0.0025937778570492473, + "scoreConfidence" : [ + 0.15829615203946726, + 0.16348370775356577 + ], + "scorePercentiles" : { + "0.0" : 0.15933190744546946, + "50.0" : 0.16100376340478484, + "90.0" : 0.16192922300667142, + "95.0" : 0.16192922300667142, + "99.0" : 0.16192922300667142, + "99.9" : 0.16192922300667142, + "99.99" : 0.16192922300667142, + "99.999" : 0.16192922300667142, + "99.9999" : 0.16192922300667142, + "100.0" : 0.16192922300667142 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16044997558001475, + 0.15933190744546946, + 0.1609132463192109 + ], + [ + 0.16162094653737374, + 0.16192922300667142, + 0.16109428049035876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04744451404896547, + "scoreError" : 6.62743760118256E-4, + "scoreConfidence" : [ + 0.04678177028884722, + 0.048107257809083724 + ], + "scorePercentiles" : { + "0.0" : 0.047186734389671914, + "50.0" : 0.047450652044874725, + "90.0" : 0.04767438158007647, + "95.0" : 0.04767438158007647, + "99.0" : 0.04767438158007647, + "99.9" : 0.04767438158007647, + "99.99" : 0.04767438158007647, + "99.999" : 0.04767438158007647, + "99.9999" : 0.04767438158007647, + "100.0" : 0.04767438158007647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047270189243357456, + 0.047186734389671914, + 0.04723477268175635 + ], + [ + 0.04767438158007647, + 0.047631114846392, + 0.047669891552538625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8897667.018465847, + "scoreError" : 441879.25162602786, + "scoreConfidence" : [ + 8455787.766839819, + 9339546.270091875 + ], + "scorePercentiles" : { + "0.0" : 8742629.097027972, + "50.0" : 8900571.31654723, + "90.0" : 9062588.54076087, + "95.0" : 9062588.54076087, + "99.0" : 9062588.54076087, + "99.9" : 9062588.54076087, + "99.99" : 9062588.54076087, + "99.999" : 9062588.54076087, + "99.9999" : 9062588.54076087, + "100.0" : 9062588.54076087 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8777410.319298245, + 8744147.249125874, + 8742629.097027972 + ], + [ + 9023732.313796213, + 9062588.54076087, + 9035494.590785908 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-20T02:37:33Z-09b4ae614a7ea82407e31f305bbe9dac2bdba994-jdk17.json b/performance-results/2025-11-20T02:37:33Z-09b4ae614a7ea82407e31f305bbe9dac2bdba994-jdk17.json new file mode 100644 index 0000000000..57e04b04e2 --- /dev/null +++ b/performance-results/2025-11-20T02:37:33Z-09b4ae614a7ea82407e31f305bbe9dac2bdba994-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3326121799410506, + "scoreError" : 0.0533259641710732, + "scoreConfidence" : [ + 3.2792862157699774, + 3.385938144112124 + ], + "scorePercentiles" : { + "0.0" : 3.3234316308114926, + "50.0" : 3.3318518843464564, + "90.0" : 3.3433133202597984, + "95.0" : 3.3433133202597984, + "99.0" : 3.3433133202597984, + "99.9" : 3.3433133202597984, + "99.99" : 3.3433133202597984, + "99.999" : 3.3433133202597984, + "99.9999" : 3.3433133202597984, + "100.0" : 3.3433133202597984 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3234316308114926, + 3.333325994787398 + ], + [ + 3.3303777739055147, + 3.3433133202597984 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6774785117316764, + "scoreError" : 0.05056351626412096, + "scoreConfidence" : [ + 1.6269149954675555, + 1.7280420279957973 + ], + "scorePercentiles" : { + "0.0" : 1.6702908421203708, + "50.0" : 1.6773979495401985, + "90.0" : 1.6848273057259373, + "95.0" : 1.6848273057259373, + "99.0" : 1.6848273057259373, + "99.9" : 1.6848273057259373, + "99.99" : 1.6848273057259373, + "99.999" : 1.6848273057259373, + "99.9999" : 1.6848273057259373, + "100.0" : 1.6848273057259373 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6702908421203708, + 1.6711529409613788 + ], + [ + 1.6836429581190182, + 1.6848273057259373 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8488397672830397, + "scoreError" : 0.02242793414311625, + "scoreConfidence" : [ + 0.8264118331399234, + 0.871267701426156 + ], + "scorePercentiles" : { + "0.0" : 0.8442988686156693, + "50.0" : 0.849155810320029, + "90.0" : 0.8527485798764316, + "95.0" : 0.8527485798764316, + "99.0" : 0.8527485798764316, + "99.9" : 0.8527485798764316, + "99.99" : 0.8527485798764316, + "99.999" : 0.8527485798764316, + "99.9999" : 0.8527485798764316, + "100.0" : 0.8527485798764316 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.849014522609059, + 0.8527485798764316 + ], + [ + 0.8442988686156693, + 0.8492970980309988 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.899122127589441, + "scoreError" : 0.27253274998355265, + "scoreConfidence" : [ + 15.626589377605889, + 16.171654877572994 + ], + "scorePercentiles" : { + "0.0" : 15.801665169873743, + "50.0" : 15.902694269895637, + "90.0" : 15.992728398692151, + "95.0" : 15.992728398692151, + "99.0" : 15.992728398692151, + "99.9" : 15.992728398692151, + "99.99" : 15.992728398692151, + "99.999" : 15.992728398692151, + "99.9999" : 15.992728398692151, + "100.0" : 15.992728398692151 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.80828302499217, + 15.801665169873743, + 15.821991496481004 + ], + [ + 15.983397043310271, + 15.986667632187299, + 15.992728398692151 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2796.687529758879, + "scoreError" : 37.706857594543095, + "scoreConfidence" : [ + 2758.980672164336, + 2834.394387353422 + ], + "scorePercentiles" : { + "0.0" : 2773.7580170020374, + "50.0" : 2800.250995170519, + "90.0" : 2808.1397930766097, + "95.0" : 2808.1397930766097, + "99.0" : 2808.1397930766097, + "99.9" : 2808.1397930766097, + "99.99" : 2808.1397930766097, + "99.999" : 2808.1397930766097, + "99.9999" : 2808.1397930766097, + "100.0" : 2808.1397930766097 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2808.1397930766097, + 2805.69201451705, + 2807.6112212161775 + ], + [ + 2794.809975823988, + 2790.114156917409, + 2773.7580170020374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73420.24655182673, + "scoreError" : 3271.465487640519, + "scoreConfidence" : [ + 70148.7810641862, + 76691.71203946725 + ], + "scorePercentiles" : { + "0.0" : 72340.86073027016, + "50.0" : 73426.31897810308, + "90.0" : 74498.83382483949, + "95.0" : 74498.83382483949, + "99.0" : 74498.83382483949, + "99.9" : 74498.83382483949, + "99.99" : 74498.83382483949, + "99.999" : 74498.83382483949, + "99.9999" : 74498.83382483949, + "100.0" : 74498.83382483949 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 72349.98456796659, + 72340.86073027016, + 72375.14394606101 + ], + [ + 74498.83382483949, + 74479.16223167797, + 74477.49401014515 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 348.28449094473893, + "scoreError" : 2.944282103546426, + "scoreConfidence" : [ + 345.3402088411925, + 351.22877304828535 + ], + "scorePercentiles" : { + "0.0" : 347.22962679792204, + "50.0" : 347.8858816876976, + "90.0" : 349.6384360837405, + "95.0" : 349.6384360837405, + "99.0" : 349.6384360837405, + "99.9" : 349.6384360837405, + "99.99" : 349.6384360837405, + "99.999" : 349.6384360837405, + "99.9999" : 349.6384360837405, + "100.0" : 349.6384360837405 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 347.77980623510695, + 349.5586973328227, + 349.6384360837405 + ], + [ + 347.9919571402882, + 347.5084220785532, + 347.22962679792204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.5994046390989, + "scoreError" : 1.974937366634112, + "scoreConfidence" : [ + 111.6244672724648, + 115.57434200573302 + ], + "scorePercentiles" : { + "0.0" : 112.88383951566979, + "50.0" : 113.41914024034145, + "90.0" : 114.80140033760979, + "95.0" : 114.80140033760979, + "99.0" : 114.80140033760979, + "99.9" : 114.80140033760979, + "99.99" : 114.80140033760979, + "99.999" : 114.80140033760979, + "99.9999" : 114.80140033760979, + "100.0" : 114.80140033760979 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.46228762041908, + 113.37599286026382, + 113.06390911831095 + ], + [ + 112.88383951566979, + 114.00899838232003, + 114.80140033760979 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061715292701327217, + "scoreError" : 0.0010679257974093729, + "scoreConfidence" : [ + 0.060647366903917845, + 0.0627832184987366 + ], + "scorePercentiles" : { + "0.0" : 0.06133311753738209, + "50.0" : 0.06169531959481761, + "90.0" : 0.062112434071838064, + "95.0" : 0.062112434071838064, + "99.0" : 0.062112434071838064, + "99.9" : 0.062112434071838064, + "99.99" : 0.062112434071838064, + "99.999" : 0.062112434071838064, + "99.9999" : 0.062112434071838064, + "100.0" : 0.062112434071838064 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06207946847355777, + 0.06198935421302868, + 0.062112434071838064 + ], + [ + 0.0613760969355502, + 0.06140128497660653, + 0.06133311753738209 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.55042230292301E-4, + "scoreError" : 9.637342642250621E-7, + "scoreConfidence" : [ + 3.540784960280759E-4, + 3.5600596455652607E-4 + ], + "scorePercentiles" : { + "0.0" : 3.545310466418344E-4, + "50.0" : 3.5504888349907946E-4, + "90.0" : 3.5553672322892135E-4, + "95.0" : 3.5553672322892135E-4, + "99.0" : 3.5553672322892135E-4, + "99.9" : 3.5553672322892135E-4, + "99.99" : 3.5553672322892135E-4, + "99.999" : 3.5553672322892135E-4, + "99.9999" : 3.5553672322892135E-4, + "100.0" : 3.5553672322892135E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5553672322892135E-4, + 3.550015089536837E-4, + 3.552441150918679E-4 + ], + [ + 3.548437297930234E-4, + 3.545310466418344E-4, + 3.550962580444752E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.302143630427227, + "scoreError" : 0.052317498216517766, + "scoreConfidence" : [ + 2.249826132210709, + 2.3544611286437447 + ], + "scorePercentiles" : { + "0.0" : 2.26184855269109, + "50.0" : 2.306344401854405, + "90.0" : 2.3549109678331117, + "95.0" : 2.3567763475494816, + "99.0" : 2.3567763475494816, + "99.9" : 2.3567763475494816, + "99.99" : 2.3567763475494816, + "99.999" : 2.3567763475494816, + "99.9999" : 2.3567763475494816, + "100.0" : 2.3567763475494816 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.3567763475494816, + 2.314865398148148, + 2.3296003265781504, + 2.2705494022701473, + 2.2654343877689693 + ], + [ + 2.3381225503857843, + 2.319991144514034, + 2.2978234055606617, + 2.26184855269109, + 2.266424788805801 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013627935993796006, + "scoreError" : 3.307157778531404E-4, + "scoreConfidence" : [ + 0.013297220215942866, + 0.013958651771649146 + ], + "scorePercentiles" : { + "0.0" : 0.013499447578974083, + "50.0" : 0.013636207227776136, + "90.0" : 0.013738793438433797, + "95.0" : 0.013738793438433797, + "99.0" : 0.013738793438433797, + "99.9" : 0.013738793438433797, + "99.99" : 0.013738793438433797, + "99.999" : 0.013738793438433797, + "99.9999" : 0.013738793438433797, + "100.0" : 0.013738793438433797 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013734436426664323, + 0.013738793438433797, + 0.013731484508577816 + ], + [ + 0.013499447578974083, + 0.013540929946974457, + 0.013522524063151575 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0020056461280555, + "scoreError" : 0.022476500791931805, + "scoreConfidence" : [ + 0.9795291453361238, + 1.0244821469199874 + ], + "scorePercentiles" : { + "0.0" : 0.9941846916194452, + "50.0" : 1.0019669453453228, + "90.0" : 1.0097236476171243, + "95.0" : 1.0097236476171243, + "99.0" : 1.0097236476171243, + "99.9" : 1.0097236476171243, + "99.99" : 1.0097236476171243, + "99.999" : 1.0097236476171243, + "99.9999" : 1.0097236476171243, + "100.0" : 1.0097236476171243 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0095309820310923, + 1.0086718245083208, + 1.0097236476171243 + ], + [ + 0.9941846916194452, + 0.9952620661823248, + 0.9946606648100259 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010475178566971985, + "scoreError" : 4.2114359024176E-4, + "scoreConfidence" : [ + 0.010054034976730224, + 0.010896322157213745 + ], + "scorePercentiles" : { + "0.0" : 0.010328362365631378, + "50.0" : 0.01047641341280271, + "90.0" : 0.010618157349540355, + "95.0" : 0.010618157349540355, + "99.0" : 0.010618157349540355, + "99.9" : 0.010618157349540355, + "99.99" : 0.010618157349540355, + "99.999" : 0.010618157349540355, + "99.9999" : 0.010618157349540355, + "100.0" : 0.010618157349540355 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010618157349540355, + 0.010605451926747944, + 0.010612742250776833 + ], + [ + 0.010347374898857477, + 0.010338982610277925, + 0.010328362365631378 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.129938372235572, + "scoreError" : 0.2796094491523664, + "scoreConfidence" : [ + 2.8503289230832056, + 3.409547821387938 + ], + "scorePercentiles" : { + "0.0" : 3.0270567263922517, + "50.0" : 3.13591966013266, + "90.0" : 3.2233045837628866, + "95.0" : 3.2233045837628866, + "99.0" : 3.2233045837628866, + "99.9" : 3.2233045837628866, + "99.99" : 3.2233045837628866, + "99.999" : 3.2233045837628866, + "99.9999" : 3.2233045837628866, + "100.0" : 3.2233045837628866 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.220407182227946, + 3.218140173745174, + 3.2233045837628866 + ], + [ + 3.037022420765027, + 3.0270567263922517, + 3.0536991465201466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8905156273330963, + "scoreError" : 0.02328378849501425, + "scoreConfidence" : [ + 2.867231838838082, + 2.9137994158281106 + ], + "scorePercentiles" : { + "0.0" : 2.882803729682997, + "50.0" : 2.888308531331263, + "90.0" : 2.906259704532249, + "95.0" : 2.906259704532249, + "99.0" : 2.906259704532249, + "99.9" : 2.906259704532249, + "99.99" : 2.906259704532249, + "99.999" : 2.906259704532249, + "99.9999" : 2.906259704532249, + "100.0" : 2.906259704532249 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.88566757559146, + 2.887166375, + 2.889450687662525 + ], + [ + 2.906259704532249, + 2.882803729682997, + 2.891745691529344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17917726512401685, + "scoreError" : 0.0012261384702520679, + "scoreConfidence" : [ + 0.17795112665376478, + 0.18040340359426893 + ], + "scorePercentiles" : { + "0.0" : 0.17867455089424503, + "50.0" : 0.17922075401153353, + "90.0" : 0.17965633972297576, + "95.0" : 0.17965633972297576, + "99.0" : 0.17965633972297576, + "99.9" : 0.17965633972297576, + "99.99" : 0.17965633972297576, + "99.999" : 0.17965633972297576, + "99.9999" : 0.17965633972297576, + "100.0" : 0.17965633972297576 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17895480598056585, + 0.17874157203882107, + 0.17867455089424503 + ], + [ + 0.1795496200649922, + 0.17965633972297576, + 0.17948670204250125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33430754270456425, + "scoreError" : 0.011186792367567826, + "scoreConfidence" : [ + 0.32312075033699644, + 0.34549433507213206 + ], + "scorePercentiles" : { + "0.0" : 0.3295819205391866, + "50.0" : 0.33542790244649223, + "90.0" : 0.33800336926248903, + "95.0" : 0.33800336926248903, + "99.0" : 0.33800336926248903, + "99.9" : 0.33800336926248903, + "99.99" : 0.33800336926248903, + "99.999" : 0.33800336926248903, + "99.9999" : 0.33800336926248903, + "100.0" : 0.33800336926248903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33800336926248903, + 0.33764448254439866, + 0.3375789492641102 + ], + [ + 0.3332768556288742, + 0.3295819205391866, + 0.32975967898832687 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14627044433358438, + "scoreError" : 0.004956424273074186, + "scoreConfidence" : [ + 0.1413140200605102, + 0.15122686860665857 + ], + "scorePercentiles" : { + "0.0" : 0.14507583078730904, + "50.0" : 0.14515113705021365, + "90.0" : 0.1485801867320407, + "95.0" : 0.1485801867320407, + "99.0" : 0.1485801867320407, + "99.9" : 0.1485801867320407, + "99.99" : 0.1485801867320407, + "99.999" : 0.1485801867320407, + "99.9999" : 0.1485801867320407, + "100.0" : 0.1485801867320407 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.145159835493751, + 0.14514243860667633, + 0.14514081740203194 + ], + [ + 0.14507583078730904, + 0.14852355697969732, + 0.1485801867320407 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4058748977538484, + "scoreError" : 0.01585443709450083, + "scoreConfidence" : [ + 0.39002046065934753, + 0.42172933484834924 + ], + "scorePercentiles" : { + "0.0" : 0.40091500797787044, + "50.0" : 0.4045229172737388, + "90.0" : 0.41416803661061874, + "95.0" : 0.41416803661061874, + "99.0" : 0.41416803661061874, + "99.9" : 0.41416803661061874, + "99.99" : 0.41416803661061874, + "99.999" : 0.41416803661061874, + "99.9999" : 0.41416803661061874, + "100.0" : 0.41416803661061874 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41416803661061874, + 0.4100750950916472, + 0.4078268442967253 + ], + [ + 0.40121899025075225, + 0.4010454122954764, + 0.40091500797787044 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15889447440725357, + "scoreError" : 0.0048813889177607905, + "scoreConfidence" : [ + 0.15401308548949277, + 0.16377586332501437 + ], + "scorePercentiles" : { + "0.0" : 0.15678026067257192, + "50.0" : 0.15937500256557674, + "90.0" : 0.1604771103568907, + "95.0" : 0.1604771103568907, + "99.0" : 0.1604771103568907, + "99.9" : 0.1604771103568907, + "99.99" : 0.1604771103568907, + "99.999" : 0.1604771103568907, + "99.9999" : 0.1604771103568907, + "100.0" : 0.1604771103568907 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16039131121589761, + 0.1604771103568907, + 0.1603139903493163 + ], + [ + 0.1584360147818372, + 0.15678026067257192, + 0.1569681590670078 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046874595405080044, + "scoreError" : 7.112796634006733E-5, + "scoreConfidence" : [ + 0.046803467438739976, + 0.04694572337142011 + ], + "scorePercentiles" : { + "0.0" : 0.04684279002075107, + "50.0" : 0.04687867667457685, + "90.0" : 0.04690527301466691, + "95.0" : 0.04690527301466691, + "99.0" : 0.04690527301466691, + "99.9" : 0.04690527301466691, + "99.99" : 0.04690527301466691, + "99.999" : 0.04690527301466691, + "99.9999" : 0.04690527301466691, + "100.0" : 0.04690527301466691 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04684279002075107, + 0.04687845594198414, + 0.04684652153504539 + ], + [ + 0.04690527301466691, + 0.04689563451086319, + 0.046878897407169544 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8755460.501280613, + "scoreError" : 231832.52216371533, + "scoreConfidence" : [ + 8523627.979116898, + 8987293.023444328 + ], + "scorePercentiles" : { + "0.0" : 8705755.225413403, + "50.0" : 8723361.412629273, + "90.0" : 8922448.074041035, + "95.0" : 8922448.074041035, + "99.0" : 8922448.074041035, + "99.9" : 8922448.074041035, + "99.99" : 8922448.074041035, + "99.999" : 8922448.074041035, + "99.9999" : 8922448.074041035, + "100.0" : 8922448.074041035 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8720436.253705319, + 8726286.571553228, + 8705755.225413403 + ], + [ + 8922448.074041035, + 8741811.662587412, + 8716025.220383275 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/settings.gradle b/settings.gradle index b4870c3fc3..62e3428491 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,7 +2,7 @@ pluginManagement { repositories { mavenCentral() maven { - url 'https://plugins.gradle.org/m2' + url = 'https://plugins.gradle.org/m2' metadataSources { // Avoid redirection to defunct JCenter when Gradle module metadata is not published by a plugin (e.g. JMH plugin) ignoreGradleMetadataRedirection() diff --git a/src/main/java/graphql/GraphQLUnusualConfiguration.java b/src/main/java/graphql/GraphQLUnusualConfiguration.java index 3e3443c07d..e96b0b7380 100644 --- a/src/main/java/graphql/GraphQLUnusualConfiguration.java +++ b/src/main/java/graphql/GraphQLUnusualConfiguration.java @@ -1,6 +1,7 @@ package graphql; import graphql.execution.ResponseMapFactory; +import graphql.execution.incremental.IncrementalExecutionContextKeys; import graphql.introspection.GoodFaithIntrospection; import graphql.parser.ParserOptions; import graphql.schema.PropertyDataFetcherHelper; @@ -337,6 +338,15 @@ public IncrementalSupportConfig enableIncrementalSupport(boolean enable) { contextConfig.put(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, enable); return this; } + + /** + * This controls whether @defer field execution starts as early as possible. + */ + @ExperimentalApi + public IncrementalSupportConfig enableEarlyIncrementalFieldExecution(boolean enable) { + contextConfig.put(IncrementalExecutionContextKeys.ENABLE_EAGER_DEFER_START, enable); + return this; + } } public static class DataloaderConfig extends BaseContextConfig { diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 39d4b08701..78ad4280b8 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -15,6 +15,7 @@ import graphql.execution.directives.QueryDirectives; import graphql.execution.directives.QueryDirectivesImpl; import graphql.execution.incremental.DeferredExecutionSupport; +import graphql.execution.incremental.IncrementalExecutionContextKeys; import graphql.execution.instrumentation.ExecuteObjectInstrumentationContext; import graphql.execution.instrumentation.FieldFetchingInstrumentationContext; import graphql.execution.instrumentation.Instrumentation; @@ -325,7 +326,16 @@ DeferredExecutionSupport createDeferredExecutionSupport(ExecutionContext executi Object fieldValueInfo = resolveFieldWithInfo(executionContext, newParameters); futures.addObject(fieldValueInfo); } + + } + + if (executionContext.hasIncrementalSupport() + && deferredExecutionSupport.deferredFieldsCount() > 0 + && executionContext.getGraphQLContext().getBoolean(IncrementalExecutionContextKeys.ENABLE_EAGER_DEFER_START, false)) { + + executionContext.getIncrementalCallState().startDrainingNow(); } + return futures; } @@ -479,12 +489,17 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec CompletableFuture> handleCF = engineRunningState.handle(fetchedValue, (result, exception) -> { // because we added an artificial CF, we need to unwrap the exception - fetchCtx.onCompleted(result, exception); - exception = engineRunningState.possibleCancellation(exception); - - if (exception != null) { - return handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); + Throwable possibleWrappedException = engineRunningState.possibleCancellation(exception); + + if (possibleWrappedException != null) { + CompletableFuture> handledExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, possibleWrappedException); + return handledExceptionResult.thenApply( handledResult -> { + fetchCtx.onExceptionHandled(handledResult); + fetchCtx.onCompleted(result, exception); + return handledResult; + }); } else { + fetchCtx.onCompleted(result, exception); // we can simply return the fetched value CF and avoid a allocation return fetchedValue; } @@ -568,7 +583,7 @@ private void addExtensionsIfPresent(ExecutionContext executionContext, DataFetch } } - protected CompletableFuture handleFetchingException( + protected CompletableFuture> handleFetchingException( DataFetchingEnvironment environment, ExecutionStrategyParameters parameters, Throwable e @@ -589,10 +604,10 @@ protected CompletableFuture handleFetchingException( } } - private CompletableFuture asyncHandleException(DataFetcherExceptionHandler handler, DataFetcherExceptionHandlerParameters handlerParameters) { + private CompletableFuture> asyncHandleException(DataFetcherExceptionHandler handler, DataFetcherExceptionHandlerParameters handlerParameters) { //noinspection unchecked return handler.handleException(handlerParameters).thenApply( - handlerResult -> (T) DataFetcherResult.newResult().errors(handlerResult.getErrors()).build() + handlerResult -> (DataFetcherResult) DataFetcherResult.newResult().errors(handlerResult.getErrors()).build() ); } diff --git a/src/main/java/graphql/execution/incremental/IncrementalCallState.java b/src/main/java/graphql/execution/incremental/IncrementalCallState.java index f2c0b9dbc7..fc1f352ca3 100644 --- a/src/main/java/graphql/execution/incremental/IncrementalCallState.java +++ b/src/main/java/graphql/execution/incremental/IncrementalCallState.java @@ -104,4 +104,8 @@ public Publisher startDeferredCalls() { return publisher.get(); } + public void startDrainingNow() { + drainIncrementalCalls(); + } + } diff --git a/src/main/java/graphql/execution/incremental/IncrementalExecutionContextKeys.java b/src/main/java/graphql/execution/incremental/IncrementalExecutionContextKeys.java new file mode 100644 index 0000000000..293a4ca4fb --- /dev/null +++ b/src/main/java/graphql/execution/incremental/IncrementalExecutionContextKeys.java @@ -0,0 +1,26 @@ +package graphql.execution.incremental; + + +import graphql.Internal; +import org.jspecify.annotations.NullMarked; + +/** + * GraphQLContext keys for controlling incremental execution behavior. + */ +@Internal +@NullMarked +public final class IncrementalExecutionContextKeys { + private IncrementalExecutionContextKeys() { + } + + /** + * Enables eager start of @defer processing so defered work runs before the initial result is computed. + * Defaults to false. + *

+ * Expects a boolean value. + */ + public static final String ENABLE_EAGER_DEFER_START = "__GJ_enable_eager_defer_start"; + +} + + diff --git a/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java index 38984c6f92..f6ff09beca 100644 --- a/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java @@ -2,6 +2,7 @@ import graphql.Internal; import graphql.PublicSpi; +import graphql.execution.DataFetcherResult; import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; @@ -26,6 +27,15 @@ public interface FieldFetchingInstrumentationContext extends InstrumentationCont default void onFetchedValue(Object fetchedValue) { } + /** + * This is called back after any {@link graphql.execution.DataFetcherExceptionHandler}) has run on any exception raised + * during a {@link graphql.schema.DataFetcher} invocation. This allows to see the final {@link DataFetcherResult} + * that will be used when performing the complete step. + * @param dataFetcherResult the final {@link DataFetcherResult} after the exception handler has run + */ + default void onExceptionHandled(DataFetcherResult dataFetcherResult) { + } + @Internal FieldFetchingInstrumentationContext NOOP = new FieldFetchingInstrumentationContext() { @Override diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java index 61b48b2bc5..e6bfc3f740 100644 --- a/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java +++ b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java @@ -473,14 +473,7 @@ void dispatch(int level, CallStack callStack) { } private void dispatchAll(DataLoaderRegistry dataLoaderRegistry, int level) { - for (DataLoader dataLoader : dataLoaderRegistry.getDataLoaders()) { - dataLoader.dispatch().whenComplete((objects, throwable) -> { - if (objects != null && objects.size() > 0) { - Assert.assertNotNull(dataLoader.getName()); - profiler.batchLoadedOldStrategy(dataLoader.getName(), level, objects.size()); - } - }); - } + dataLoaderRegistry.dispatchAll(); } private void dispatchDLCFImpl(Integer level, CallStack callStack, boolean normalOrDelayed, boolean chained) { diff --git a/src/main/java/graphql/schema/DataFetchingEnvironment.java b/src/main/java/graphql/schema/DataFetchingEnvironment.java index 77387e0cea..b08356f3e4 100644 --- a/src/main/java/graphql/schema/DataFetchingEnvironment.java +++ b/src/main/java/graphql/schema/DataFetchingEnvironment.java @@ -238,7 +238,7 @@ public interface DataFetchingEnvironment extends IntrospectionDataFetchingEnviro * @see org.dataloader.DataLoaderRegistry#getDataLoader(String) */ @Nullable - DataLoader getDataLoader(String dataLoaderName); + DataLoader getDataLoader(String dataLoaderName); /** diff --git a/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java b/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java index a3a75f4570..b9cfce9485 100644 --- a/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java +++ b/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java @@ -230,7 +230,7 @@ public ExecutionStepInfo getExecutionStepInfo() { @Override - public @Nullable DataLoader getDataLoader(String dataLoaderName) { + public @Nullable DataLoader getDataLoader(String dataLoaderName) { DataLoader dataLoader = dataLoaderRegistry.getDataLoader(dataLoaderName); if (dataLoader == null) { return null; diff --git a/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java b/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java index 811e9949c1..91bc2fe351 100644 --- a/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java +++ b/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java @@ -148,7 +148,7 @@ public QueryDirectives getQueryDirectives() { } @Override - public @Nullable DataLoader getDataLoader(String dataLoaderName) { + public @Nullable DataLoader getDataLoader(String dataLoaderName) { return delegateEnvironment.getDataLoader(dataLoaderName); } diff --git a/src/main/java/graphql/schema/SchemaTraverser.java b/src/main/java/graphql/schema/SchemaTraverser.java index 809904e30c..5322f4b407 100644 --- a/src/main/java/graphql/schema/SchemaTraverser.java +++ b/src/main/java/graphql/schema/SchemaTraverser.java @@ -83,9 +83,9 @@ public TraverserResult depthFirst(final GraphQLTypeVisitor graphQLTypeVisitor, C public TraverserResult depthFirst(final Traverser traverser, - final TraverserDelegateVisitor traverserDelegateVisitor, + final TraverserVisitor traverserVisitor, Collection roots) { - return doTraverse(traverser, roots, traverserDelegateVisitor); + return doTraverse(traverser, roots, traverserVisitor); } private Traverser initTraverser() { @@ -94,8 +94,8 @@ private Traverser initTraverser() { private TraverserResult doTraverse(Traverser traverser, Collection roots, - TraverserDelegateVisitor traverserDelegateVisitor) { - return traverser.traverse(roots, traverserDelegateVisitor); + TraverserVisitor traverserVisitor) { + return traverser.traverse(roots, traverserVisitor); } private static class TraverserDelegateVisitor implements TraverserVisitor { diff --git a/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java b/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java index 325854129c..945966c00f 100644 --- a/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java +++ b/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java @@ -4,11 +4,11 @@ import graphql.PublicApi; import graphql.schema.GraphQLEnumType; import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLFieldsContainer; import graphql.schema.GraphQLImplementingType; import graphql.schema.GraphQLInputObjectField; import graphql.schema.GraphQLInputObjectType; import graphql.schema.GraphQLInterfaceType; -import graphql.schema.GraphQLNamedSchemaElement; import graphql.schema.GraphQLNamedType; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -45,7 +46,9 @@ public class FieldVisibilitySchemaTransformation { private final Runnable afterTransformationHook; public FieldVisibilitySchemaTransformation(VisibleFieldPredicate visibleFieldPredicate) { - this(visibleFieldPredicate, () -> {}, () -> {}); + this(visibleFieldPredicate, () -> { + }, () -> { + }); } public FieldVisibilitySchemaTransformation(VisibleFieldPredicate visibleFieldPredicate, @@ -57,8 +60,8 @@ public FieldVisibilitySchemaTransformation(VisibleFieldPredicate visibleFieldPre } public final GraphQLSchema apply(GraphQLSchema schema) { - Set observedBeforeTransform = new HashSet<>(); - Set observedAfterTransform = new HashSet<>(); + Set observedBeforeTransform = new LinkedHashSet<>(); + Set observedAfterTransform = new LinkedHashSet<>(); Set markedForRemovalTypes = new HashSet<>(); // query, mutation, and subscription types should not be removed @@ -132,18 +135,22 @@ protected TraversalControl visitGraphQLType(GraphQLSchemaElement node, Traverser private static class TypeObservingVisitor extends GraphQLTypeVisitorStub { - private final Set observedTypes; + private final Set observedTypes; - private TypeObservingVisitor(Set observedTypes) { + private TypeObservingVisitor(Set observedTypes) { this.observedTypes = observedTypes; } @Override protected TraversalControl visitGraphQLType(GraphQLSchemaElement node, TraverserContext context) { - if (node instanceof GraphQLType) { - observedTypes.add((GraphQLType) node); + if (node instanceof GraphQLObjectType || + node instanceof GraphQLEnumType || + node instanceof GraphQLInputObjectType || + node instanceof GraphQLInterfaceType || + node instanceof GraphQLUnionType) { + observedTypes.add(((GraphQLNamedType) node).getName()); } return TraversalControl.CONTINUE; @@ -155,6 +162,9 @@ private static class FieldRemovalVisitor extends GraphQLTypeVisitorStub { private final VisibleFieldPredicate visibilityPredicate; private final Set removedTypes; + private final Set fieldDefinitionsToActuallyRemove = new LinkedHashSet<>(); + private final Set inputObjectFieldsToDelete = new LinkedHashSet<>(); + private FieldRemovalVisitor(VisibleFieldPredicate visibilityPredicate, Set removedTypes) { this.visibilityPredicate = visibilityPredicate; @@ -162,45 +172,87 @@ private FieldRemovalVisitor(VisibleFieldPredicate visibilityPredicate, } @Override - public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition definition, - TraverserContext context) { - return visitField(definition, context); + public TraversalControl visitGraphQLObjectType(GraphQLObjectType objectType, TraverserContext context) { + return visitFieldsContainer(objectType, context); } @Override - public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField definition, - TraverserContext context) { - return visitField(definition, context); + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType objectType, TraverserContext context) { + return visitFieldsContainer(objectType, context); } - private TraversalControl visitField(GraphQLNamedSchemaElement element, - TraverserContext context) { - - VisibleFieldPredicateEnvironment environment = new VisibleFieldPredicateEnvironmentImpl( - element, context.getParentNode()); - if (!visibilityPredicate.isVisible(environment)) { - deleteNode(context); + private TraversalControl visitFieldsContainer(GraphQLFieldsContainer fieldsContainer, TraverserContext context) { + boolean allFieldsDeleted = true; + for (GraphQLFieldDefinition fieldDefinition : fieldsContainer.getFieldDefinitions()) { + VisibleFieldPredicateEnvironment environment = new VisibleFieldPredicateEnvironmentImpl( + fieldDefinition, fieldsContainer); + if (!visibilityPredicate.isVisible(environment)) { + fieldDefinitionsToActuallyRemove.add(fieldDefinition); + removedTypes.add(fieldDefinition.getType()); + } else { + allFieldsDeleted = false; + } + } + if (allFieldsDeleted) { + // we are deleting the whole interface type because all fields are supposed to be deleted + return deleteNode(context); + } else { + return TraversalControl.CONTINUE; + } + } - if (element instanceof GraphQLFieldDefinition) { - removedTypes.add(((GraphQLFieldDefinition) element).getType()); - } else if (element instanceof GraphQLInputObjectField) { - removedTypes.add(((GraphQLInputObjectField) element).getType()); + @Override + public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType inputObjectType, TraverserContext context) { + boolean allFieldsDeleted = true; + for (GraphQLInputObjectField inputField : inputObjectType.getFieldDefinitions()) { + VisibleFieldPredicateEnvironment environment = new VisibleFieldPredicateEnvironmentImpl( + inputField, inputObjectType); + if (!visibilityPredicate.isVisible(environment)) { + inputObjectFieldsToDelete.add(inputField); + removedTypes.add(inputField.getType()); + } else { + allFieldsDeleted = false; } } + if (allFieldsDeleted) { + // we are deleting the whole input object type because all fields are supposed to be deleted + return deleteNode(context); + } else { + return TraversalControl.CONTINUE; + } - return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition definition, + TraverserContext context) { + if (fieldDefinitionsToActuallyRemove.contains(definition)) { + return deleteNode(context); + } else { + return TraversalControl.CONTINUE; + } + } + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField definition, + TraverserContext context) { + if (inputObjectFieldsToDelete.contains(definition)) { + return deleteNode(context); + } else { + return TraversalControl.CONTINUE; + } } } private static class TypeVisibilityVisitor extends GraphQLTypeVisitorStub { private final Set protectedTypeNames; - private final Set observedBeforeTransform; - private final Set observedAfterTransform; + private final Set observedBeforeTransform; + private final Set observedAfterTransform; private TypeVisibilityVisitor(Set protectedTypeNames, - Set observedTypes, - Set observedAfterTransform) { + Set observedTypes, + Set observedAfterTransform) { this.protectedTypeNames = protectedTypeNames; this.observedBeforeTransform = observedTypes; this.observedAfterTransform = observedAfterTransform; @@ -215,17 +267,19 @@ public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, @Override public TraversalControl visitGraphQLType(GraphQLSchemaElement node, TraverserContext context) { - if (observedBeforeTransform.contains(node) && - !observedAfterTransform.contains(node) && - (node instanceof GraphQLObjectType || - node instanceof GraphQLEnumType || - node instanceof GraphQLInputObjectType || - node instanceof GraphQLInterfaceType || - node instanceof GraphQLUnionType)) { - - return deleteNode(context); + if (node instanceof GraphQLObjectType || + node instanceof GraphQLEnumType || + node instanceof GraphQLInputObjectType || + node instanceof GraphQLInterfaceType || + node instanceof GraphQLUnionType) { + String name = ((GraphQLNamedType) node).getName(); + if (observedBeforeTransform.contains(name) && + !observedAfterTransform.contains(name) + && !protectedTypeNames.contains(name) + ) { + return deleteNode(context); + } } - return TraversalControl.CONTINUE; } } diff --git a/src/test/groovy/graphql/HelloWorld.java b/src/test/groovy/graphql/HelloWorld.java index b381b4bbc0..5c8e13790f 100644 --- a/src/test/groovy/graphql/HelloWorld.java +++ b/src/test/groovy/graphql/HelloWorld.java @@ -3,14 +3,14 @@ import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.Map; import static graphql.Scalars.GraphQLString; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import static graphql.schema.GraphQLObjectType.newObject; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class HelloWorld { diff --git a/src/test/groovy/graphql/archunit/JMHForkArchRuleTest.groovy b/src/test/groovy/graphql/archunit/JMHForkArchRuleTest.groovy index c3128daab6..943da3f59d 100644 --- a/src/test/groovy/graphql/archunit/JMHForkArchRuleTest.groovy +++ b/src/test/groovy/graphql/archunit/JMHForkArchRuleTest.groovy @@ -18,6 +18,7 @@ class JMHForkArchRuleTest extends Specification { def importedClasses = new ClassFileImporter() .importPackages("benchmark", "performance", "graphql.execution") + def rule = classes() .that().areAnnotatedWith(Fork.class) .and().areTopLevelClasses() diff --git a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy index b3b522d90b..487caee669 100644 --- a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy +++ b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy @@ -7,6 +7,7 @@ import graphql.ExecutionResult import graphql.ExperimentalApi import graphql.GraphQL import graphql.GraphqlErrorBuilder +import graphql.GraphQLContext import graphql.TestUtil import graphql.execution.DataFetcherResult import graphql.execution.pubsub.CapturingSubscriber @@ -27,6 +28,8 @@ import spock.lang.Specification import spock.lang.Unroll import java.util.concurrent.CompletableFuture +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicInteger import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring @@ -1726,6 +1729,151 @@ class DeferExecutionSupportIntegrationTest extends Specification { } + def "eager defer starts before initial result completes when ENABLE_EAGER_DEFER_START"() { + given: + def deferStarted = new CountDownLatch(1) + def allowDeferredComplete = new CountDownLatch(1) + + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("post", resolve([id: "1001"])) + ) + .type(newTypeWiring("Query").dataFetcher("hello", resolve("world", 4000))) + .type(newTypeWiring("Post").dataFetcher("summary", { env -> + deferStarted.countDown() + allowDeferredComplete.await(2, TimeUnit.SECONDS) + CompletableFuture.completedFuture("A summary") + } as DataFetcher)) + .type(newTypeWiring("Item").typeResolver(itemTypeResolver())) + .build() + + def schema = TestUtil.schema(schemaSpec, runtimeWiring) + .transform({ b -> b.additionalDirective(Directives.DeferDirective) }) + def testGraphQL = GraphQL.newGraphQL(schema).build() + + def ctx = GraphQLContext.newContext().build() + ctx.put(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, true) + ctx.put(IncrementalExecutionContextKeys.ENABLE_EAGER_DEFER_START, true) + + def query = ''' + query { + hello + ... @defer { post { summary } } + } + ''' + + when: + def executionInput = ExecutionInput.newExecutionInput() + .graphQLContext([(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT): true, (IncrementalExecutionContextKeys.ENABLE_EAGER_DEFER_START): true]) + .query(query) + .build() + def execFuture = CompletableFuture.supplyAsync { + testGraphQL.execute(executionInput) + } + + then: + // Deferred fetcher starts while initial result is still computing + assert deferStarted.await(2000, TimeUnit.MILLISECONDS) + assert !execFuture.isDone() + + when: + allowDeferredComplete.countDown() + def initialResult = execFuture.join() as IncrementalExecutionResult + + then: + assert initialResult.toSpecification() == [ + data : [hello: "world"], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: [], + data: [post: [summary: "A summary"]] + ] + ] + ] + ] + } + + + def "incremental starts only after initial result when eager start disabled"() { + given: + def deferStarted = new CountDownLatch(1) + def allowDeferredComplete = new CountDownLatch(1) + + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("post", resolve([id: "1001"])) + ) + .type(newTypeWiring("Query").dataFetcher("hello", resolve("world", 300))) + .type(newTypeWiring("Post").dataFetcher("summary", { env -> + deferStarted.countDown() + allowDeferredComplete.await(2, TimeUnit.SECONDS) + CompletableFuture.completedFuture("A summary") + } as DataFetcher)) + .type(newTypeWiring("Item").typeResolver(itemTypeResolver())) + .build() + + def schema = TestUtil.schema(schemaSpec, runtimeWiring) + .transform({ b -> b.additionalDirective(Directives.DeferDirective) }) + def testGraphQL = GraphQL.newGraphQL(schema).build() + + def query = ''' + query { + hello + ... @defer { post { summary } } + } + ''' + + when: + def executionInput = ExecutionInput.newExecutionInput() + .graphQLContext([(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT): true]) // no eager flag + .query(query) + .build() + def execFuture = CompletableFuture.supplyAsync { + testGraphQL.execute(executionInput) + } + + then: + assert !deferStarted.await(100, TimeUnit.MILLISECONDS) + assert !execFuture.isDone() + + when: + def initialResult = execFuture.join() as IncrementalExecutionResult + + then: + assert initialResult.toSpecification() == [ + data : [hello: "world"], + hasNext: true + ] + assert deferStarted.count == 1 // still not started, no subscriber yet + + when: + allowDeferredComplete.countDown() + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: [], + data: [post: [summary: "A summary"]] + ] + ] + ] + ] + } + private ExecutionResult executeQuery(String query) { return this.executeQuery(query, true, [:]) diff --git a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy index 43767d9348..ca52f8cf84 100644 --- a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy @@ -1,11 +1,16 @@ package graphql.execution.instrumentation +import graphql.ErrorType import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQL +import graphql.GraphqlErrorBuilder +import graphql.GraphqlErrorBuilderTest import graphql.StarWarsSchema import graphql.TestUtil import graphql.execution.AsyncExecutionStrategy +import graphql.execution.DataFetcherExceptionHandlerResult +import graphql.execution.DataFetcherResult import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters @@ -23,6 +28,8 @@ import spock.lang.Specification import java.util.concurrent.CompletableFuture import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicBoolean +import java.util.concurrent.atomic.AtomicInteger +import java.util.concurrent.atomic.AtomicLong class InstrumentationTest extends Specification { @@ -152,6 +159,165 @@ class InstrumentationTest extends Specification { instrumentation.throwableList[0].getMessage() == "DF BANG!" } + def "field fetch will instrument exceptions correctly - includes exception handling with onExceptionHandled"() { + + given: + + def query = """ + { + hero { + id + } + } + """ + + def instrumentation = new LegacyTestingInstrumentation() { + def onHandledCalled = false + def onCompletedCalled = false + def onDispatchedCalled = false + + @Override + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + throw new RuntimeException("DF BANG!") + } + } + } + + @Override + FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return new FieldFetchingInstrumentationContext() { + @Override + void onDispatched() { + onDispatchedCalled = true + } + + @Override + void onCompleted(Object result, Throwable t) { + onCompletedCalled = true + } + + @Override + void onExceptionHandled(DataFetcherResult dataFetcherResult) { + onHandledCalled = true + } + } + } + } + + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .defaultDataFetcherExceptionHandler { it -> + // catch all exceptions and transform to graphql error with a prefixed message + return CompletableFuture.completedFuture( + DataFetcherExceptionHandlerResult.newResult(GraphqlErrorBuilder.newError() + .errorType(ErrorType.DataFetchingException) + .message("Handled " + it.exception.message) + .path(it.path) + .build()) + .build()) + } + .instrumentation(instrumentation) + .build() + + when: + def resp = graphQL.execute(query) + + then: "exception handler turned the exception into a graphql error and message prefixed with Handled" + resp.errors.size() == 1 + resp.errors[0].message == "Handled DF BANG!" + + and: "all instrumentation methods were called" + instrumentation.onDispatchedCalled == true + instrumentation.onCompletedCalled == true + instrumentation.onHandledCalled == true + } + + + def "field fetch verify order and call of all methods"() { + + given: + + def query = """ + { + hero { + id + } + } + """ + + def metric = [] + def instrumentation = new SimplePerformantInstrumentation() { + def timeElapsed = new AtomicInteger() + + @Override + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + // simulate latency + timeElapsed.addAndGet(50) + throw new RuntimeException("DF BANG!") + } + } + } + + @Override + FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return new FieldFetchingInstrumentationContext() { + def start = 0 + def duration = 0 + def hasError = false + + + @Override + void onDispatched() { + start = 1 + } + + @Override + void onCompleted(Object result, Throwable t) { + duration = timeElapsed.get() - start + metric = [duration, hasError] + } + + @Override + void onExceptionHandled(DataFetcherResult dataFetcherResult) { + hasError = dataFetcherResult.errors != null && !dataFetcherResult.errors.isEmpty() + && dataFetcherResult.errors.any { it.message.contains("Handled") } + } + } + } + } + + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .defaultDataFetcherExceptionHandler { it -> + // catch all exceptions and transform to graphql error with a prefixed message + return CompletableFuture.completedFuture( + DataFetcherExceptionHandlerResult.newResult(GraphqlErrorBuilder.newError() + .errorType(ErrorType.DataFetchingException) + .message("Handled " + it.exception.message) + .path(it.path) + .build()) + .build()) + } + .instrumentation(instrumentation) + .build() + + when: + def resp = graphQL.execute(query) + + then: "exception handler turned the exception into a graphql error and prefixed its message with 'Handled'" + resp.errors.size() == 1 + resp.errors[0].message == "Handled DF BANG!" + + and: "metric was captured i.e all instrumentation methods were called in the right order" + metric == [49, true] + } + /** * This uses a stop and go pattern and multiple threads. Each time * the execution strategy is invoked, the data fetchers are held diff --git a/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy b/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy index 00b7edd505..25a6331e02 100644 --- a/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy +++ b/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy @@ -9,7 +9,6 @@ import graphql.schema.GraphQLInputObjectType import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLSchema import graphql.schema.TypeResolver -import graphql.schema.idl.SchemaPrinter import spock.lang.Specification import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition @@ -973,7 +972,6 @@ class FieldVisibilitySchemaTransformationTest extends Specification { .build() when: - System.out.println((new SchemaPrinter()).print(schema)) GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) then: @@ -1022,7 +1020,6 @@ class FieldVisibilitySchemaTransformationTest extends Specification { .build() when: - System.out.println((new SchemaPrinter()).print(schema)) GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) then: @@ -1057,7 +1054,6 @@ class FieldVisibilitySchemaTransformationTest extends Specification { .build() when: - System.out.println((new SchemaPrinter()).print(schema)) GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) then: @@ -1073,7 +1069,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { def visibilitySchemaTransformation = new FieldVisibilitySchemaTransformation({ environment -> def directives = (environment.schemaElement as GraphQLDirectiveContainer).appliedDirectives return directives.find({ directive -> directive.name == "private" }) == null - }, { -> callbacks << "before" }, { -> callbacks << "after"} ) + }, { -> callbacks << "before" }, { -> callbacks << "after" }) GraphQLSchema schema = TestUtil.schema(""" @@ -1245,5 +1241,110 @@ class FieldVisibilitySchemaTransformationTest extends Specification { then: (restrictedSchema.getType("Account") as GraphQLObjectType).getFieldDefinition("billingStatus") == null restrictedSchema.getType("BillingStatus") == null + + } + + def "remove all fields from a type which is referenced via additional types"() { + given: + GraphQLSchema schema = TestUtil.schema(""" + directive @private on FIELD_DEFINITION + type Query { + foo: Foo + } + type Foo { + foo: String + toDelete: ToDelete @private + } + type ToDelete { + toDelete:String @private + } + """) + + when: + schema.typeMap + def patchedSchema = schema.transform { builder -> + schema.typeMap.each { entry -> + def type = entry.value + if (type != schema.queryType && type != schema.mutationType && type != schema.subscriptionType) { + builder.additionalType(type) + } + } + } + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(patchedSchema) + then: + (restrictedSchema.getType("Foo") as GraphQLObjectType).getFieldDefinition("toDelete") == null + } + + def "remove field from a type which is referenced via additional types and an additional not reachable child is deleted"() { + given: + /* + the test case here is that ToDelete is changed, because ToDelete.toDelete is deleted + and additionally Indirect needs to be deleted because it is not reachable via the + Query type anymore. + We had a bug where ToDeleted was not deleted correctly, but because Indirect was, it resulted + in an invalid schema and exception. + */ + GraphQLSchema schema = TestUtil.schema(""" + directive @private on FIELD_DEFINITION + type Query { + foo: String + toDelete: ToDelete @private + } + type ToDelete { + bare: String @private + toDelete:[Indirect!] + } + type Indirect { + foo: String + } + """) + + when: + schema.typeMap + def patchedSchema = schema.transform { builder -> + schema.typeMap.each { entry -> + def type = entry.value + if (type != schema.queryType && type != schema.mutationType && type != schema.subscriptionType) { + builder.additionalType(type) + } + } + } + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(patchedSchema) + then: + (restrictedSchema.getType("Query") as GraphQLObjectType).getFieldDefinition("toDelete") == null + } + + + def "remove all fields from an input type which is referenced via additional types"() { + given: + GraphQLSchema schema = TestUtil.schema(""" + directive @private on FIELD_DEFINITION | INPUT_FIELD_DEFINITION + type Query { + foo(input: Input): String + } + input Input { + foo: String + toDelete:ToDelete @private + } + input ToDelete { + toDelete:String @private + } + """) + + when: + schema.typeMap + def patchedSchema = schema.transform { builder -> + schema.typeMap.each { entry -> + def type = entry.value + if (type != schema.queryType && type != schema.mutationType && type != schema.subscriptionType) { + builder.additionalType(type) + } + } + } + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(patchedSchema) + then: + (restrictedSchema.getType("Input") as GraphQLInputObjectType).getFieldDefinition("toDelete") == null } + + } diff --git a/src/test/groovy/graphql/util/querygenerator/QueryGeneratorTest.groovy b/src/test/groovy/graphql/util/querygenerator/QueryGeneratorTest.groovy index 1fa7c6b037..877dc11d73 100644 --- a/src/test/groovy/graphql/util/querygenerator/QueryGeneratorTest.groovy +++ b/src/test/groovy/graphql/util/querygenerator/QueryGeneratorTest.groovy @@ -5,13 +5,8 @@ import graphql.TestUtil import graphql.parser.Parser import graphql.schema.GraphQLSchema import graphql.validation.Validator -import org.junit.Assert import spock.lang.Specification -import static org.junit.Assert.assertEquals -import static org.junit.Assert.assertFalse -import static org.junit.Assert.assertNotNull -import static org.junit.Assert.assertTrue class QueryGeneratorTest extends Specification { def "generate query for simple type"() { @@ -51,10 +46,10 @@ class QueryGeneratorTest extends Specification { def result = executeTest(schema, fieldPath, expectedNoOperation) then: - assertNotNull(result) - assertEquals("Bar", result.usedType) - assertEquals(4, result.totalFieldCount) - assertFalse(result.reachedMaxFieldCount) + result != null + "Bar" == result.usedType + 4 == result.totalFieldCount + !result.reachedMaxFieldCount when: "operation and arguments are passed" def expectedWithOperation = """ @@ -81,7 +76,7 @@ query barTestOperation { ) then: - assertNotNull(result) + result != null } @@ -113,7 +108,7 @@ query barTestOperation { def result = executeTest(schema, fieldPath, expectedNoOperation) then: - assertNotNull(result) + result != null } def "generate query field of non-nullable type"() { @@ -144,7 +139,7 @@ query barTestOperation { def result = executeTest(schema, fieldPath, expectedNoOperation) then: - assertNotNull(result) + result != null } def "generate query for type with nested type"() { @@ -189,7 +184,7 @@ query barTestOperation { def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null } def "generate query for deeply nested field"() { @@ -236,7 +231,7 @@ query barTestOperation { def result = executeTest(schema, fieldPath, expectedNoOperation) then: - assertNotNull(result) + result != null } def "straight forward cyclic dependency"() { @@ -272,7 +267,7 @@ query barTestOperation { def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null } def "cyclic dependency with 2 fields of the same type"() { @@ -313,7 +308,7 @@ query barTestOperation { def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null } def "transitive cyclic dependency"() { @@ -370,7 +365,7 @@ query barTestOperation { def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null } def "generate mutation and subscription for simple type"() { @@ -411,7 +406,7 @@ mutation { def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null when: "operation and arguments are passed" @@ -434,7 +429,7 @@ subscription { ) then: - assertNotNull(result) + result != null } def "generate query containing fields with arguments"() { @@ -471,7 +466,7 @@ subscription { def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null } def "generate query for the 'node' field, which returns an interface"() { @@ -530,7 +525,7 @@ subscription { result = executeTest(schema, fieldPath, null, "(id: \"1\")", classifierType, expected, QueryGeneratorOptions.newBuilder().build()) then: - assertNotNull(result) + result != null when: "passing typeName on field that doesn't return an interface" fieldPath = "Query.foo" @@ -605,7 +600,7 @@ subscription { result = executeTest(schema, fieldPath, null, null, classifierType, expected, QueryGeneratorOptions.newBuilder().build()) then: - assertNotNull(result) + result != null when: "passing typeName that is not part of the union" fieldPath = "Query.something" @@ -657,9 +652,9 @@ subscription { def result = executeTest(schema, fieldPath, null, null, null, expected, options) then: - assertNotNull(result) - assertEquals(3, result.totalFieldCount) - assertTrue(result.reachedMaxFieldCount) + result != null + 3 == result.totalFieldCount + result.reachedMaxFieldCount } def "field limit enforcement may result in less fields than the MAX"() { @@ -704,7 +699,7 @@ subscription { def result = executeTest(schema, fieldPath, null, null, null, expected, options) then: - assertNotNull(result) + result != null } def "max field limit is enforced"() { @@ -743,9 +738,9 @@ $resultFields def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) - assertEquals(10_000, result.totalFieldCount) - assertTrue(result.reachedMaxFieldCount) + result != null + 10_000 == result.totalFieldCount + result.reachedMaxFieldCount } def "filter types and field"() { @@ -800,7 +795,7 @@ $resultFields def result = executeTest(schema, fieldPath, null, null, null, expected, options) then: - assertNotNull(result) + result != null } def "union fields"() { @@ -855,7 +850,7 @@ $resultFields def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null } def "interface fields"() { @@ -912,7 +907,7 @@ $resultFields def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null } def "interface fields with a single implementing type"() { @@ -960,7 +955,7 @@ $resultFields def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null } def "cyclic dependency with union"() { @@ -1018,7 +1013,7 @@ $resultFields def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null } def "union fields with a single type in union"() { @@ -1064,7 +1059,7 @@ $resultFields def result = executeTest(schema, fieldPath, expected) then: - assertNotNull(result) + result != null } def "generates query for large type"() { @@ -1079,7 +1074,7 @@ $resultFields def result = executeTest(schema, fieldPath, null, "(id: \"issue-id-1\")", "JiraIssue", expected, QueryGeneratorOptions.newBuilder().build()) then: - assertNotNull(result) + result != null } private static QueryGeneratorResult executeTest( @@ -1115,7 +1110,7 @@ $resultFields executeQuery(query, schema) - assertEquals(expected.trim(), query.trim()) + expected.trim() == query.trim() return result } @@ -1126,7 +1121,7 @@ $resultFields def errors = new Validator().validateDocument(schema, document, Locale.ENGLISH) if (!errors.isEmpty()) { - Assert.fail("Validation errors: " + errors.collect { it.getMessage() }.join(", ")) + throw new Exception("Validation errors: " + errors.collect { it.getMessage() }.join(", ")) } }