Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .ai/skills/review-comet-pr/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,9 @@ config, not a testing one, to turn it off before merge (#6466).
- Do the tests compare against Spark? A comparison with Comet's own accumulator, or with a second
implementation such as iceberg-rust instead of the Iceberg Java that Spark runs, can agree on the
wrong answer (#6423, #6426).
- New suites must be registered in both `.github/workflows/pr_build_linux.yml` and
`pr_build_macos.yml`.
- Each new concrete suite needs exactly one test-group tag (`@ScansGroup`, `@ShuffleGroup`,
`@ExecGroup` or `@ExpressionsGroup`), or it runs in no CI job. `dev/ci/check-suites.py` enforces
this; the group should match the area the suite covers.

For a change on a default path, look for tests with the inputs that broke earlier changes:

Expand Down
26 changes: 5 additions & 21 deletions .github/actions/java-test/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,9 @@ inputs:
artifact_name:
description: "Unique name for uploaded artifacts for this run"
required: true
suites:
description: 'Which Scalatest test suites to run'
required: false
default: ''
group:
description: 'The test group to run, as dev/ci/run-comet-tests.sh takes it'
required: true
maven_opts:
description: 'Maven options passed to the mvn command'
required: false
Expand Down Expand Up @@ -81,24 +80,9 @@ runs:
# cache) by setup-builder / setup-macos-builder via maven-bootstrap, which
# every caller of this action runs first.

- name: Run all tests
- name: Run tests
shell: bash
if: ${{ inputs.suites == '' }}
env:
SPARK_LOCAL_HOSTNAME: "localhost"
SPARK_LOCAL_IP: "127.0.0.1"
run: |
MAVEN_OPTS="-Xmx4G -Xms2G -XX:+UnlockDiagnosticVMOptions -XX:+ShowMessageBoxOnError -XX:+HeapDumpOnOutOfMemoryError -XX:ErrorFile=./hs_err_pid%p.log" SPARK_HOME=`pwd` ./mvnw -B -Prelease install ${{ inputs.maven_opts }}
- name: Run specified tests
shell: bash
if: ${{ inputs.suites != '' }}
env:
SPARK_LOCAL_HOSTNAME: "localhost"
SPARK_LOCAL_IP: "127.0.0.1"
run: |
MAVEN_SUITES="$(echo "${{ inputs.suites }}" | paste -sd, -)"
echo "Running with MAVEN_SUITES=$MAVEN_SUITES"
MAVEN_OPTS="-Xmx4G -Xms2G -DwildcardSuites=$MAVEN_SUITES -XX:+UnlockDiagnosticVMOptions -XX:+ShowMessageBoxOnError -XX:+HeapDumpOnOutOfMemoryError -XX:ErrorFile=./hs_err_pid%p.log" SPARK_HOME=`pwd` ./mvnw -B -Prelease install ${{ inputs.maven_opts }}
run: dev/ci/run-comet-tests.sh --goal install "${{ inputs.group }}" -Prelease ${{ inputs.maven_opts }}
- name: Upload crash logs
if: failure()
# These three stay on the plain action rather than
Expand Down
202 changes: 6 additions & 196 deletions .github/workflows/pr_build_linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -520,201 +520,11 @@ jobs:
# run. The goal of the full list is coverage of every Java, Scala and
# Spark version without testing every combination.
profile: ${{ fromJSON(needs.lint.outputs.profile-matrix) }}
# Suites are grouped by functional area into balanced buckets so that no test
# job runs much longer than ~23 min. See
# docs/superpowers/specs/2026-05-22-pr-build-consolidation-design.md for the
# per-suite timing analysis behind this grouping.
suite:
- name: "scans"
value: |
org.apache.comet.parquet.CometParquetWriterSuite
org.apache.comet.parquet.CometParquetWriterRetrySuite
org.apache.comet.parquet.CometEmptyRelationParquetWriterSuite
org.apache.spark.sql.comet.CometNativeWriteSuite
org.apache.comet.parquet.ParquetReadV1Suite
org.apache.comet.parquet.ParquetTimestampLtzAsNtzSuite
org.apache.spark.sql.comet.ParquetEncryptionITCase
org.apache.comet.exec.CometNativeReaderSuite
org.apache.comet.CometVariantProjectionSuite
org.apache.spark.sql.CometVariantShreddingSuite
org.apache.comet.CometIcebergNativeSuite
org.apache.comet.CometBroadcastBuildSideSuite
org.apache.comet.CometIcebergEncryptionSuite
org.apache.comet.CometIcebergRewriteActionSuite
org.apache.comet.CometIcebergWriteActionSuite
org.apache.comet.CometIcebergWriteDetectionSuite
org.apache.comet.CometIcebergSystemFunctionSuite
org.apache.comet.CometIcebergSystemFunctionExtensionsSuite
org.apache.comet.CometIcebergResidualPushdownSuite
org.apache.comet.iceberg.IcebergReflectionSuite
org.apache.comet.serde.operator.IcebergWriteProtoTranslationSuite
org.apache.comet.csv.CometCsvNativeReadSuite
org.apache.comet.CometFuzzTestSuite
org.apache.comet.CometFuzzIcebergSuite
org.apache.comet.DataGeneratorSuite
- name: "shuffle"
value: |
org.apache.comet.exec.CometShuffleSuite
org.apache.comet.exec.CometShuffle4_0Suite
org.apache.comet.exec.CometNativeColumnarToRowSuite
org.apache.comet.exec.CometDirectColumnarToRowSuite
org.apache.comet.exec.CometNativeShuffleSuite
org.apache.comet.exec.CometShuffleInputConversionSuite
org.apache.comet.shuffle.CelebornShufflePartitionPusherSuite
org.apache.spark.sql.comet.execution.shuffle.CometCelebornShuffleManagerSuite
org.apache.spark.sql.comet.execution.shuffle.CometCelebornNativeShuffleWriterSuite
org.apache.spark.sql.comet.execution.shuffle.CometCelebornShuffleFallbackSuite
org.apache.spark.sql.comet.execution.shuffle.CometCelebornConcurrentMaterializationSuite
org.apache.spark.sql.comet.execution.shuffle.CometCelebornShuffleStatisticsSuite
org.apache.spark.sql.comet.execution.shuffle.CometCelebornLocalFetchFailureSuite
org.apache.spark.sql.comet.execution.shuffle.CometCelebornShuffleReaderSuite
org.apache.spark.sql.comet.execution.shuffle.CometCelebornShufflePlanningSuite
org.apache.spark.sql.comet.execution.shuffle.CometNativeShuffleInputRDDSuite
org.apache.spark.sql.comet.execution.shuffle.CometNativeShuffleWriterSuite
org.apache.spark.sql.comet.execution.shuffle.CometNativePositionalRoundRobinSuite
org.apache.spark.sql.comet.execution.shuffle.CometDiskBlockWriterSuite
org.apache.spark.sql.comet.execution.shuffle.CometBlockStoreShuffleReaderSuite
org.apache.spark.sql.comet.execution.shuffle.NativeBatchDecoderIteratorSuite
org.apache.comet.exec.CometShuffleEncryptionSuite
org.apache.comet.exec.CometShuffleManagerSuite
org.apache.comet.exec.DisableAQECometShuffleSuite
org.apache.spark.shuffle.comet.CometUnboundedShuffleMemoryAllocatorSuite
org.apache.spark.shuffle.comet.CometUnifiedShuffleMemoryAllocatorSuite
org.apache.spark.shuffle.sort.SpillSorterSuite
- name: "exec"
value: |
org.apache.comet.exec.CometAggregateSuite
org.apache.comet.exec.CometExec3_4PlusSuite
org.apache.comet.exec.CometExecSuite
org.apache.comet.exec.CometMergeRowsSuite
org.apache.comet.exec.CometTopKSuite
org.apache.comet.exec.CometEmptyRelationExecSuite
org.apache.comet.exec.CometRangeExecSuite
org.apache.comet.exec.CometInMemoryCacheSuite
org.apache.comet.exec.CometInMemoryCachePruningSuite
org.apache.comet.exec.CometInMemoryCacheKryoSuite
org.apache.comet.exec.CometInMemoryCacheKryoUnregisteredSuite
org.apache.comet.exec.CometInMemoryCacheKryoClassesToRegisterSuite
org.apache.comet.exec.CometInMemoryCacheLastAttemptMetricSuite
org.apache.comet.exec.CometGenerateExecSuite
org.apache.comet.exec.CometWindowExecSuite
org.apache.comet.exec.CometJoinSuite
org.apache.comet.exec.CometTypedDatasetSuite
org.apache.spark.sql.comet.CometMapInBatchSuite
org.apache.spark.sql.comet.CometCollectMetricsSuite
org.apache.spark.sql.comet.CometArrowPythonUdfSuite
org.apache.spark.sql.execution.python.CometArrowPythonRunnerSuite
org.apache.comet.CometNativeSuite
org.apache.comet.DirectColumnarToRowConverterSuite
org.apache.comet.CometConfSuite
org.apache.comet.CometPublicApiSuite
org.apache.comet.QueryContextInternerSuite
org.apache.comet.CometSetOpWithGroupBySuite
org.apache.comet.CometSparkSessionExtensionsSuite
org.apache.spark.sql.comet.CometSessionExtensionsSuite
org.apache.spark.CometPluginsSuite
org.apache.spark.CometRuntimeShutdownSuite
org.apache.spark.CometTaskMemoryManagerSuite
org.apache.spark.CometExecIteratorLifecycleSuite
org.apache.spark.CometPluginsDefaultSuite
org.apache.spark.CometPluginsMemoryOverheadWarningSuite
org.apache.spark.CometPluginsMemoryPoolFractionWarningSuite
org.apache.spark.CometPluginsUnifiedModeSuite
org.apache.spark.CometPluginsExtensionOnlySuite
org.apache.spark.CometPluginsSparkShuffleManagerSuite
org.apache.spark.CometPluginsEventLogSuite
org.apache.comet.rules.CometScanRuleSuite
org.apache.comet.rules.CometScanContribSuite
org.apache.comet.rules.CometScanSchemeFallbackSuite
org.apache.comet.rules.CometMultiStoreScanSuite
org.apache.comet.rules.CometExecRuleSuite
org.apache.spark.sql.comet.CometPlanEqualitySuite
org.apache.comet.rules.CometEmptyRelationExecRuleSuite
org.apache.comet.rules.EliminateRedundantTransitionsSuite
org.apache.comet.rules.RevertNativeForTransitionHeavyStagesSuite
org.apache.spark.sql.CometTPCDSQuerySuite
org.apache.spark.sql.CometTPCDSQueryTestSuite
org.apache.spark.sql.CometTPCHQuerySuite
org.apache.spark.sql.comet.CometTPCDSV1_4_PlanStabilitySuite
org.apache.spark.sql.comet.CometTPCDSV2_7_PlanStabilitySuite
org.apache.spark.sql.comet.CometTaskMetricsSuite
org.apache.spark.sql.comet.CometUnsafeProjectionSuite
org.apache.spark.sql.comet.CometDppFallbackRepro3949Suite
org.apache.spark.sql.comet.CometShuffleFallbackStickinessSuite
org.apache.spark.sql.comet.PlanDataInjectorSuite
org.apache.spark.sql.comet.PlanDataInjectorShuffleLifecycleSuite
org.apache.spark.sql.comet.CometDecimalArithmeticViewSuite
org.apache.spark.sql.comet.CometDecimalPromotionSuite
org.apache.spark.sql.comet.DecimalPrecisionSuite
org.apache.spark.sql.comet.CometScanWithPlanDataSuite
org.apache.spark.sql.comet.util.UtilsSuite
org.apache.spark.sql.comet.CometBroadcastValueSuite
org.apache.comet.vector.NativeUtilSuite
org.apache.comet.vector.CometVectorUtilsSuite
org.apache.comet.udf.CometUdfBridgeSuite
org.apache.comet.objectstore.NativeConfigSuite
org.apache.comet.objectstore.AbfsAuthResolverSuite
org.apache.comet.objectstore.AbfsAuthParitySuite
org.apache.comet.objectstore.AbfsScanFallbackSuite
org.apache.comet.serde.operator.CometIcebergNativeScanSuite
org.apache.comet.serde.operator.CometNativeScanSuite
org.apache.spark.sql.CometToPrettyStringSuite
org.apache.spark.sql.CometCollationSuite
org.apache.spark.sql.CometSortCollationSuite
org.apache.comet.CometFuzzAggregateSuite
org.apache.spark.sql.comet.execution.arrow.CometArrowStreamSuite
org.apache.spark.sql.comet.execution.arrow.CachedBatchRowIteratorSuite
org.apache.spark.sql.comet.execution.arrow.CometArrowWriterSuite
org.apache.spark.sql.comet.execution.arrow.CometStringWriterSuite
org.apache.spark.sql.CometSparkInternalFunctionsSuite
- name: "expressions"
value: |
org.apache.comet.CometExpressionSuite
org.apache.comet.GenerateDocsSuite
org.apache.comet.CometSqlFileTestSuite
org.apache.comet.SqlFileTestParserSuite
org.apache.comet.CometVariantTypeSuite
org.apache.comet.CometHashExpressionSuite
org.apache.comet.CometFloatSemanticsSuite
org.apache.comet.CometTemporalExpressionSuite
org.apache.comet.CometArrayExpressionSuite
org.apache.comet.CometNativeCastSuite
org.apache.comet.CometCastCollatedStringSuite
org.apache.comet.CometDateTimeUtilsSuite
org.apache.comet.CometMathExpressionSuite
org.apache.comet.CometStringExpressionSuite
org.apache.comet.CometBitwiseExpressionSuite
org.apache.comet.CometMapExpressionSuite
org.apache.comet.CometCsvExpressionSuite
org.apache.comet.CometJsonExpressionSuite
org.apache.comet.CometJsonJvmSuite
org.apache.comet.SparkErrorConverterSuite
org.apache.comet.serde.SerdeRegistrationSuite
org.apache.comet.expressions.conditional.CometIfSuite
org.apache.comet.expressions.conditional.CometCoalesceSuite
org.apache.comet.expressions.conditional.CometCaseWhenSuite
org.apache.comet.CometRegExpJvmSuite
org.apache.comet.CometRegexParitySuite
org.apache.comet.expressions.CometRegexSuite
org.apache.comet.CometCodegenSuite
org.apache.comet.CometCoverageStatsSuite
org.apache.comet.CometCodegenSourceSuite
org.apache.comet.CometCodegenHOFSuite
org.apache.comet.CometFuzzMathSuite
org.apache.comet.CometCodegenFuzzSuite
org.apache.comet.CometScalaUDFClassLoaderSuite
org.apache.comet.codegen.CometSpecializedGettersDispatchSuite
org.apache.comet.CometStringDecodeSuite
org.apache.comet.CometWidthBucketSuite
org.apache.comet.CometUuidExpressionSuite
org.apache.comet.CometNativeUdfSuite
org.apache.comet.serde.CometScalarFunctionSuite
org.apache.comet.serde.CometLiteralSuite
org.apache.comet.serde.QueryPlanSerdeSuite
org.apache.comet.serde.SparkFixesSuite
org.apache.comet.CometFallbackInvarianceSuite
# One job per test group. A suite is in the group its tag names; see
# "Test Groups" in docs/source/contributor-guide/development.md.
suite: [scans, shuffle, exec, expressions]
fail-fast: false
name: ${{ matrix.profile.name }} [${{ matrix.suite.name }}]
name: ${{ matrix.profile.name }} [${{ matrix.suite }}]
runs-on: ubuntu-24.04
container:
image: amd64/rust
Expand Down Expand Up @@ -751,8 +561,8 @@ jobs:
- name: Java test steps
uses: ./.github/actions/java-test
with:
artifact_name: ${{ matrix.profile.name }}-${{ matrix.suite.name }}-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}
suites: ${{ matrix.suite.value }}
artifact_name: ${{ matrix.profile.name }}-${{ matrix.suite }}-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}
group: ${{ matrix.suite }}
maven_opts: ${{ matrix.profile.maven_opts }}
upload-test-reports: true
skip-native-build: true
Expand Down
Loading