This is an automated email from the ASF dual-hosted git repository.

FrankChen021 pushed a commit to branch codex/native-compaction-test-matrix
in repository https://gitbox.apache.org/repos/asf/druid.git

commit 1a32f95153ecf08d70b278fe532996c90f6ea791
Author: Frank Chen <[email protected]>
AuthorDate: Wed Sep 9 17:57:08 2026 +0800

    test: simplify compaction configuration model
---
 .../common/task/CompactionTaskRunBase.java         |  14 +-
 .../common/task/CompactionTaskRunTestCases.java    | 189 +++++++++------------
 .../druid/msq/exec/MSQCompactionTaskRunTest.java   |   4 +-
 3 files changed, 93 insertions(+), 114 deletions(-)

diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskRunBase.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskRunBase.java
index 620ec738fa2..e6fe17fa852 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskRunBase.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskRunBase.java
@@ -264,16 +264,16 @@ public abstract class CompactionTaskRunBase
 
   private void configure(Configuration configuration)
   {
-    lockGranularity = configuration.getLockGranularity();
-    useCentralizedDatasourceSchema = 
configuration.isUseCentralizedDatasourceSchema();
-    useConcurrentLocks = configuration.isUseConcurrentLocks();
-    inputInterval = configuration.getInputInterval();
-    segmentGranularity = configuration.getSegmentGranularity();
+    lockGranularity = configuration.lockGranularity();
+    useCentralizedDatasourceSchema = 
configuration.useCentralizedDatasourceSchema();
+    useConcurrentLocks = configuration.useConcurrentLocks();
+    inputInterval = configuration.inputInterval();
+    segmentGranularity = configuration.segmentGranularity();
 
     taskActionTestKit = new TaskActionTestKit()
         .setUseCentralizedDatasourceSchema(useCentralizedDatasourceSchema)
-        .setUseSegmentMetadataCache(configuration.isUseSegmentMetadataCache())
-        .setBatchSegmentAllocation(configuration.isBatchSegmentAllocation());
+        .setUseSegmentMetadataCache(configuration.useSegmentMetadataCache())
+        .setBatchSegmentAllocation(configuration.batchSegmentAllocation());
 
     objectMapper = testUtils.getTestObjectMapper();
     objectMapper.registerSubtypes(new NamedType(LocalLoadSpec.class, "local"));
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskRunTestCases.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskRunTestCases.java
index aa6fc97fcb9..ab04520764b 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskRunTestCases.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskRunTestCases.java
@@ -42,115 +42,94 @@ public final class CompactionTaskRunTestCases
 {
   public enum Selection
   {
-    ALL,
-    TIME_CHUNK_LOCK,
-    SEGMENT_LOCK,
-    NON_SEGMENT_LOCK_WITH_NULL_GRANULARITY,
-    NON_NULL_GRANULARITY_NOT_FINER_THAN_SIX_HOUR,
-    SIX_HOUR_GRANULARITY,
-    SIX_HOUR_GRANULARITY_AND_TEST_INTERVAL,
-    NON_SEGMENT_LOCK_WITH_SIX_HOUR_GRANULARITY,
-    NON_SEGMENT_LOCK_WITH_SIX_HOUR_GRANULARITY_AND_TEST_INTERVAL;
-
-    boolean isApplicable(Configuration configuration)
-    {
-      switch (this) {
-        case ALL:
-          return true;
-        case TIME_CHUNK_LOCK:
-          return configuration.getLockGranularity() == 
LockGranularity.TIME_CHUNK;
-        case SEGMENT_LOCK:
-          return configuration.getLockGranularity() == LockGranularity.SEGMENT;
-        case NON_SEGMENT_LOCK_WITH_NULL_GRANULARITY:
-          return configuration.getLockGranularity() != LockGranularity.SEGMENT
-                 && configuration.getSegmentGranularity() == null;
-        case NON_NULL_GRANULARITY_NOT_FINER_THAN_SIX_HOUR:
-          return configuration.getSegmentGranularity() != null
-                 && 
!configuration.getSegmentGranularity().isFinerThan(Granularities.SIX_HOUR);
-        case SIX_HOUR_GRANULARITY:
-          return 
Granularities.SIX_HOUR.equals(configuration.getSegmentGranularity());
-        case SIX_HOUR_GRANULARITY_AND_TEST_INTERVAL:
-          return 
Granularities.SIX_HOUR.equals(configuration.getSegmentGranularity())
-                 && 
CompactionTaskRunBase.TEST_INTERVAL.equals(configuration.getInputInterval());
-        case NON_SEGMENT_LOCK_WITH_SIX_HOUR_GRANULARITY:
-          return configuration.getLockGranularity() != LockGranularity.SEGMENT
-                 && 
Granularities.SIX_HOUR.equals(configuration.getSegmentGranularity());
-        case NON_SEGMENT_LOCK_WITH_SIX_HOUR_GRANULARITY_AND_TEST_INTERVAL:
-          return configuration.getLockGranularity() != LockGranularity.SEGMENT
-                 && 
Granularities.SIX_HOUR.equals(configuration.getSegmentGranularity())
-                 && 
CompactionTaskRunBase.TEST_INTERVAL.equals(configuration.getInputInterval());
-        default:
-          throw new IllegalStateException("Unhandled selection " + this);
+    ALL {
+      @Override
+      boolean isApplicable(Configuration configuration)
+      {
+        return true;
       }
-    }
+    },
+    TIME_CHUNK_LOCK {
+      @Override
+      boolean isApplicable(Configuration configuration)
+      {
+        return configuration.lockGranularity() == LockGranularity.TIME_CHUNK;
+      }
+    },
+    SEGMENT_LOCK {
+      @Override
+      boolean isApplicable(Configuration configuration)
+      {
+        return configuration.lockGranularity() == LockGranularity.SEGMENT;
+      }
+    },
+    NON_SEGMENT_LOCK_WITH_NULL_GRANULARITY {
+      @Override
+      boolean isApplicable(Configuration configuration)
+      {
+        return configuration.lockGranularity() != LockGranularity.SEGMENT
+               && configuration.segmentGranularity() == null;
+      }
+    },
+    NON_NULL_GRANULARITY_NOT_FINER_THAN_SIX_HOUR {
+      @Override
+      boolean isApplicable(Configuration configuration)
+      {
+        return configuration.segmentGranularity() != null
+               && 
!configuration.segmentGranularity().isFinerThan(Granularities.SIX_HOUR);
+      }
+    },
+    SIX_HOUR_GRANULARITY {
+      @Override
+      boolean isApplicable(Configuration configuration)
+      {
+        return 
Granularities.SIX_HOUR.equals(configuration.segmentGranularity());
+      }
+    },
+    SIX_HOUR_GRANULARITY_AND_TEST_INTERVAL {
+      @Override
+      boolean isApplicable(Configuration configuration)
+      {
+        return 
Granularities.SIX_HOUR.equals(configuration.segmentGranularity())
+               && 
CompactionTaskRunBase.TEST_INTERVAL.equals(configuration.inputInterval());
+      }
+    },
+    NON_SEGMENT_LOCK_WITH_SIX_HOUR_GRANULARITY {
+      @Override
+      boolean isApplicable(Configuration configuration)
+      {
+        return configuration.lockGranularity() != LockGranularity.SEGMENT
+               && 
Granularities.SIX_HOUR.equals(configuration.segmentGranularity());
+      }
+    },
+    NON_SEGMENT_LOCK_WITH_SIX_HOUR_GRANULARITY_AND_TEST_INTERVAL {
+      @Override
+      boolean isApplicable(Configuration configuration)
+      {
+        return configuration.lockGranularity() != LockGranularity.SEGMENT
+               && 
Granularities.SIX_HOUR.equals(configuration.segmentGranularity())
+               && 
CompactionTaskRunBase.TEST_INTERVAL.equals(configuration.inputInterval());
+      }
+    };
+
+    /**
+     * Returns whether the given configuration should be included for a test 
using this selection. This method is
+     * evaluated while test arguments are generated, so inapplicable 
configurations are excluded before per-test
+     * fixtures are initialized.
+     */
+    abstract boolean isApplicable(Configuration configuration);
   }
 
-  public static class Configuration
+  public record Configuration(
+      LockGranularity lockGranularity,
+      boolean useCentralizedDatasourceSchema,
+      boolean batchSegmentAllocation,
+      boolean useSegmentMetadataCache,
+      boolean useConcurrentLocks,
+      Interval inputInterval,
+      @Nullable Granularity segmentGranularity
+  )
   {
-    private final LockGranularity lockGranularity;
-    private final boolean useCentralizedDatasourceSchema;
-    private final boolean batchSegmentAllocation;
-    private final boolean useSegmentMetadataCache;
-    private final boolean useConcurrentLocks;
-    private final Interval inputInterval;
-    @Nullable
-    private final Granularity segmentGranularity;
-
-    public Configuration(
-        LockGranularity lockGranularity,
-        boolean useCentralizedDatasourceSchema,
-        boolean batchSegmentAllocation,
-        boolean useSegmentMetadataCache,
-        boolean useConcurrentLocks,
-        Interval inputInterval,
-        @Nullable Granularity segmentGranularity
-    )
-    {
-      this.lockGranularity = lockGranularity;
-      this.useCentralizedDatasourceSchema = useCentralizedDatasourceSchema;
-      this.batchSegmentAllocation = batchSegmentAllocation;
-      this.useSegmentMetadataCache = useSegmentMetadataCache;
-      this.useConcurrentLocks = useConcurrentLocks;
-      this.inputInterval = inputInterval;
-      this.segmentGranularity = segmentGranularity;
-    }
-
-    public LockGranularity getLockGranularity()
-    {
-      return lockGranularity;
-    }
-
-    public boolean isUseCentralizedDatasourceSchema()
-    {
-      return useCentralizedDatasourceSchema;
-    }
-
-    public boolean isBatchSegmentAllocation()
-    {
-      return batchSegmentAllocation;
-    }
-
-    public boolean isUseSegmentMetadataCache()
-    {
-      return useSegmentMetadataCache;
-    }
-
-    public boolean isUseConcurrentLocks()
-    {
-      return useConcurrentLocks;
-    }
-
-    public Interval getInputInterval()
-    {
-      return inputInterval;
-    }
-
-    @Nullable
-    public Granularity getSegmentGranularity()
-    {
-      return segmentGranularity;
-    }
-
     @Override
     public String toString()
     {
diff --git 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQCompactionTaskRunTest.java
 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQCompactionTaskRunTest.java
index e1926577241..86a316c8836 100644
--- 
a/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQCompactionTaskRunTest.java
+++ 
b/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQCompactionTaskRunTest.java
@@ -178,13 +178,13 @@ public class MSQCompactionTaskRunTest extends 
CompactionTaskRunBase
 
   public static Stream<Configuration> concurrentLockConfigurations()
   {
-    return new 
MsqConfigurations().configurations().filter(Configuration::isUseConcurrentLocks);
+    return new 
MsqConfigurations().configurations().filter(Configuration::useConcurrentLocks);
   }
 
   public static Stream<Configuration> timeChunkConcurrentLockConfigurations()
   {
     return concurrentLockConfigurations()
-        .filter(configuration -> configuration.getLockGranularity() == 
LockGranularity.TIME_CHUNK);
+        .filter(configuration -> configuration.lockGranularity() == 
LockGranularity.TIME_CHUNK);
   }
 
   @Override


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to