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

zhouyuan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 33f2cc8649 [GLUTEN-11911][VL][Spark4] Enable Structured Streaming 
suites with GlutenPlugin fallback (#11957)
33f2cc8649 is described below

commit 33f2cc8649a368eadca237797af5a34ad9f7bbfb
Author: Mohammad Linjawi <[email protected]>
AuthorDate: Wed Apr 29 23:22:27 2026 +0300

    [GLUTEN-11911][VL][Spark4] Enable Structured Streaming suites with 
GlutenPlugin fallback (#11957)
    
    * [VL][Spark4] enable structured streaming suites with fallback traits
    
    * [VL][Spark4] make hash partition verify suite resolve valid 
spark.test.home
    
    * [VL][Spark4] fix spotless style in streaming hash partition suite
    
    * [VL][Spark4] fix structured-streaming checkpoint resource loading
    
    * [VL][Spark4] fix SPARK-49905 streaming shuffle assertion
    
    ---------
    
    Co-authored-by: Mohammad Linjawi <[email protected]>
---
 .../gluten/utils/velox/VeloxTestSettings.scala     |  46 +++----
 .../spark/sql/GlutenStreamingTestsTraits.scala     | 134 +++++++++++++++++++++
 .../GlutenAcceptsLatestSeenOffsetSuite.scala       |   4 +-
 .../streaming/GlutenEventTimeWatermarkSuite.scala  |   6 +-
 .../sql/streaming/GlutenFileStreamSinkSuite.scala  |   6 +-
 .../streaming/GlutenFileStreamSourceSuite.scala    |   6 +-
 .../streaming/GlutenFileStreamStressSuite.scala    |   4 +-
 ...pGroupsInPandasWithStateDistributionSuite.scala |   4 +-
 ...GlutenFlatMapGroupsInPandasWithStateSuite.scala |   4 +-
 ...enFlatMapGroupsWithStateDistributionSuite.scala |   4 +-
 .../GlutenFlatMapGroupsWithStateSuite.scala        |   6 +-
 ...atMapGroupsWithStateWithInitialStateSuite.scala |   4 +-
 .../streaming/GlutenMemorySourceStressSuite.scala  |   6 +-
 .../GlutenMultiStatefulOperatorsSuite.scala        |   4 +-
 .../streaming/GlutenReportSinkMetricsSuite.scala   |   6 +-
 .../spark/sql/streaming/GlutenStreamSuite.scala    |   4 +-
 ...utenStreamingAggregationDistributionSuite.scala |   4 +-
 .../GlutenStreamingAggregationSuite.scala          |   8 +-
 ...enStreamingDeduplicationDistributionSuite.scala |   4 +-
 .../GlutenStreamingDeduplicationSuite.scala        |   6 +-
 ...treamingDeduplicationWithinWatermarkSuite.scala |   4 +-
 .../sql/streaming/GlutenStreamingJoinSuite.scala   |  14 ++-
 ...tenStreamingQueryHashPartitionVerifySuite.scala | 105 +++++++++++++++-
 .../GlutenStreamingQueryListenerSuite.scala        |   4 +-
 .../GlutenStreamingQueryListenersConfSuite.scala   |   4 +-
 .../GlutenStreamingQueryManagerSuite.scala         |   4 +-
 ...treamingQueryOptimizationCorrectnessSuite.scala |   4 +-
 ...lutenStreamingQueryStatusAndProgressSuite.scala |   4 +-
 .../sql/streaming/GlutenStreamingQuerySuite.scala  |  15 +--
 .../streaming/GlutenStreamingSelfUnionSuite.scala  |   6 +-
 ...enStreamingSessionWindowDistributionSuite.scala |   4 +-
 .../GlutenStreamingSessionWindowSuite.scala        |   4 +-
 ...reamingStateStoreFormatCompatibilitySuite.scala |   4 +-
 ...utenStreamingSymmetricHashJoinHelperSuite.scala |   4 +-
 .../GlutenTransformWithListStateSuite.scala        |   4 +-
 .../GlutenTransformWithListStateTTLSuite.scala     |   4 +-
 .../GlutenTransformWithMapStateSuite.scala         |   4 +-
 .../GlutenTransformWithMapStateTTLSuite.scala      |   4 +-
 .../GlutenTransformWithStateAvroSuite.scala        |   4 +-
 .../GlutenTransformWithStateChainingSuite.scala    |   4 +-
 .../GlutenTransformWithStateClusterSuite.scala     |   4 +-
 ...GlutenTransformWithStateInitialStateSuite.scala |   4 +-
 .../streaming/GlutenTransformWithStateSuite.scala  |   4 +-
 .../GlutenTransformWithStateUnsafeRowSuite.scala   |   4 +-
 .../GlutenTransformWithValueStateTTLSuite.scala    |   4 +-
 .../streaming/GlutenTriggerAvailableNowSuite.scala |   6 +-
 .../gluten/utils/velox/VeloxTestSettings.scala     |  46 +++----
 .../spark/sql/GlutenStreamingTestsTraits.scala     | 134 +++++++++++++++++++++
 .../GlutenAcceptsLatestSeenOffsetSuite.scala       |   4 +-
 .../streaming/GlutenEventTimeWatermarkSuite.scala  |   6 +-
 .../sql/streaming/GlutenFileStreamSinkSuite.scala  |   6 +-
 .../streaming/GlutenFileStreamSourceSuite.scala    |   6 +-
 .../streaming/GlutenFileStreamStressSuite.scala    |   4 +-
 ...pGroupsInPandasWithStateDistributionSuite.scala |   4 +-
 ...GlutenFlatMapGroupsInPandasWithStateSuite.scala |   4 +-
 ...enFlatMapGroupsWithStateDistributionSuite.scala |   4 +-
 .../GlutenFlatMapGroupsWithStateSuite.scala        |   6 +-
 ...atMapGroupsWithStateWithInitialStateSuite.scala |   4 +-
 .../streaming/GlutenMemorySourceStressSuite.scala  |   6 +-
 .../GlutenMultiStatefulOperatorsSuite.scala        |   4 +-
 .../streaming/GlutenReportSinkMetricsSuite.scala   |   6 +-
 .../GlutenStreamRealTimeModeAllowlistSuite.scala   |   4 +-
 .../GlutenStreamRealTimeModeE2ESuite.scala         |   4 +-
 .../streaming/GlutenStreamRealTimeModeSuite.scala  |   6 +-
 .../spark/sql/streaming/GlutenStreamSuite.scala    |   4 +-
 ...utenStreamingAggregationDistributionSuite.scala |   4 +-
 .../GlutenStreamingAggregationSuite.scala          |   8 +-
 ...enStreamingDeduplicationDistributionSuite.scala |   4 +-
 .../GlutenStreamingDeduplicationSuite.scala        |   6 +-
 ...treamingDeduplicationWithinWatermarkSuite.scala |   4 +-
 .../sql/streaming/GlutenStreamingJoinSuite.scala   |  14 ++-
 ...tenStreamingQueryHashPartitionVerifySuite.scala | 105 +++++++++++++++-
 .../GlutenStreamingQueryListenerSuite.scala        |   4 +-
 .../GlutenStreamingQueryListenersConfSuite.scala   |   4 +-
 .../GlutenStreamingQueryManagerSuite.scala         |   4 +-
 ...treamingQueryOptimizationCorrectnessSuite.scala |   4 +-
 ...lutenStreamingQueryStatusAndProgressSuite.scala |   4 +-
 .../sql/streaming/GlutenStreamingQuerySuite.scala  |  15 +--
 .../streaming/GlutenStreamingSelfUnionSuite.scala  |   6 +-
 ...enStreamingSessionWindowDistributionSuite.scala |   4 +-
 .../GlutenStreamingSessionWindowSuite.scala        |   4 +-
 ...reamingStateStoreFormatCompatibilitySuite.scala |   4 +-
 ...utenStreamingSymmetricHashJoinHelperSuite.scala |   4 +-
 .../GlutenTransformWithListStateSuite.scala        |   4 +-
 .../GlutenTransformWithListStateTTLSuite.scala     |   4 +-
 .../GlutenTransformWithMapStateSuite.scala         |   4 +-
 .../GlutenTransformWithMapStateTTLSuite.scala      |   4 +-
 .../GlutenTransformWithStateAvroSuite.scala        |   4 +-
 .../GlutenTransformWithStateChainingSuite.scala    |   4 +-
 .../GlutenTransformWithStateClusterSuite.scala     |   4 +-
 ...GlutenTransformWithStateInitialStateSuite.scala |   4 +-
 .../streaming/GlutenTransformWithStateSuite.scala  |   4 +-
 .../GlutenTransformWithStateUnsafeRowSuite.scala   |   4 +-
 .../GlutenTransformWithValueStateTTLSuite.scala    |   4 +-
 .../streaming/GlutenTriggerAvailableNowSuite.scala |   6 +-
 95 files changed, 762 insertions(+), 252 deletions(-)

diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/gluten/utils/velox/VeloxTestSettings.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/gluten/utils/velox/VeloxTestSettings.scala
index c6d77e28e2..ba8c773c97 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/gluten/utils/velox/VeloxTestSettings.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/gluten/utils/velox/VeloxTestSettings.scala
@@ -1167,8 +1167,6 @@ class VeloxTestSettings extends BackendTestSettings {
     .exclude("detect escaped path and report the migration guide")
     .exclude("ignore the escaped path check when the flag is off")
     .excludeByPrefix("SPARK-51187")
-    // Rewrite for the query plan check
-    .excludeByPrefix("SPARK-49905")
   enableSuite[GlutenQueryExecutionSuite]
     // Rewritten to set root logger level to INFO so that logs can be parsed
     .exclude("Logging plan changes for execution")
@@ -1181,45 +1179,49 @@ class VeloxTestSettings extends BackendTestSettings {
   enableSuite[GlutenSQLMetricsSuite]
   enableSuite[GlutenAcceptsLatestSeenOffsetSuite]
   enableSuite[GlutenCommitLogSuite]
-  // TODO: 4.x enableSuite[GlutenEventTimeWatermarkSuite]
+  enableSuite[GlutenEventTimeWatermarkSuite]
   enableSuite[GlutenFileStreamSinkV1Suite]
-  // TODO: 4.x enableSuite[GlutenFileStreamSinkV2Suite]  // 1 failure
+  enableSuite[GlutenFileStreamSinkV2Suite]
   enableSuite[GlutenFileStreamSourceStressTestSuite]
-  // TODO: 4.x enableSuite[GlutenFileStreamSourceSuite]
+  enableSuite[GlutenFileStreamSourceSuite]
   enableSuite[GlutenFileStreamStressSuite]
-  // TODO: 4.x 
enableSuite[GlutenFlatMapGroupsInPandasWithStateDistributionSuite]  // failures 
with GlutenPlugin
+  enableSuite[GlutenFlatMapGroupsInPandasWithStateDistributionSuite]
   enableSuite[GlutenFlatMapGroupsInPandasWithStateSuite]
-  // TODO: 4.x enableSuite[GlutenFlatMapGroupsWithStateDistributionSuite]
-  // TODO: 4.x enableSuite[GlutenFlatMapGroupsWithStateSuite]
+  enableSuite[GlutenFlatMapGroupsWithStateDistributionSuite]
+  enableSuite[GlutenFlatMapGroupsWithStateSuite]
   enableSuite[GlutenFlatMapGroupsWithStateWithInitialStateSuite]
   enableSuite[GlutenGroupStateSuite]
   enableSuite[GlutenLongOffsetSuite]
   enableSuite[GlutenMemorySourceStressSuite]
-  // TODO: 4.x enableSuite[GlutenMultiStatefulOperatorsSuite]  // 2 failures
+  enableSuite[GlutenMultiStatefulOperatorsSuite]
   enableSuite[GlutenReportSinkMetricsSuite]
-  // TODO: 4.x enableSuite[GlutenRocksDBStateStoreFlatMapGroupsWithStateSuite]
-  // TODO: 4.x enableSuite[GlutenRocksDBStateStoreStreamingAggregationSuite]
-  // TODO: 4.x enableSuite[GlutenRocksDBStateStoreStreamingDeduplicationSuite]
-  // TODO: 4.x enableSuite[GlutenStreamSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingAggregationDistributionSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingAggregationSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingDeduplicationDistributionSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingDeduplicationSuite]
+  enableSuite[GlutenRocksDBStateStoreFlatMapGroupsWithStateSuite]
+  enableSuite[GlutenRocksDBStateStoreStreamingAggregationSuite]
+    // Spark 4.x: these cases can hang waiting for expected failure with 
stateSchemaCheck off.
+    .excludeByPrefix("changing schema of state when restarting query - schema 
check off")
+  enableSuite[GlutenRocksDBStateStoreStreamingDeduplicationSuite]
+  enableSuite[GlutenStreamSuite]
+  enableSuite[GlutenStreamingAggregationDistributionSuite]
+  enableSuite[GlutenStreamingAggregationSuite]
+    // Spark 4.x: these cases can hang waiting for expected failure with 
stateSchemaCheck off.
+    .excludeByPrefix("changing schema of state when restarting query - schema 
check off")
+  enableSuite[GlutenStreamingDeduplicationDistributionSuite]
+  enableSuite[GlutenStreamingDeduplicationSuite]
   enableSuite[GlutenStreamingDeduplicationWithinWatermarkSuite]
   enableSuite[GlutenStreamingFullOuterJoinSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingInnerJoinSuite]
+  enableSuite[GlutenStreamingInnerJoinSuite]
   enableSuite[GlutenStreamingLeftSemiJoinSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingOuterJoinSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingQueryHashPartitionVerifySuite]
+  enableSuite[GlutenStreamingOuterJoinSuite]
+  enableSuite[GlutenStreamingQueryHashPartitionVerifySuite]
   enableSuite[GlutenStreamingQueryListenerSuite]
   enableSuite[GlutenStreamingQueryListenersConfSuite]
   enableSuite[GlutenStreamingQueryManagerSuite]
   enableSuite[GlutenStreamingQueryOptimizationCorrectnessSuite]
   enableSuite[GlutenStreamingQueryStatusAndProgressSuite]
   enableSuite[GlutenStreamingSelfUnionSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingSessionWindowDistributionSuite]
+  enableSuite[GlutenStreamingSessionWindowDistributionSuite]
   enableSuite[GlutenStreamingSessionWindowSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingStateStoreFormatCompatibilitySuite]
+  enableSuite[GlutenStreamingStateStoreFormatCompatibilitySuite]
   enableSuite[GlutenStreamingSymmetricHashJoinHelperSuite]
   enableSuite[GlutenTransformWithListStateSuite]
   enableSuite[GlutenTransformWithListStateTTLSuite]
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/GlutenStreamingTestsTraits.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/GlutenStreamingTestsTraits.scala
new file mode 100644
index 0000000000..210c124605
--- /dev/null
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/GlutenStreamingTestsTraits.scala
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.spark.sql
+
+import org.apache.spark.SparkConf
+
+import java.net.JarURLConnection
+import java.nio.file.{Files, Paths, StandardCopyOption}
+import java.util.jar.JarFile
+
+private[sql] object GlutenStructuredStreamingResourceBootstrap {
+  private val StructuredStreamingRoot = "structured-streaming/"
+  private val ResourceProbe = 
s"${StructuredStreamingRoot}partition-tests/randomSchemas"
+
+  @volatile private var initialized = false
+
+  def ensureResourcesOnFilesystem(): Unit = synchronized {
+    if (initialized) {
+      return
+    }
+
+    val maybeProbe = Option(getClass.getClassLoader.getResource(ResourceProbe))
+    maybeProbe.foreach {
+      probeUrl =>
+        if (probeUrl.getProtocol == "jar") {
+          copyStructuredStreamingResourcesFromJar(probeUrl)
+        }
+    }
+
+    initialized = true
+  }
+
+  private def copyStructuredStreamingResourcesFromJar(resourceUrl: 
java.net.URL): Unit = {
+    val maybeTestClassesRoot = Option(getClass.getResource("/"))
+      .filter(_.getProtocol == "file")
+      .map(url => Paths.get(url.toURI))
+    if (maybeTestClassesRoot.isEmpty) {
+      return
+    }
+
+    val testClassesRoot = maybeTestClassesRoot.get
+    if (Files.exists(testClassesRoot.resolve(ResourceProbe))) {
+      return
+    }
+
+    val connection = 
resourceUrl.openConnection().asInstanceOf[JarURLConnection]
+    val jarPath = Paths.get(connection.getJarFileURL.toURI)
+    val jarFile = new JarFile(jarPath.toFile)
+    try {
+      val entries = jarFile.entries()
+      while (entries.hasMoreElements) {
+        val entry = entries.nextElement()
+        val entryName = entry.getName
+        if (!entry.isDirectory && 
entryName.startsWith(StructuredStreamingRoot)) {
+          val targetPath = testClassesRoot.resolve(entryName)
+          Option(targetPath.getParent).foreach(Files.createDirectories(_))
+          val in = jarFile.getInputStream(entry)
+          try {
+            Files.copy(in, targetPath, StandardCopyOption.REPLACE_EXISTING)
+          } finally {
+            in.close()
+          }
+        }
+      }
+    } finally {
+      jarFile.close()
+    }
+  }
+}
+
+private[sql] object GlutenStreamingTestConf {
+  def withFallbackToVanilla(conf: SparkConf): SparkConf = {
+    GlutenStructuredStreamingResourceBootstrap.ensureResourcesOnFilesystem()
+    conf
+      .set("spark.driver.host", "127.0.0.1")
+      .set("spark.driver.bindAddress", "127.0.0.1")
+      .set("spark.sql.shuffle.partitions", "5")
+      .set("spark.shuffle.manager", "sort")
+      .set("spark.gluten.sql.columnar.batchscan", "false")
+      .set("spark.gluten.sql.columnar.filescan", "false")
+      .set("spark.gluten.sql.columnar.project", "false")
+      .set("spark.gluten.sql.columnar.filter", "false")
+      .set("spark.gluten.sql.columnar.sort", "false")
+      .set("spark.gluten.sql.columnar.window", "false")
+      .set("spark.gluten.sql.columnar.union", "false")
+      .set("spark.gluten.sql.columnar.expand", "false")
+      .set("spark.gluten.sql.columnar.generate", "false")
+      .set("spark.gluten.sql.columnar.coalesce", "false")
+      .set("spark.gluten.sql.columnar.range", "false")
+      .set("spark.gluten.sql.columnar.shuffle", "false")
+      .set("spark.gluten.sql.columnar.hashagg", "false")
+      .set("spark.gluten.sql.columnar.shuffledHashJoin", "false")
+      .set("spark.gluten.sql.columnar.sortMergeJoin", "false")
+      .set("spark.gluten.sql.columnar.broadcastExchange", "false")
+      .set("spark.gluten.sql.columnar.broadcastJoin", "false")
+      .set("spark.gluten.sql.columnar.appendData", "false")
+      .set("spark.gluten.sql.columnar.writeToDataSourceV2", "false")
+      .set("spark.gluten.sql.native.writer.enabled", "false")
+      .set("spark.gluten.sql.columnar.query.fallback.threshold", "0")
+      .set("spark.gluten.sql.columnar.wholeStage.fallback.threshold", "0")
+      .set("spark.gluten.sql.columnar.fallback.expressions.threshold", "0")
+      .set("spark.gluten.sql.columnar.fallback.preferColumnar", "false")
+      .set("spark.gluten.expression.blacklist", "collect_list,collect_set")
+  }
+}
+
+trait GlutenStreamingSQLTestsTrait extends GlutenSQLTestsTrait {
+  private val structuredStreamingResourcesInitialized: Unit =
+    GlutenStructuredStreamingResourceBootstrap.ensureResourcesOnFilesystem()
+
+  override def sparkConf: SparkConf = {
+    GlutenStreamingTestConf.withFallbackToVanilla(super.sparkConf)
+  }
+}
+
+trait GlutenStreamingVanillaFallbackTestsTrait extends 
GlutenStreamingSQLTestsTrait {
+  override def sparkConf: SparkConf = {
+    super.sparkConf
+  }
+}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenAcceptsLatestSeenOffsetSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenAcceptsLatestSeenOffsetSuite.scala
index 2bf23fbac1..f4f97cea5b 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenAcceptsLatestSeenOffsetSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenAcceptsLatestSeenOffsetSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenAcceptsLatestSeenOffsetSuite
   extends AcceptsLatestSeenOffsetSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenEventTimeWatermarkSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenEventTimeWatermarkSuite.scala
index ae006ee38a..e2699e97ec 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenEventTimeWatermarkSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenEventTimeWatermarkSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenEventTimeWatermarkSuite extends EventTimeWatermarkSuite with 
GlutenSQLTestsTrait {}
+class GlutenEventTimeWatermarkSuite
+  extends EventTimeWatermarkSuite
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSinkSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSinkSuite.scala
index 74091348ea..9d4ae3f7ff 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSinkSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSinkSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenFileStreamSinkV1Suite extends FileStreamSinkV1Suite with 
GlutenSQLTestsTrait {}
+class GlutenFileStreamSinkV1Suite extends FileStreamSinkV1Suite with 
GlutenStreamingSQLTestsTrait {}
 
-class GlutenFileStreamSinkV2Suite extends FileStreamSinkV2Suite with 
GlutenSQLTestsTrait {}
+class GlutenFileStreamSinkV2Suite extends FileStreamSinkV2Suite with 
GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSourceSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSourceSuite.scala
index fd681ffd10..b953f5a4ff 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSourceSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSourceSuite.scala
@@ -16,10 +16,10 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenFileStreamSourceSuite extends FileStreamSourceSuite with 
GlutenSQLTestsTrait {}
+class GlutenFileStreamSourceSuite extends FileStreamSourceSuite with 
GlutenStreamingSQLTestsTrait {}
 
 class GlutenFileStreamSourceStressTestSuite
   extends FileStreamSourceStressTestSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamStressSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamStressSuite.scala
index 566a5defe1..2df2b99101 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamStressSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamStressSuite.scala
@@ -16,6 +16,6 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenFileStreamStressSuite extends FileStreamStressSuite with 
GlutenSQLTestsTrait {}
+class GlutenFileStreamStressSuite extends FileStreamStressSuite with 
GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateDistributionSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateDistributionSuite.scala
index 2199e32a40..5b2ec04590 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateDistributionSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateDistributionSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenFlatMapGroupsInPandasWithStateDistributionSuite
   extends FlatMapGroupsInPandasWithStateDistributionSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateSuite.scala
index c653aa1d56..6d1ae5df23 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenFlatMapGroupsInPandasWithStateSuite
   extends FlatMapGroupsInPandasWithStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateDistributionSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateDistributionSuite.scala
index 343832f7ae..e9a0eee66c 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateDistributionSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateDistributionSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
 class GlutenFlatMapGroupsWithStateDistributionSuite
   extends FlatMapGroupsWithStateDistributionSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateSuite.scala
index 21d890a6cc..df7f30c14f 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateSuite.scala
@@ -16,12 +16,12 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenFlatMapGroupsWithStateSuite
   extends FlatMapGroupsWithStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
 
 class GlutenRocksDBStateStoreFlatMapGroupsWithStateSuite
   extends RocksDBStateStoreFlatMapGroupsWithStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateWithInitialStateSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateWithInitialStateSuite.scala
index 8ad6305992..f39b66480a 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateWithInitialStateSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateWithInitialStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenFlatMapGroupsWithStateWithInitialStateSuite
   extends FlatMapGroupsWithStateWithInitialStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenMemorySourceStressSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenMemorySourceStressSuite.scala
index ed28286fa6..468093cf03 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenMemorySourceStressSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenMemorySourceStressSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenMemorySourceStressSuite extends MemorySourceStressSuite with 
GlutenSQLTestsTrait {}
+class GlutenMemorySourceStressSuite
+  extends MemorySourceStressSuite
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenMultiStatefulOperatorsSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenMultiStatefulOperatorsSuite.scala
index 5860bf3b58..2177f48acb 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenMultiStatefulOperatorsSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenMultiStatefulOperatorsSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenMultiStatefulOperatorsSuite
   extends MultiStatefulOperatorsSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenReportSinkMetricsSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenReportSinkMetricsSuite.scala
index 32a340d7f9..052a1f6aff 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenReportSinkMetricsSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenReportSinkMetricsSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenReportSinkMetricsSuite extends ReportSinkMetricsSuite with 
GlutenSQLTestsTrait {}
+class GlutenReportSinkMetricsSuite
+  extends ReportSinkMetricsSuite
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamSuite.scala
index 7291881012..bd162bd6db 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamSuite.scala
@@ -16,6 +16,6 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenStreamSuite extends StreamSuite with GlutenSQLTestsTrait {}
+class GlutenStreamSuite extends StreamSuite with GlutenStreamingSQLTestsTrait 
{}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationDistributionSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationDistributionSuite.scala
index 37928f16ec..def343896f 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationDistributionSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationDistributionSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
 class GlutenStreamingAggregationDistributionSuite
   extends StreamingAggregationDistributionSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationSuite.scala
index d7d2af6e07..ab831aff95 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationSuite.scala
@@ -16,10 +16,12 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
-class GlutenStreamingAggregationSuite extends StreamingAggregationSuite with 
GlutenSQLTestsTrait {}
+class GlutenStreamingAggregationSuite
+  extends StreamingAggregationSuite
+  with GlutenStreamingVanillaFallbackTestsTrait {}
 
 class GlutenRocksDBStateStoreStreamingAggregationSuite
   extends RocksDBStateStoreStreamingAggregationSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationDistributionSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationDistributionSuite.scala
index b8adfbc86a..8fcb8faeab 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationDistributionSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationDistributionSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
 class GlutenStreamingDeduplicationDistributionSuite
   extends StreamingDeduplicationDistributionSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationSuite.scala
index 67c2813141..bfc50fc5ea 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationSuite.scala
@@ -16,12 +16,12 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingDeduplicationSuite
   extends StreamingDeduplicationSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
 
 class GlutenRocksDBStateStoreStreamingDeduplicationSuite
   extends RocksDBStateStoreStreamingDeduplicationSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationWithinWatermarkSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationWithinWatermarkSuite.scala
index dd555fd72a..e6aec89246 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationWithinWatermarkSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationWithinWatermarkSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingDeduplicationWithinWatermarkSuite
   extends StreamingDeduplicationWithinWatermarkSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingJoinSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingJoinSuite.scala
index 65489c981d..321c0fb559 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingJoinSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingJoinSuite.scala
@@ -16,16 +16,20 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
-class GlutenStreamingInnerJoinSuite extends StreamingInnerJoinSuite with 
GlutenSQLTestsTrait {}
+class GlutenStreamingInnerJoinSuite
+  extends StreamingInnerJoinSuite
+  with GlutenStreamingVanillaFallbackTestsTrait {}
 
-class GlutenStreamingOuterJoinSuite extends StreamingOuterJoinSuite with 
GlutenSQLTestsTrait {}
+class GlutenStreamingOuterJoinSuite
+  extends StreamingOuterJoinSuite
+  with GlutenStreamingVanillaFallbackTestsTrait {}
 
 class GlutenStreamingFullOuterJoinSuite
   extends StreamingFullOuterJoinSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
 
 class GlutenStreamingLeftSemiJoinSuite
   extends StreamingLeftSemiJoinSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryHashPartitionVerifySuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryHashPartitionVerifySuite.scala
index 82dbf96c78..ec6b482533 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryHashPartitionVerifySuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryHashPartitionVerifySuite.scala
@@ -16,8 +16,109 @@
  */
 package org.apache.spark.sql.streaming
 
+import org.apache.spark.SparkConf
+import org.apache.spark.sql.GlutenSQLTestsBaseTrait
+import org.apache.spark.sql.GlutenStreamingTestConf
 import org.apache.spark.sql.GlutenTestsCommonTrait
 
+import java.io.{File, FileOutputStream}
+import java.nio.file.Files
+
 class GlutenStreamingQueryHashPartitionVerifySuite
-  extends StreamingQueryHashPartitionVerifySuite
-  with GlutenTestsCommonTrait {}
+  extends {
+    private val sparkTestHomeInitialized: Unit =
+      GlutenStreamingQueryHashPartitionVerifySuite.initSparkTestHome()
+  }
+  with StreamingQueryHashPartitionVerifySuite
+  with GlutenTestsCommonTrait {
+
+  override def sparkConf: SparkConf = {
+    val conf = super.sparkConf
+    val warehousePath =
+      conf
+        .getOption("spark.sql.warehouse.dir")
+        .getOrElse(System.getProperty("java.io.tmpdir") + "/spark-warehouse")
+    GlutenStreamingTestConf.withFallbackToVanilla(
+      GlutenSQLTestsBaseTrait.nativeSparkConf(conf, warehousePath))
+  }
+}
+
+object GlutenStreamingQueryHashPartitionVerifySuite {
+  private val ResourcePath = "structured-streaming/partition-tests"
+  private val PartitionTestsRelativePath =
+    "sql/core/src/test/resources/structured-streaming/partition-tests"
+
+  private[streaming] def initSparkTestHome(): Unit = {
+    val existingValidSparkTestHome =
+      sys.props.get("spark.test.home").filter(isValidSparkTestHome)
+    if (existingValidSparkTestHome.isEmpty) {
+      val sparkTestHome = createSparkTestHomeFromResources()
+        .orElse(localSparkTestHome().filter(isValidSparkTestHome))
+        .orElse(sys.env.get("SPARK_HOME").filter(isValidSparkTestHome))
+
+      sparkTestHome.foreach(path => System.setProperty("spark.test.home", 
path))
+    }
+  }
+
+  private def localSparkTestHome(): Option[String] = {
+    val userDir = sys.props.getOrElse("user.dir", ".")
+    val moduleRelativeSparkTestHome =
+      new File(userDir, "../common/src/test/resources/spark-home")
+    val localSparkTestHome =
+      new File(userDir, "src/test/resources/spark-home")
+
+    if (moduleRelativeSparkTestHome.exists()) {
+      Some(moduleRelativeSparkTestHome.getAbsolutePath)
+    } else if (localSparkTestHome.exists()) {
+      Some(localSparkTestHome.getAbsolutePath)
+    } else {
+      None
+    }
+  }
+
+  private def createSparkTestHomeFromResources(): Option[String] = {
+    val randomSchemasPath = s"$ResourcePath/randomSchemas"
+    val rowsAndPartIdsPath = s"$ResourcePath/rowsAndPartIds"
+
+    val rootDir = Files.createTempDirectory("gluten-spark-test-home").toFile
+    val partitionTestsDir = new File(rootDir, PartitionTestsRelativePath)
+
+    if (!partitionTestsDir.mkdirs() && !partitionTestsDir.exists()) {
+      None
+    } else {
+      val copiedRandomSchemas =
+        copyResource(randomSchemasPath, new File(partitionTestsDir, 
"randomSchemas"))
+      val copiedRowsAndPartIds =
+        copyResource(rowsAndPartIdsPath, new File(partitionTestsDir, 
"rowsAndPartIds"))
+
+      if (copiedRandomSchemas && copiedRowsAndPartIds) {
+        rootDir.deleteOnExit()
+        Some(rootDir.getAbsolutePath).filter(isValidSparkTestHome)
+      } else {
+        None
+      }
+    }
+  }
+
+  private def isValidSparkTestHome(path: String): Boolean = {
+    val partitionTestsDir = new File(path, PartitionTestsRelativePath)
+    val randomSchemas = new File(partitionTestsDir, "randomSchemas")
+    val rowsAndPartIds = new File(partitionTestsDir, "rowsAndPartIds")
+    randomSchemas.exists() && rowsAndPartIds.exists()
+  }
+
+  private def copyResource(resourcePath: String, targetFile: File): Boolean = {
+    val in = Option(getClass.getClassLoader.getResourceAsStream(resourcePath))
+    in.exists {
+      is =>
+        val out = new FileOutputStream(targetFile)
+        try {
+          is.transferTo(out)
+          true
+        } finally {
+          out.close()
+          is.close()
+        }
+    }
+  }
+}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenerSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenerSuite.scala
index 43793e599a..3f3122a648 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenerSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenerSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingQueryListenerSuite
   extends StreamingQueryListenerSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenersConfSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenersConfSuite.scala
index 785fa418ea..1db79b5424 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenersConfSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenersConfSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingQueryListenersConfSuite
   extends StreamingQueryListenersConfSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryManagerSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryManagerSuite.scala
index 5629f12bec..a93c888435 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryManagerSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryManagerSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingQueryManagerSuite
   extends StreamingQueryManagerSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryOptimizationCorrectnessSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryOptimizationCorrectnessSuite.scala
index 3503398148..a607af941f 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryOptimizationCorrectnessSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryOptimizationCorrectnessSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingQueryOptimizationCorrectnessSuite
   extends StreamingQueryOptimizationCorrectnessSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryStatusAndProgressSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryStatusAndProgressSuite.scala
index 921e20574f..bc3d6b20a2 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryStatusAndProgressSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryStatusAndProgressSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingQueryStatusAndProgressSuite
   extends StreamingQueryStatusAndProgressSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQuerySuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQuerySuite.scala
index 7f7000c33c..0926fc00a6 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQuerySuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQuerySuite.scala
@@ -16,12 +16,11 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
-import org.apache.spark.sql.execution.ColumnarShuffleExchangeExec
-import org.apache.spark.sql.execution.exchange.REQUIRED_BY_STATEFUL_OPERATOR
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
+import org.apache.spark.sql.execution.exchange.{REQUIRED_BY_STATEFUL_OPERATOR, 
ShuffleExchangeLike}
 import org.apache.spark.sql.execution.streaming.MemoryStream
 
-class GlutenStreamingQuerySuite extends StreamingQuerySuite with 
GlutenSQLTestsTrait {
+class GlutenStreamingQuerySuite extends StreamingQuerySuite with 
GlutenStreamingSQLTestsTrait {
 
   import testImplicits._
 
@@ -38,11 +37,13 @@ class GlutenStreamingQuerySuite extends StreamingQuerySuite 
with GlutenSQLTestsT
       Execute {
         qe =>
           val shuffleOpt = qe.lastExecution.executedPlan.collect {
-            case s: ColumnarShuffleExchangeExec => s
+            case s: ShuffleExchangeLike if s.shuffleOrigin == 
REQUIRED_BY_STATEFUL_OPERATOR => s
           }
 
-          assert(shuffleOpt.nonEmpty, "No shuffle exchange found in the query 
plan")
-          assert(shuffleOpt.head.shuffleOrigin === 
REQUIRED_BY_STATEFUL_OPERATOR)
+          assert(
+            shuffleOpt.nonEmpty,
+            s"No stateful shuffle exchange found in the query plan: " +
+              qe.lastExecution.executedPlan)
       }
     )
   }
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSelfUnionSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSelfUnionSuite.scala
index 4f5a84d642..fdab47efd7 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSelfUnionSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSelfUnionSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenStreamingSelfUnionSuite extends StreamingSelfUnionSuite with 
GlutenSQLTestsTrait {}
+class GlutenStreamingSelfUnionSuite
+  extends StreamingSelfUnionSuite
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowDistributionSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowDistributionSuite.scala
index de167d74f1..d21a95ff01 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowDistributionSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowDistributionSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
 class GlutenStreamingSessionWindowDistributionSuite
   extends StreamingSessionWindowDistributionSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowSuite.scala
index 00888b1a93..45e0c6eb2e 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingSessionWindowSuite
   extends StreamingSessionWindowSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingStateStoreFormatCompatibilitySuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingStateStoreFormatCompatibilitySuite.scala
index 2fa4b17fc9..acb7ebb3ce 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingStateStoreFormatCompatibilitySuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingStateStoreFormatCompatibilitySuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
 class GlutenStreamingStateStoreFormatCompatibilitySuite
   extends StreamingStateStoreFormatCompatibilitySuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSymmetricHashJoinHelperSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSymmetricHashJoinHelperSuite.scala
index 5dd65c179f..9020a2702b 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSymmetricHashJoinHelperSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSymmetricHashJoinHelperSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingSymmetricHashJoinHelperSuite
   extends StreamingSymmetricHashJoinHelperSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateSuite.scala
index 907e048a33..8ad2aafaff 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithListStateSuite
   extends TransformWithListStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateTTLSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateTTLSuite.scala
index b785c7db33..315021d65a 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateTTLSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateTTLSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithListStateTTLSuite
   extends TransformWithListStateTTLSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateSuite.scala
index b3742f6ee0..650a36271e 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithMapStateSuite
   extends TransformWithMapStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateTTLSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateTTLSuite.scala
index 48b4d634bd..0c20e0ce62 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateTTLSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateTTLSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithMapStateTTLSuite
   extends TransformWithMapStateTTLSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateAvroSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateAvroSuite.scala
index 61336607ed..95aa8433b0 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateAvroSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateAvroSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateAvroSuite
   extends TransformWithStateAvroSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateChainingSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateChainingSuite.scala
index 852f4161d8..e2d475e997 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateChainingSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateChainingSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateChainingSuite
   extends TransformWithStateChainingSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateClusterSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateClusterSuite.scala
index 3ba4436b0a..dbe1fefc5e 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateClusterSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateClusterSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateClusterSuite
   extends TransformWithStateClusterSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateInitialStateSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateInitialStateSuite.scala
index 5727122b4a..1ecfb10525 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateInitialStateSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateInitialStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateInitialStateSuite
   extends TransformWithStateInitialStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateSuite.scala
index 6c02a69c2c..a0c6a2f990 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateValidationSuite
   extends TransformWithStateValidationSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateUnsafeRowSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateUnsafeRowSuite.scala
index 40802ce46c..fde363a580 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateUnsafeRowSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateUnsafeRowSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateUnsafeRowSuite
   extends TransformWithStateUnsafeRowSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithValueStateTTLSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithValueStateTTLSuite.scala
index 6aeb84f9f1..1c5ec31909 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithValueStateTTLSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithValueStateTTLSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithValueStateTTLSuite
   extends TransformWithValueStateTTLSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTriggerAvailableNowSuite.scala
 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTriggerAvailableNowSuite.scala
index 89fb3cf5f4..efab0a270b 100644
--- 
a/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTriggerAvailableNowSuite.scala
+++ 
b/gluten-ut/spark40/src/test/scala/org/apache/spark/sql/streaming/GlutenTriggerAvailableNowSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenTriggerAvailableNowSuite extends TriggerAvailableNowSuite with 
GlutenSQLTestsTrait {}
+class GlutenTriggerAvailableNowSuite
+  extends TriggerAvailableNowSuite
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/gluten/utils/velox/VeloxTestSettings.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/gluten/utils/velox/VeloxTestSettings.scala
index 5baf6e186c..616cb9ac7d 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/gluten/utils/velox/VeloxTestSettings.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/gluten/utils/velox/VeloxTestSettings.scala
@@ -1171,8 +1171,6 @@ class VeloxTestSettings extends BackendTestSettings {
     .exclude("detect escaped path and report the migration guide")
     .exclude("ignore the escaped path check when the flag is off")
     .excludeByPrefix("SPARK-51187")
-    // Rewrite for the query plan check
-    .excludeByPrefix("SPARK-49905")
     // TODO: fix on Spark-4.1 introduced by 
https://github.com/apache/spark/pull/52645
     .exclude("SPARK-53942: changing the number of stateless shuffle partitions 
via config")
     .exclude("SPARK-53942: stateful shuffle partitions are retained from old 
checkpoint")
@@ -1205,45 +1203,49 @@ class VeloxTestSettings extends BackendTestSettings {
   enableSuite[GlutenSQLMetricsSuite]
   enableSuite[GlutenAcceptsLatestSeenOffsetSuite]
   enableSuite[GlutenCommitLogSuite]
-  // TODO: 4.x enableSuite[GlutenEventTimeWatermarkSuite]
+  enableSuite[GlutenEventTimeWatermarkSuite]
   enableSuite[GlutenFileStreamSinkV1Suite]
-  // TODO: 4.x enableSuite[GlutenFileStreamSinkV2Suite]  // 1 failure
+  enableSuite[GlutenFileStreamSinkV2Suite]
   enableSuite[GlutenFileStreamSourceStressTestSuite]
-  // TODO: 4.x enableSuite[GlutenFileStreamSourceSuite]
+  enableSuite[GlutenFileStreamSourceSuite]
   enableSuite[GlutenFileStreamStressSuite]
-  // TODO: 4.x 
enableSuite[GlutenFlatMapGroupsInPandasWithStateDistributionSuite]  // failures 
with GlutenPlugin
+  enableSuite[GlutenFlatMapGroupsInPandasWithStateDistributionSuite]
   enableSuite[GlutenFlatMapGroupsInPandasWithStateSuite]
-  // TODO: 4.x enableSuite[GlutenFlatMapGroupsWithStateDistributionSuite]
-  // TODO: 4.x enableSuite[GlutenFlatMapGroupsWithStateSuite]
+  enableSuite[GlutenFlatMapGroupsWithStateDistributionSuite]
+  enableSuite[GlutenFlatMapGroupsWithStateSuite]
   enableSuite[GlutenFlatMapGroupsWithStateWithInitialStateSuite]
   enableSuite[GlutenGroupStateSuite]
   enableSuite[GlutenLongOffsetSuite]
   enableSuite[GlutenMemorySourceStressSuite]
-  // TODO: 4.x enableSuite[GlutenMultiStatefulOperatorsSuite]  // 2 failures
+  enableSuite[GlutenMultiStatefulOperatorsSuite]
   enableSuite[GlutenReportSinkMetricsSuite]
-  // TODO: 4.x enableSuite[GlutenRocksDBStateStoreFlatMapGroupsWithStateSuite]
-  // TODO: 4.x enableSuite[GlutenRocksDBStateStoreStreamingAggregationSuite]
-  // TODO: 4.x enableSuite[GlutenRocksDBStateStoreStreamingDeduplicationSuite]
-  // TODO: 4.x enableSuite[GlutenStreamSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingAggregationDistributionSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingAggregationSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingDeduplicationDistributionSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingDeduplicationSuite]
+  enableSuite[GlutenRocksDBStateStoreFlatMapGroupsWithStateSuite]
+  enableSuite[GlutenRocksDBStateStoreStreamingAggregationSuite]
+    // Spark 4.x: these cases can hang waiting for expected failure with 
stateSchemaCheck off.
+    .excludeByPrefix("changing schema of state when restarting query - schema 
check off")
+  enableSuite[GlutenRocksDBStateStoreStreamingDeduplicationSuite]
+  enableSuite[GlutenStreamSuite]
+  enableSuite[GlutenStreamingAggregationDistributionSuite]
+  enableSuite[GlutenStreamingAggregationSuite]
+    // Spark 4.x: these cases can hang waiting for expected failure with 
stateSchemaCheck off.
+    .excludeByPrefix("changing schema of state when restarting query - schema 
check off")
+  enableSuite[GlutenStreamingDeduplicationDistributionSuite]
+  enableSuite[GlutenStreamingDeduplicationSuite]
   enableSuite[GlutenStreamingDeduplicationWithinWatermarkSuite]
   enableSuite[GlutenStreamingFullOuterJoinSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingInnerJoinSuite]
+  enableSuite[GlutenStreamingInnerJoinSuite]
   enableSuite[GlutenStreamingLeftSemiJoinSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingOuterJoinSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingQueryHashPartitionVerifySuite]
+  enableSuite[GlutenStreamingOuterJoinSuite]
+  enableSuite[GlutenStreamingQueryHashPartitionVerifySuite]
   enableSuite[GlutenStreamingQueryListenerSuite]
   enableSuite[GlutenStreamingQueryListenersConfSuite]
   enableSuite[GlutenStreamingQueryManagerSuite]
   enableSuite[GlutenStreamingQueryOptimizationCorrectnessSuite]
   enableSuite[GlutenStreamingQueryStatusAndProgressSuite]
   enableSuite[GlutenStreamingSelfUnionSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingSessionWindowDistributionSuite]
+  enableSuite[GlutenStreamingSessionWindowDistributionSuite]
   enableSuite[GlutenStreamingSessionWindowSuite]
-  // TODO: 4.x enableSuite[GlutenStreamingStateStoreFormatCompatibilitySuite]
+  enableSuite[GlutenStreamingStateStoreFormatCompatibilitySuite]
   enableSuite[GlutenStreamingSymmetricHashJoinHelperSuite]
   enableSuite[GlutenTransformWithListStateSuite]
   enableSuite[GlutenTransformWithListStateTTLSuite]
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/GlutenStreamingTestsTraits.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/GlutenStreamingTestsTraits.scala
new file mode 100644
index 0000000000..210c124605
--- /dev/null
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/GlutenStreamingTestsTraits.scala
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.spark.sql
+
+import org.apache.spark.SparkConf
+
+import java.net.JarURLConnection
+import java.nio.file.{Files, Paths, StandardCopyOption}
+import java.util.jar.JarFile
+
+private[sql] object GlutenStructuredStreamingResourceBootstrap {
+  private val StructuredStreamingRoot = "structured-streaming/"
+  private val ResourceProbe = 
s"${StructuredStreamingRoot}partition-tests/randomSchemas"
+
+  @volatile private var initialized = false
+
+  def ensureResourcesOnFilesystem(): Unit = synchronized {
+    if (initialized) {
+      return
+    }
+
+    val maybeProbe = Option(getClass.getClassLoader.getResource(ResourceProbe))
+    maybeProbe.foreach {
+      probeUrl =>
+        if (probeUrl.getProtocol == "jar") {
+          copyStructuredStreamingResourcesFromJar(probeUrl)
+        }
+    }
+
+    initialized = true
+  }
+
+  private def copyStructuredStreamingResourcesFromJar(resourceUrl: 
java.net.URL): Unit = {
+    val maybeTestClassesRoot = Option(getClass.getResource("/"))
+      .filter(_.getProtocol == "file")
+      .map(url => Paths.get(url.toURI))
+    if (maybeTestClassesRoot.isEmpty) {
+      return
+    }
+
+    val testClassesRoot = maybeTestClassesRoot.get
+    if (Files.exists(testClassesRoot.resolve(ResourceProbe))) {
+      return
+    }
+
+    val connection = 
resourceUrl.openConnection().asInstanceOf[JarURLConnection]
+    val jarPath = Paths.get(connection.getJarFileURL.toURI)
+    val jarFile = new JarFile(jarPath.toFile)
+    try {
+      val entries = jarFile.entries()
+      while (entries.hasMoreElements) {
+        val entry = entries.nextElement()
+        val entryName = entry.getName
+        if (!entry.isDirectory && 
entryName.startsWith(StructuredStreamingRoot)) {
+          val targetPath = testClassesRoot.resolve(entryName)
+          Option(targetPath.getParent).foreach(Files.createDirectories(_))
+          val in = jarFile.getInputStream(entry)
+          try {
+            Files.copy(in, targetPath, StandardCopyOption.REPLACE_EXISTING)
+          } finally {
+            in.close()
+          }
+        }
+      }
+    } finally {
+      jarFile.close()
+    }
+  }
+}
+
+private[sql] object GlutenStreamingTestConf {
+  def withFallbackToVanilla(conf: SparkConf): SparkConf = {
+    GlutenStructuredStreamingResourceBootstrap.ensureResourcesOnFilesystem()
+    conf
+      .set("spark.driver.host", "127.0.0.1")
+      .set("spark.driver.bindAddress", "127.0.0.1")
+      .set("spark.sql.shuffle.partitions", "5")
+      .set("spark.shuffle.manager", "sort")
+      .set("spark.gluten.sql.columnar.batchscan", "false")
+      .set("spark.gluten.sql.columnar.filescan", "false")
+      .set("spark.gluten.sql.columnar.project", "false")
+      .set("spark.gluten.sql.columnar.filter", "false")
+      .set("spark.gluten.sql.columnar.sort", "false")
+      .set("spark.gluten.sql.columnar.window", "false")
+      .set("spark.gluten.sql.columnar.union", "false")
+      .set("spark.gluten.sql.columnar.expand", "false")
+      .set("spark.gluten.sql.columnar.generate", "false")
+      .set("spark.gluten.sql.columnar.coalesce", "false")
+      .set("spark.gluten.sql.columnar.range", "false")
+      .set("spark.gluten.sql.columnar.shuffle", "false")
+      .set("spark.gluten.sql.columnar.hashagg", "false")
+      .set("spark.gluten.sql.columnar.shuffledHashJoin", "false")
+      .set("spark.gluten.sql.columnar.sortMergeJoin", "false")
+      .set("spark.gluten.sql.columnar.broadcastExchange", "false")
+      .set("spark.gluten.sql.columnar.broadcastJoin", "false")
+      .set("spark.gluten.sql.columnar.appendData", "false")
+      .set("spark.gluten.sql.columnar.writeToDataSourceV2", "false")
+      .set("spark.gluten.sql.native.writer.enabled", "false")
+      .set("spark.gluten.sql.columnar.query.fallback.threshold", "0")
+      .set("spark.gluten.sql.columnar.wholeStage.fallback.threshold", "0")
+      .set("spark.gluten.sql.columnar.fallback.expressions.threshold", "0")
+      .set("spark.gluten.sql.columnar.fallback.preferColumnar", "false")
+      .set("spark.gluten.expression.blacklist", "collect_list,collect_set")
+  }
+}
+
+trait GlutenStreamingSQLTestsTrait extends GlutenSQLTestsTrait {
+  private val structuredStreamingResourcesInitialized: Unit =
+    GlutenStructuredStreamingResourceBootstrap.ensureResourcesOnFilesystem()
+
+  override def sparkConf: SparkConf = {
+    GlutenStreamingTestConf.withFallbackToVanilla(super.sparkConf)
+  }
+}
+
+trait GlutenStreamingVanillaFallbackTestsTrait extends 
GlutenStreamingSQLTestsTrait {
+  override def sparkConf: SparkConf = {
+    super.sparkConf
+  }
+}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenAcceptsLatestSeenOffsetSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenAcceptsLatestSeenOffsetSuite.scala
index 2bf23fbac1..f4f97cea5b 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenAcceptsLatestSeenOffsetSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenAcceptsLatestSeenOffsetSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenAcceptsLatestSeenOffsetSuite
   extends AcceptsLatestSeenOffsetSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenEventTimeWatermarkSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenEventTimeWatermarkSuite.scala
index ae006ee38a..e2699e97ec 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenEventTimeWatermarkSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenEventTimeWatermarkSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenEventTimeWatermarkSuite extends EventTimeWatermarkSuite with 
GlutenSQLTestsTrait {}
+class GlutenEventTimeWatermarkSuite
+  extends EventTimeWatermarkSuite
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSinkSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSinkSuite.scala
index 74091348ea..9d4ae3f7ff 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSinkSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSinkSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenFileStreamSinkV1Suite extends FileStreamSinkV1Suite with 
GlutenSQLTestsTrait {}
+class GlutenFileStreamSinkV1Suite extends FileStreamSinkV1Suite with 
GlutenStreamingSQLTestsTrait {}
 
-class GlutenFileStreamSinkV2Suite extends FileStreamSinkV2Suite with 
GlutenSQLTestsTrait {}
+class GlutenFileStreamSinkV2Suite extends FileStreamSinkV2Suite with 
GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSourceSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSourceSuite.scala
index fd681ffd10..b953f5a4ff 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSourceSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamSourceSuite.scala
@@ -16,10 +16,10 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenFileStreamSourceSuite extends FileStreamSourceSuite with 
GlutenSQLTestsTrait {}
+class GlutenFileStreamSourceSuite extends FileStreamSourceSuite with 
GlutenStreamingSQLTestsTrait {}
 
 class GlutenFileStreamSourceStressTestSuite
   extends FileStreamSourceStressTestSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamStressSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamStressSuite.scala
index 566a5defe1..2df2b99101 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamStressSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFileStreamStressSuite.scala
@@ -16,6 +16,6 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenFileStreamStressSuite extends FileStreamStressSuite with 
GlutenSQLTestsTrait {}
+class GlutenFileStreamStressSuite extends FileStreamStressSuite with 
GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateDistributionSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateDistributionSuite.scala
index 2199e32a40..5b2ec04590 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateDistributionSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateDistributionSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenFlatMapGroupsInPandasWithStateDistributionSuite
   extends FlatMapGroupsInPandasWithStateDistributionSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateSuite.scala
index c653aa1d56..6d1ae5df23 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsInPandasWithStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenFlatMapGroupsInPandasWithStateSuite
   extends FlatMapGroupsInPandasWithStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateDistributionSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateDistributionSuite.scala
index 343832f7ae..e9a0eee66c 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateDistributionSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateDistributionSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
 class GlutenFlatMapGroupsWithStateDistributionSuite
   extends FlatMapGroupsWithStateDistributionSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateSuite.scala
index 21d890a6cc..df7f30c14f 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateSuite.scala
@@ -16,12 +16,12 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenFlatMapGroupsWithStateSuite
   extends FlatMapGroupsWithStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
 
 class GlutenRocksDBStateStoreFlatMapGroupsWithStateSuite
   extends RocksDBStateStoreFlatMapGroupsWithStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateWithInitialStateSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateWithInitialStateSuite.scala
index 8ad6305992..f39b66480a 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateWithInitialStateSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenFlatMapGroupsWithStateWithInitialStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenFlatMapGroupsWithStateWithInitialStateSuite
   extends FlatMapGroupsWithStateWithInitialStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenMemorySourceStressSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenMemorySourceStressSuite.scala
index ed28286fa6..468093cf03 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenMemorySourceStressSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenMemorySourceStressSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenMemorySourceStressSuite extends MemorySourceStressSuite with 
GlutenSQLTestsTrait {}
+class GlutenMemorySourceStressSuite
+  extends MemorySourceStressSuite
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenMultiStatefulOperatorsSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenMultiStatefulOperatorsSuite.scala
index 5860bf3b58..2177f48acb 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenMultiStatefulOperatorsSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenMultiStatefulOperatorsSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenMultiStatefulOperatorsSuite
   extends MultiStatefulOperatorsSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenReportSinkMetricsSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenReportSinkMetricsSuite.scala
index 32a340d7f9..052a1f6aff 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenReportSinkMetricsSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenReportSinkMetricsSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenReportSinkMetricsSuite extends ReportSinkMetricsSuite with 
GlutenSQLTestsTrait {}
+class GlutenReportSinkMetricsSuite
+  extends ReportSinkMetricsSuite
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeAllowlistSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeAllowlistSuite.scala
index 2aaf0d8eea..75268ae860 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeAllowlistSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeAllowlistSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamRealTimeModeAllowlistSuite
   extends StreamRealTimeModeAllowlistSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeE2ESuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeE2ESuite.scala
index c9effaf52a..92919883e3 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeE2ESuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeE2ESuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamRealTimeModeE2ESuite
   extends StreamRealTimeModeE2ESuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeSuite.scala
index de80b65b64..687d0e819a 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamRealTimeModeSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenStreamRealTimeModeSuite extends StreamRealTimeModeSuite with 
GlutenSQLTestsTrait {}
+class GlutenStreamRealTimeModeSuite
+  extends StreamRealTimeModeSuite
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamSuite.scala
index 7291881012..bd162bd6db 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamSuite.scala
@@ -16,6 +16,6 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenStreamSuite extends StreamSuite with GlutenSQLTestsTrait {}
+class GlutenStreamSuite extends StreamSuite with GlutenStreamingSQLTestsTrait 
{}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationDistributionSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationDistributionSuite.scala
index 37928f16ec..def343896f 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationDistributionSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationDistributionSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
 class GlutenStreamingAggregationDistributionSuite
   extends StreamingAggregationDistributionSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationSuite.scala
index d7d2af6e07..ab831aff95 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingAggregationSuite.scala
@@ -16,10 +16,12 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
-class GlutenStreamingAggregationSuite extends StreamingAggregationSuite with 
GlutenSQLTestsTrait {}
+class GlutenStreamingAggregationSuite
+  extends StreamingAggregationSuite
+  with GlutenStreamingVanillaFallbackTestsTrait {}
 
 class GlutenRocksDBStateStoreStreamingAggregationSuite
   extends RocksDBStateStoreStreamingAggregationSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationDistributionSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationDistributionSuite.scala
index b8adfbc86a..8fcb8faeab 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationDistributionSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationDistributionSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
 class GlutenStreamingDeduplicationDistributionSuite
   extends StreamingDeduplicationDistributionSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationSuite.scala
index 67c2813141..bfc50fc5ea 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationSuite.scala
@@ -16,12 +16,12 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingDeduplicationSuite
   extends StreamingDeduplicationSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
 
 class GlutenRocksDBStateStoreStreamingDeduplicationSuite
   extends RocksDBStateStoreStreamingDeduplicationSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationWithinWatermarkSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationWithinWatermarkSuite.scala
index dd555fd72a..e6aec89246 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationWithinWatermarkSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingDeduplicationWithinWatermarkSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingDeduplicationWithinWatermarkSuite
   extends StreamingDeduplicationWithinWatermarkSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingJoinSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingJoinSuite.scala
index 65489c981d..321c0fb559 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingJoinSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingJoinSuite.scala
@@ -16,16 +16,20 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
-class GlutenStreamingInnerJoinSuite extends StreamingInnerJoinSuite with 
GlutenSQLTestsTrait {}
+class GlutenStreamingInnerJoinSuite
+  extends StreamingInnerJoinSuite
+  with GlutenStreamingVanillaFallbackTestsTrait {}
 
-class GlutenStreamingOuterJoinSuite extends StreamingOuterJoinSuite with 
GlutenSQLTestsTrait {}
+class GlutenStreamingOuterJoinSuite
+  extends StreamingOuterJoinSuite
+  with GlutenStreamingVanillaFallbackTestsTrait {}
 
 class GlutenStreamingFullOuterJoinSuite
   extends StreamingFullOuterJoinSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
 
 class GlutenStreamingLeftSemiJoinSuite
   extends StreamingLeftSemiJoinSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryHashPartitionVerifySuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryHashPartitionVerifySuite.scala
index 82dbf96c78..ec6b482533 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryHashPartitionVerifySuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryHashPartitionVerifySuite.scala
@@ -16,8 +16,109 @@
  */
 package org.apache.spark.sql.streaming
 
+import org.apache.spark.SparkConf
+import org.apache.spark.sql.GlutenSQLTestsBaseTrait
+import org.apache.spark.sql.GlutenStreamingTestConf
 import org.apache.spark.sql.GlutenTestsCommonTrait
 
+import java.io.{File, FileOutputStream}
+import java.nio.file.Files
+
 class GlutenStreamingQueryHashPartitionVerifySuite
-  extends StreamingQueryHashPartitionVerifySuite
-  with GlutenTestsCommonTrait {}
+  extends {
+    private val sparkTestHomeInitialized: Unit =
+      GlutenStreamingQueryHashPartitionVerifySuite.initSparkTestHome()
+  }
+  with StreamingQueryHashPartitionVerifySuite
+  with GlutenTestsCommonTrait {
+
+  override def sparkConf: SparkConf = {
+    val conf = super.sparkConf
+    val warehousePath =
+      conf
+        .getOption("spark.sql.warehouse.dir")
+        .getOrElse(System.getProperty("java.io.tmpdir") + "/spark-warehouse")
+    GlutenStreamingTestConf.withFallbackToVanilla(
+      GlutenSQLTestsBaseTrait.nativeSparkConf(conf, warehousePath))
+  }
+}
+
+object GlutenStreamingQueryHashPartitionVerifySuite {
+  private val ResourcePath = "structured-streaming/partition-tests"
+  private val PartitionTestsRelativePath =
+    "sql/core/src/test/resources/structured-streaming/partition-tests"
+
+  private[streaming] def initSparkTestHome(): Unit = {
+    val existingValidSparkTestHome =
+      sys.props.get("spark.test.home").filter(isValidSparkTestHome)
+    if (existingValidSparkTestHome.isEmpty) {
+      val sparkTestHome = createSparkTestHomeFromResources()
+        .orElse(localSparkTestHome().filter(isValidSparkTestHome))
+        .orElse(sys.env.get("SPARK_HOME").filter(isValidSparkTestHome))
+
+      sparkTestHome.foreach(path => System.setProperty("spark.test.home", 
path))
+    }
+  }
+
+  private def localSparkTestHome(): Option[String] = {
+    val userDir = sys.props.getOrElse("user.dir", ".")
+    val moduleRelativeSparkTestHome =
+      new File(userDir, "../common/src/test/resources/spark-home")
+    val localSparkTestHome =
+      new File(userDir, "src/test/resources/spark-home")
+
+    if (moduleRelativeSparkTestHome.exists()) {
+      Some(moduleRelativeSparkTestHome.getAbsolutePath)
+    } else if (localSparkTestHome.exists()) {
+      Some(localSparkTestHome.getAbsolutePath)
+    } else {
+      None
+    }
+  }
+
+  private def createSparkTestHomeFromResources(): Option[String] = {
+    val randomSchemasPath = s"$ResourcePath/randomSchemas"
+    val rowsAndPartIdsPath = s"$ResourcePath/rowsAndPartIds"
+
+    val rootDir = Files.createTempDirectory("gluten-spark-test-home").toFile
+    val partitionTestsDir = new File(rootDir, PartitionTestsRelativePath)
+
+    if (!partitionTestsDir.mkdirs() && !partitionTestsDir.exists()) {
+      None
+    } else {
+      val copiedRandomSchemas =
+        copyResource(randomSchemasPath, new File(partitionTestsDir, 
"randomSchemas"))
+      val copiedRowsAndPartIds =
+        copyResource(rowsAndPartIdsPath, new File(partitionTestsDir, 
"rowsAndPartIds"))
+
+      if (copiedRandomSchemas && copiedRowsAndPartIds) {
+        rootDir.deleteOnExit()
+        Some(rootDir.getAbsolutePath).filter(isValidSparkTestHome)
+      } else {
+        None
+      }
+    }
+  }
+
+  private def isValidSparkTestHome(path: String): Boolean = {
+    val partitionTestsDir = new File(path, PartitionTestsRelativePath)
+    val randomSchemas = new File(partitionTestsDir, "randomSchemas")
+    val rowsAndPartIds = new File(partitionTestsDir, "rowsAndPartIds")
+    randomSchemas.exists() && rowsAndPartIds.exists()
+  }
+
+  private def copyResource(resourcePath: String, targetFile: File): Boolean = {
+    val in = Option(getClass.getClassLoader.getResourceAsStream(resourcePath))
+    in.exists {
+      is =>
+        val out = new FileOutputStream(targetFile)
+        try {
+          is.transferTo(out)
+          true
+        } finally {
+          out.close()
+          is.close()
+        }
+    }
+  }
+}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenerSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenerSuite.scala
index 43793e599a..3f3122a648 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenerSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenerSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingQueryListenerSuite
   extends StreamingQueryListenerSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenersConfSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenersConfSuite.scala
index 785fa418ea..1db79b5424 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenersConfSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryListenersConfSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingQueryListenersConfSuite
   extends StreamingQueryListenersConfSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryManagerSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryManagerSuite.scala
index 5629f12bec..a93c888435 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryManagerSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryManagerSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingQueryManagerSuite
   extends StreamingQueryManagerSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryOptimizationCorrectnessSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryOptimizationCorrectnessSuite.scala
index 3503398148..a607af941f 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryOptimizationCorrectnessSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryOptimizationCorrectnessSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingQueryOptimizationCorrectnessSuite
   extends StreamingQueryOptimizationCorrectnessSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryStatusAndProgressSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryStatusAndProgressSuite.scala
index 921e20574f..bc3d6b20a2 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryStatusAndProgressSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQueryStatusAndProgressSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingQueryStatusAndProgressSuite
   extends StreamingQueryStatusAndProgressSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQuerySuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQuerySuite.scala
index 87e7924ce7..bf9c890c78 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQuerySuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingQuerySuite.scala
@@ -16,12 +16,11 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
-import org.apache.spark.sql.execution.ColumnarShuffleExchangeExec
-import org.apache.spark.sql.execution.exchange.REQUIRED_BY_STATEFUL_OPERATOR
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
+import org.apache.spark.sql.execution.exchange.{REQUIRED_BY_STATEFUL_OPERATOR, 
ShuffleExchangeLike}
 import org.apache.spark.sql.execution.streaming.runtime.MemoryStream
 
-class GlutenStreamingQuerySuite extends StreamingQuerySuite with 
GlutenSQLTestsTrait {
+class GlutenStreamingQuerySuite extends StreamingQuerySuite with 
GlutenStreamingSQLTestsTrait {
 
   import testImplicits._
 
@@ -38,11 +37,13 @@ class GlutenStreamingQuerySuite extends StreamingQuerySuite 
with GlutenSQLTestsT
       Execute {
         qe =>
           val shuffleOpt = qe.lastExecution.executedPlan.collect {
-            case s: ColumnarShuffleExchangeExec => s
+            case s: ShuffleExchangeLike if s.shuffleOrigin == 
REQUIRED_BY_STATEFUL_OPERATOR => s
           }
 
-          assert(shuffleOpt.nonEmpty, "No shuffle exchange found in the query 
plan")
-          assert(shuffleOpt.head.shuffleOrigin === 
REQUIRED_BY_STATEFUL_OPERATOR)
+          assert(
+            shuffleOpt.nonEmpty,
+            s"No stateful shuffle exchange found in the query plan: " +
+              qe.lastExecution.executedPlan)
       }
     )
   }
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSelfUnionSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSelfUnionSuite.scala
index 4f5a84d642..fdab47efd7 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSelfUnionSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSelfUnionSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenStreamingSelfUnionSuite extends StreamingSelfUnionSuite with 
GlutenSQLTestsTrait {}
+class GlutenStreamingSelfUnionSuite
+  extends StreamingSelfUnionSuite
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowDistributionSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowDistributionSuite.scala
index de167d74f1..d21a95ff01 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowDistributionSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowDistributionSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
 class GlutenStreamingSessionWindowDistributionSuite
   extends StreamingSessionWindowDistributionSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowSuite.scala
index 00888b1a93..45e0c6eb2e 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSessionWindowSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingSessionWindowSuite
   extends StreamingSessionWindowSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingStateStoreFormatCompatibilitySuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingStateStoreFormatCompatibilitySuite.scala
index 2fa4b17fc9..acb7ebb3ce 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingStateStoreFormatCompatibilitySuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingStateStoreFormatCompatibilitySuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingVanillaFallbackTestsTrait
 
 class GlutenStreamingStateStoreFormatCompatibilitySuite
   extends StreamingStateStoreFormatCompatibilitySuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingVanillaFallbackTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSymmetricHashJoinHelperSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSymmetricHashJoinHelperSuite.scala
index 5dd65c179f..9020a2702b 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSymmetricHashJoinHelperSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenStreamingSymmetricHashJoinHelperSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenStreamingSymmetricHashJoinHelperSuite
   extends StreamingSymmetricHashJoinHelperSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateSuite.scala
index 907e048a33..8ad2aafaff 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithListStateSuite
   extends TransformWithListStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateTTLSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateTTLSuite.scala
index b785c7db33..315021d65a 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateTTLSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithListStateTTLSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithListStateTTLSuite
   extends TransformWithListStateTTLSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateSuite.scala
index b3742f6ee0..650a36271e 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithMapStateSuite
   extends TransformWithMapStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateTTLSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateTTLSuite.scala
index 48b4d634bd..0c20e0ce62 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateTTLSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithMapStateTTLSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithMapStateTTLSuite
   extends TransformWithMapStateTTLSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateAvroSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateAvroSuite.scala
index 61336607ed..95aa8433b0 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateAvroSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateAvroSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateAvroSuite
   extends TransformWithStateAvroSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateChainingSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateChainingSuite.scala
index 852f4161d8..e2d475e997 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateChainingSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateChainingSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateChainingSuite
   extends TransformWithStateChainingSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateClusterSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateClusterSuite.scala
index 3ba4436b0a..dbe1fefc5e 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateClusterSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateClusterSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateClusterSuite
   extends TransformWithStateClusterSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateInitialStateSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateInitialStateSuite.scala
index 5727122b4a..1ecfb10525 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateInitialStateSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateInitialStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateInitialStateSuite
   extends TransformWithStateInitialStateSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateSuite.scala
index 6c02a69c2c..a0c6a2f990 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateValidationSuite
   extends TransformWithStateValidationSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateUnsafeRowSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateUnsafeRowSuite.scala
index 40802ce46c..fde363a580 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateUnsafeRowSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithStateUnsafeRowSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithStateUnsafeRowSuite
   extends TransformWithStateUnsafeRowSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithValueStateTTLSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithValueStateTTLSuite.scala
index 6aeb84f9f1..1c5ec31909 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithValueStateTTLSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTransformWithValueStateTTLSuite.scala
@@ -16,8 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
 class GlutenTransformWithValueStateTTLSuite
   extends TransformWithValueStateTTLSuite
-  with GlutenSQLTestsTrait {}
+  with GlutenStreamingSQLTestsTrait {}
diff --git 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTriggerAvailableNowSuite.scala
 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTriggerAvailableNowSuite.scala
index 89fb3cf5f4..efab0a270b 100644
--- 
a/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTriggerAvailableNowSuite.scala
+++ 
b/gluten-ut/spark41/src/test/scala/org/apache/spark/sql/streaming/GlutenTriggerAvailableNowSuite.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.spark.sql.streaming
 
-import org.apache.spark.sql.GlutenSQLTestsTrait
+import org.apache.spark.sql.GlutenStreamingSQLTestsTrait
 
-class GlutenTriggerAvailableNowSuite extends TriggerAvailableNowSuite with 
GlutenSQLTestsTrait {}
+class GlutenTriggerAvailableNowSuite
+  extends TriggerAvailableNowSuite
+  with GlutenStreamingSQLTestsTrait {}


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

Reply via email to