&#010;Assert on query failed: Check total state rows = List(1), updated state rows = List(2): Array(2) did not equal List(1) incorrect total rows, recent progresses:&#010;&#010;org.scalatest.Assertions$class.newAssertionFailedException(Assertions.scala:528)&#010; org.scalatest.FunSuite.newAssertionFailedException(FunSuite.scala:1560)&#010; org.scalatest.Assertions$AssertionsHelper.macroAssert(Assertions.scala:501)&#010; org.apache.spark.sql.streaming.StateStoreMetricsTest$$anonfun$assertNumStateRows$1.apply(StateStoreMetricsTest.scala:55)&#010; org.apache.spark.sql.streaming.StateStoreMetricsTest$$anonfun$assertNumStateRows$1.apply(StateStoreMetricsTest.scala:33)&#010; org.apache.spark.sql.streaming.StreamTest$$anonfun$executeAction$1$11.apply$mcZ$sp(StreamTest.scala:647)&#010; org.apache.spark.sql.streaming.StreamTest$class.verify$1(StreamTest.scala:418)&#010; org.apache.spark.sql.streaming.StreamTest$class.executeAction$1(StreamTest.scala:647)&#010; org.apache.spark.sql.streaming.StreamTest$$anonfun$liftedTree1$1$1.apply(StreamTest.scala:765)&#010; org.apache.spark.sql.streaming.StreamTest$$anonfun$liftedTree1$1$1.apply(StreamTest.scala:752)&#010;&#010;&#010;== Progress ==&#010; StartStream(ProcessingTime(1000),org.apache.spark.sql.streaming.util.StreamManualClock@4871bea,Map(),null)&#010; AddData to MemoryStream[value#420269]: a&#010; AdvanceManualClock(1000)&#010; CheckNewAnswer: [a,1]&#010; AssertOnQuery(<condition>, Check total state rows = List(1), updated state rows = List(1))&#010; AddData to MemoryStream[value#420269]: b&#010; AdvanceManualClock(1000)&#010; CheckNewAnswer: [b,1]&#010; AssertOnQuery(<condition>, Check total state rows = List(2), updated state rows = List(1))&#010; AddData to MemoryStream[value#420269]: b&#010; AdvanceManualClock(10000)&#010; CheckNewAnswer: [a,-1],[b,2]&#010;=> AssertOnQuery(<condition>, Check total state rows = List(1), updated state rows = List(2))&#010; StopStream&#010; StartStream(ProcessingTime(1000),org.apache.spark.sql.streaming.util.StreamManualClock@4871bea,Map(),null)&#010; AddData to MemoryStream[value#420269]: c&#010; AdvanceManualClock(11000)&#010; CheckNewAnswer: [b,-1],[c,1]&#010; AssertOnQuery(<condition>, Check total state rows = List(1), updated state rows = List(2))&#010; AdvanceManualClock(12000)&#010; AssertOnQuery(<condition>, )&#010; AssertOnQuery(<condition>, )&#010; CheckNewAnswer: [c,-1]&#010; AssertOnQuery(<condition>, Check total state rows = List(0), updated state rows = List(0))&#010;&#010;== Stream ==&#010;Output Mode: Update&#010;Stream state: {MemoryStream[value#420269]: 2}&#010;Thread state: alive&#010;Thread stack trace: sun.misc.Unsafe.unpark(Native Method)&#010;java.util.concurrent.locks.LockSupport.unpark(LockSupport.java:141)&#010;java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor(AbstractQueuedSynchronizer.java:662)&#010;java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1264)&#010;java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:457)&#010;org.apache.spark.sql.execution.streaming.MicroBatchExecution.withProgressLocked(MicroBatchExecution.scala:534)&#010;org.apache.spark.sql.execution.streaming.MicroBatchExecution.org$apache$spark$sql$execution$streaming$MicroBatchExecution$$runBatch(MicroBatchExecution.scala:519)&#010;org.apache.spark.sql.execution.streaming.MicroBatchExecution$$anonfun$runActivatedStream$1$$anonfun$apply$mcZ$sp$1.apply$mcV$sp(MicroBatchExecution.scala:189)&#010;org.apache.spark.sql.execution.streaming.MicroBatchExecution$$anonfun$runActivatedStream$1$$anonfun$apply$mcZ$sp$1.apply(MicroBatchExecution.scala:162)&#010;org.apache.spark.sql.execution.streaming.MicroBatchExecution$$anonfun$runActivatedStream$1$$anonfun$apply$mcZ$sp$1.apply(MicroBatchExecution.scala:162)&#010;org.apache.spark.sql.execution.streaming.ProgressReporter$class.reportTimeTaken(ProgressReporter.scala:337)&#010;org.apache.spark.sql.execution.streaming.StreamExecution.reportTimeTaken(StreamExecution.scala:58)&#010;org.apache.spark.sql.execution.streaming.MicroBatchExecution$$anonfun$runActivatedStream$1.apply$mcZ$sp(MicroBatchExecution.scala:162)&#010;org.apache.spark.sql.execution.streaming.ProcessingTimeExecutor.execute(TriggerExecutor.scala:56)&#010;org.apache.spark.sql.execution.streaming.MicroBatchExecution.runActivatedStream(MicroBatchExecution.scala:155)&#010;org.apache.spark.sql.execution.streaming.StreamExecution.org$apache$spark$sql$execution$streaming$StreamExecution$$runStream(StreamExecution.scala:279)&#010;org.apache.spark.sql.execution.streaming.StreamExecution$$anon$1.run(StreamExecution.scala:189)&#010;&#010;&#010;== Sink ==&#010;0: [a,1]&#010;1: [b,1]&#010;2: [a,-1] [b,2]&#010;&#010;&#010;== Plan ==&#010;== Parsed Logical Plan ==&#010;SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._1, true, false) AS _1#420277, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._2, true, false) AS _2#420278]&#010;+- FlatMapGroupsWithState <function3>, cast(value#420272 as string).toString, cast(value#420269 as string).toString, [value#420272], [value#420269], obj#420276: scala.Tuple2, class[count[0]: bigint], Update, false, ProcessingTimeTimeout&#010; +- AppendColumns <function1>, class java.lang.String, [StructField(value,StringType,true)], cast(value#420269 as string).toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#420272]&#010; +- Project [value#420375 AS value#420269]&#010; +- Streaming RelationV2 MemoryStreamDataSource[value#420375]&#010;&#010;== Analyzed Logical Plan ==&#010;_1: string, _2: string&#010;SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._1, true, false) AS _1#420277, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._2, true, false) AS _2#420278]&#010;+- FlatMapGroupsWithState <function3>, cast(value#420272 as string).toString, cast(value#420269 as string).toString, [value#420272], [value#420269], obj#420276: scala.Tuple2, class[count[0]: bigint], Update, false, ProcessingTimeTimeout&#010; +- AppendColumns <function1>, class java.lang.String, [StructField(value,StringType,true)], cast(value#420269 as string).toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#420272]&#010; +- Project [value#420375 AS value#420269]&#010; +- Streaming RelationV2 MemoryStreamDataSource[value#420375]&#010;&#010;== Optimized Logical Plan ==&#010;SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._1, true, false) AS _1#420277, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._2, true, false) AS _2#420278]&#010;+- FlatMapGroupsWithState <function3>, value#420272.toString, value#420375.toString, [value#420272], [value#420375], obj#420276: scala.Tuple2, class[count[0]: bigint], Update, false, ProcessingTimeTimeout&#010; +- AppendColumns <function1>, class java.lang.String, [StructField(value,StringType,true)], value#420375.toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#420272]&#010; +- Streaming RelationV2 MemoryStreamDataSource[value#420375]&#010;&#010;== Physical Plan ==&#010;*(3) SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._1, true, false) AS _1#420277, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._2, true, false) AS _2#420278]&#010;+- FlatMapGroupsWithState <function3>, value#420272.toString, value#420375.toString, [value#420272], [value#420375], obj#420276: scala.Tuple2, state info [ checkpoint = file:/home/jenkins/workspace/spark-master-test-maven-hadoop-2.7/sql/core/target/tmp/streaming.metadata-2a63ef86-f65b-4d1c-aeb1-354b6a94e324/state, runId = 2194b522-c808-40e7-a6d2-9d1b09ae6886, opId = 0, ver = 2, numPartitions = 5], class[count[0]: bigint], Update, ProcessingTimeTimeout, 12000, 0&#010; +- *(2) Sort [value#420272 ASC NULLS FIRST], false, 0&#010; +- Exchange hashpartitioning(value#420272, 5)&#010; +- AppendColumns <function1>, value#420375.toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#420272]&#010; +- *(1) ScanV2 MemoryStreamDataSource[value#420375]&#010; &#010;


      org.scalatest.exceptions.TestFailedException: 
Assert on query failed: Check total state rows = List(1), updated state rows = List(2): Array(2) did not equal List(1) incorrect total rows, recent progresses:

org.scalatest.Assertions$class.newAssertionFailedException(Assertions.scala:528)
	org.scalatest.FunSuite.newAssertionFailedException(FunSuite.scala:1560)
	org.scalatest.Assertions$AssertionsHelper.macroAssert(Assertions.scala:501)
	org.apache.spark.sql.streaming.StateStoreMetricsTest$$anonfun$assertNumStateRows$1.apply(StateStoreMetricsTest.scala:55)
	org.apache.spark.sql.streaming.StateStoreMetricsTest$$anonfun$assertNumStateRows$1.apply(StateStoreMetricsTest.scala:33)
	org.apache.spark.sql.streaming.StreamTest$$anonfun$executeAction$1$11.apply$mcZ$sp(StreamTest.scala:647)
	org.apache.spark.sql.streaming.StreamTest$class.verify$1(StreamTest.scala:418)
	org.apache.spark.sql.streaming.StreamTest$class.executeAction$1(StreamTest.scala:647)
	org.apache.spark.sql.streaming.StreamTest$$anonfun$liftedTree1$1$1.apply(StreamTest.scala:765)
	org.apache.spark.sql.streaming.StreamTest$$anonfun$liftedTree1$1$1.apply(StreamTest.scala:752)


== Progress ==
   StartStream(ProcessingTime(1000),org.apache.spark.sql.streaming.util.StreamManualClock@4871bea,Map(),null)
   AddData to MemoryStream[value#420269]: a
   AdvanceManualClock(1000)
   CheckNewAnswer: [a,1]
   AssertOnQuery(<condition>, Check total state rows = List(1), updated state rows = List(1))
   AddData to MemoryStream[value#420269]: b
   AdvanceManualClock(1000)
   CheckNewAnswer: [b,1]
   AssertOnQuery(<condition>, Check total state rows = List(2), updated state rows = List(1))
   AddData to MemoryStream[value#420269]: b
   AdvanceManualClock(10000)
   CheckNewAnswer: [a,-1],[b,2]
=> AssertOnQuery(<condition>, Check total state rows = List(1), updated state rows = List(2))
   StopStream
   StartStream(ProcessingTime(1000),org.apache.spark.sql.streaming.util.StreamManualClock@4871bea,Map(),null)
   AddData to MemoryStream[value#420269]: c
   AdvanceManualClock(11000)
   CheckNewAnswer: [b,-1],[c,1]
   AssertOnQuery(<condition>, Check total state rows = List(1), updated state rows = List(2))
   AdvanceManualClock(12000)
   AssertOnQuery(<condition>, )
   AssertOnQuery(<condition>, )
   CheckNewAnswer: [c,-1]
   AssertOnQuery(<condition>, Check total state rows = List(0), updated state rows = List(0))

== Stream ==
Output Mode: Update
Stream state: {MemoryStream[value#420269]: 2}
Thread state: alive
Thread stack trace: sun.misc.Unsafe.unpark(Native Method)
java.util.concurrent.locks.LockSupport.unpark(LockSupport.java:141)
java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor(AbstractQueuedSynchronizer.java:662)
java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1264)
java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:457)
org.apache.spark.sql.execution.streaming.MicroBatchExecution.withProgressLocked(MicroBatchExecution.scala:534)
org.apache.spark.sql.execution.streaming.MicroBatchExecution.org$apache$spark$sql$execution$streaming$MicroBatchExecution$$runBatch(MicroBatchExecution.scala:519)
org.apache.spark.sql.execution.streaming.MicroBatchExecution$$anonfun$runActivatedStream$1$$anonfun$apply$mcZ$sp$1.apply$mcV$sp(MicroBatchExecution.scala:189)
org.apache.spark.sql.execution.streaming.MicroBatchExecution$$anonfun$runActivatedStream$1$$anonfun$apply$mcZ$sp$1.apply(MicroBatchExecution.scala:162)
org.apache.spark.sql.execution.streaming.MicroBatchExecution$$anonfun$runActivatedStream$1$$anonfun$apply$mcZ$sp$1.apply(MicroBatchExecution.scala:162)
org.apache.spark.sql.execution.streaming.ProgressReporter$class.reportTimeTaken(ProgressReporter.scala:337)
org.apache.spark.sql.execution.streaming.StreamExecution.reportTimeTaken(StreamExecution.scala:58)
org.apache.spark.sql.execution.streaming.MicroBatchExecution$$anonfun$runActivatedStream$1.apply$mcZ$sp(MicroBatchExecution.scala:162)
org.apache.spark.sql.execution.streaming.ProcessingTimeExecutor.execute(TriggerExecutor.scala:56)
org.apache.spark.sql.execution.streaming.MicroBatchExecution.runActivatedStream(MicroBatchExecution.scala:155)
org.apache.spark.sql.execution.streaming.StreamExecution.org$apache$spark$sql$execution$streaming$StreamExecution$$runStream(StreamExecution.scala:279)
org.apache.spark.sql.execution.streaming.StreamExecution$$anon$1.run(StreamExecution.scala:189)


== Sink ==
0: [a,1]
1: [b,1]
2: [a,-1] [b,2]


== Plan ==
== Parsed Logical Plan ==
SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._1, true, false) AS _1#420277, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._2, true, false) AS _2#420278]
+- FlatMapGroupsWithState <function3>, cast(value#420272 as string).toString, cast(value#420269 as string).toString, [value#420272], [value#420269], obj#420276: scala.Tuple2, class[count[0]: bigint], Update, false, ProcessingTimeTimeout
   +- AppendColumns <function1>, class java.lang.String, [StructField(value,StringType,true)], cast(value#420269 as string).toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#420272]
      +- Project [value#420375 AS value#420269]
         +- Streaming RelationV2 MemoryStreamDataSource[value#420375]

== Analyzed Logical Plan ==
_1: string, _2: string
SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._1, true, false) AS _1#420277, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(assertnotnull(input[0, scala.Tuple2, true]))._2, true, false) AS _2#420278]
+- FlatMapGroupsWithState <function3>, cast(value#420272 as string).toString, cast(value#420269 as string).toString, [value#420272], [value#420269], obj#420276: scala.Tuple2, class[count[0]: bigint], Update, false, ProcessingTimeTimeout
   +- AppendColumns <function1>, class java.lang.String, [StructField(value,StringType,true)], cast(value#420269 as string).toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#420272]
      +- Project [value#420375 AS value#420269]
         +- Streaming RelationV2 MemoryStreamDataSource[value#420375]

== Optimized Logical Plan ==
SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._1, true, false) AS _1#420277, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._2, true, false) AS _2#420278]
+- FlatMapGroupsWithState <function3>, value#420272.toString, value#420375.toString, [value#420272], [value#420375], obj#420276: scala.Tuple2, class[count[0]: bigint], Update, false, ProcessingTimeTimeout
   +- AppendColumns <function1>, class java.lang.String, [StructField(value,StringType,true)], value#420375.toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#420272]
      +- Streaming RelationV2 MemoryStreamDataSource[value#420375]

== Physical Plan ==
*(3) SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._1, true, false) AS _1#420277, staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, assertnotnull(input[0, scala.Tuple2, true])._2, true, false) AS _2#420278]
+- FlatMapGroupsWithState <function3>, value#420272.toString, value#420375.toString, [value#420272], [value#420375], obj#420276: scala.Tuple2, state info [ checkpoint = file:/home/jenkins/workspace/spark-master-test-maven-hadoop-2.7/sql/core/target/tmp/streaming.metadata-2a63ef86-f65b-4d1c-aeb1-354b6a94e324/state, runId = 2194b522-c808-40e7-a6d2-9d1b09ae6886, opId = 0, ver = 2, numPartitions = 5], class[count[0]: bigint], Update, ProcessingTimeTimeout, 12000, 0
   +- *(2) Sort [value#420272 ASC NULLS FIRST], false, 0
      +- Exchange hashpartitioning(value#420272, 5)
         +- AppendColumns <function1>, value#420375.toString, [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#420272]
            +- *(1) ScanV2 MemoryStreamDataSource[value#420375]
         
         
      at org.scalatest.Assertions$class.newAssertionFailedException(Assertions.scala:528)
      at org.scalatest.FunSuite.newAssertionFailedException(FunSuite.scala:1560)
      at org.scalatest.Assertions$class.fail(Assertions.scala:1089)
      at org.scalatest.FunSuite.fail(FunSuite.scala:1560)
      at org.apache.spark.sql.streaming.StreamTest$class.failTest$1(StreamTest.scala:448)
      at org.apache.spark.sql.streaming.StreamTest$class.executeAction$1(StreamTest.scala:650)
      at org.apache.spark.sql.streaming.StreamTest$$anonfun$liftedTree1$1$1.apply(StreamTest.scala:765)
      at org.apache.spark.sql.streaming.StreamTest$$anonfun$liftedTree1$1$1.apply(StreamTest.scala:752)
      at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
      at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:35)
      at org.apache.spark.sql.streaming.StreamTest$class.liftedTree1$1(StreamTest.scala:752)
      at org.apache.spark.sql.streaming.StreamTest$class.testStream(StreamTest.scala:751)
      at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite.testStream(FlatMapGroupsWithStateSuite.scala:44)
      at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite$$anonfun$16.apply$mcV$sp(FlatMapGroupsWithStateSuite.scala:756)
      at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite$$anonfun$16.apply(FlatMapGroupsWithStateSuite.scala:731)
      at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite$$anonfun$16.apply(FlatMapGroupsWithStateSuite.scala:731)
      at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
      at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
      at org.scalatest.Transformer.apply(Transformer.scala:22)
      at org.scalatest.Transformer.apply(Transformer.scala:20)
      at org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186)
      at org.apache.spark.SparkFunSuite.withFixture(SparkFunSuite.scala:103)
      at org.scalatest.FunSuiteLike$class.invokeWithFixture$1(FunSuiteLike.scala:183)
      at org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:196)
      at org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:196)
      at org.scalatest.SuperEngine.runTestImpl(Engine.scala:289)
      at org.scalatest.FunSuiteLike$class.runTest(FunSuiteLike.scala:196)
      at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite.org$scalatest$BeforeAndAfterEach$$super$runTest(FlatMapGroupsWithStateSuite.scala:44)
      at org.scalatest.BeforeAndAfterEach$class.runTest(BeforeAndAfterEach.scala:221)
      at org.apache.spark.sql.streaming.FlatMapGroupsWithStateSuite.runTest(FlatMapGroupsWithStateSuite.scala:44)
      at org.scalatest.FunSuiteLike$$anonfun$runTests$1.apply(FunSuiteLike.scala:229)
      at org.scalatest.FunSuiteLike$$anonfun$runTests$1.apply(FunSuiteLike.scala:229)
      at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:396)
      at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384)
      at scala.collection.immutable.List.foreach(List.scala:381)
      at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384)
      at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:379)
      at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:461)
      at org.scalatest.FunSuiteLike$class.runTests(FunSuiteLike.scala:229)
      at org.scalatest.FunSuite.runTests(FunSuite.scala:1560)
      at org.scalatest.Suite$class.run(Suite.scala:1147)
      at org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560)
      at org.scalatest.FunSuiteLike$$anonfun$run$1.apply(FunSuiteLike.scala:233)
      at org.scalatest.FunSuiteLike$$anonfun$run$1.apply(FunSuiteLike.scala:233)
      at org.scalatest.SuperEngine.runImpl(Engine.scala:521)
      at org.scalatest.FunSuiteLike$class.run(FunSuiteLike.scala:233)
      at org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterAll$$super$run(SparkFunSuite.scala:52)
      at org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:213)
      at org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:210)
      at org.apache.spark.SparkFunSuite.run(SparkFunSuite.scala:52)
      at org.scalatest.Suite$class.callExecuteOnSuite$1(Suite.scala:1210)
      at org.scalatest.Suite$$anonfun$runNestedSuites$1.apply(Suite.scala:1257)
      at org.scalatest.Suite$$anonfun$runNestedSuites$1.apply(Suite.scala:1255)
      at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
      at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
      at org.scalatest.Suite$class.runNestedSuites(Suite.scala:1255)
      at org.scalatest.tools.DiscoverySuite.runNestedSuites(DiscoverySuite.scala:30)
      at org.scalatest.Suite$class.run(Suite.scala:1144)
      at org.scalatest.tools.DiscoverySuite.run(DiscoverySuite.scala:30)
      at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:45)
      at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$1.apply(Runner.scala:1340)
      at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$1.apply(Runner.scala:1334)
      at scala.collection.immutable.List.foreach(List.scala:381)
      at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1334)
      at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1011)
      at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1010)
      at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1500)
      at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1010)
      at org.scalatest.tools.Runner$.main(Runner.scala:827)
      at org.scalatest.tools.Runner.main(Runner.scala)