&#010;&#010;== Results ==&#010;!== Correct Answer - 91 == == Spark Answer - 88 ==&#010; struct<value:int> struct<value:int>&#010; [10] [10]&#010; [11] [11]&#010; [12] [12]&#010; [13] [13]&#010; [14] [14]&#010; [15] [15]&#010; [16] [16]&#010; [17] [17]&#010; [18] [18]&#010; [19] [19]&#010; [1] [1]&#010; [20] [20]&#010; [21] [21]&#010; [22] [22]&#010; [23] [23]&#010; [24] [24]&#010; [25] [25]&#010; [26] [26]&#010; [27] [27]&#010; [28] [28]&#010; [29] [29]&#010; [2] [2]&#010; [30] [30]&#010; [31] [31]&#010; [32] [32]&#010; [33] [33]&#010; [34] [34]&#010; [35] [35]&#010; [36] [36]&#010; [37] [37]&#010; [38] [38]&#010; [39] [39]&#010; [3] [3]&#010; [40] [40]&#010; [41] [41]&#010; [42] [42]&#010; [43] [43]&#010; [44] [44]&#010; [45] [45]&#010; [46] [46]&#010; [47] [47]&#010; [48] [48]&#010; [49] [49]&#010; [4] [4]&#010; [50] [50]&#010; [51] [51]&#010; [52] [52]&#010; [53] [53]&#010; [54] [54]&#010; [55] [55]&#010; [56] [56]&#010; [57] [57]&#010; [58] [58]&#010; [59] [59]&#010; [5] [5]&#010; [60] [60]&#010; [61] [61]&#010; [62] [62]&#010; [63] [63]&#010; [64] [64]&#010; [65] [65]&#010; [66] [66]&#010; [67] [67]&#010; [68] [68]&#010;![69] [6]&#010;![6] [72]&#010;![70] [73]&#010;![71] [74]&#010;![72] [75]&#010;![73] [76]&#010;![74] [77]&#010;![75] [78]&#010;![76] [79]&#010;![77] [7]&#010;![78] [80]&#010;![79] [81]&#010;![7] [82]&#010;![80] [83]&#010;![81] [84]&#010;![82] [85]&#010;![83] [86]&#010;![84] [87]&#010;![85] [88]&#010;![86] [89]&#010;![87] [8]&#010;![88] [90]&#010;![89] [91]&#010;![8] [9]&#010;![90] &#010;![91] &#010;![9] &#010; &#010;&#010;== Progress ==&#010; AssertOnQuery(<condition>, )&#010; AddKafkaData(topics = Set(stress4, stress2, stress1, stress5, stress3), data = Range 0 until 6, message = )&#010; CheckAnswer: [1],[2],[3],[4],[5],[6]&#010; StopStream&#010; AddKafkaData(topics = Set(stress4, stress2, stress1, stress5, stress3), data = Range 6 until 9, message = )&#010; AddKafkaData(topics = Set(stress4, stress2, stress1, stress5, stress3), data = Range 9 until 18, message = )&#010; AddKafkaData(topics = Set(stress4, stress2, stress1, stress5, stress3), data = empty Range 18 until 18, message = Add partition)&#010; StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@4a40ef1,Map(),null)&#010; AddKafkaData(topics = Set(stress1, stress3, stress4, stress5), data = Range 18 until 21, message = Delete topic stress2)&#010; AddKafkaData(topics = Set(stress1, stress3, stress4, stress5), data = Range 21 until 25, message = )&#010; AddKafkaData(topics = Set(stress1, stress4, stress5), data = Range 25 until 34, message = Delete topic stress3)&#010; AddKafkaData(topics = Set(stress1, stress4, stress5), data = Range 34 until 40, message = Add partition)&#010; AddKafkaData(topics = Set(stress1, stress4, stress5, stress6), data = Range 40 until 42, message = Add topic stress7)&#010; AddKafkaData(topics = Set(stress1, stress4, stress5, stress6), data = empty Range 42 until 42, message = )&#010; AddKafkaData(topics = Set(stress1, stress4, stress5, stress6), data = Range 42 until 51, message = )&#010; AddKafkaData(topics = Set(stress1, stress4, stress5), data = Range 51 until 59, message = Delete topic stress6)&#010; AddKafkaData(topics = Set(stress1, stress5), data = empty Range 59 until 59, message = Delete topic stress4)&#010; AddKafkaData(topics = Set(stress1, stress5), data = Range 59 until 62, message = Delete topic stress1)&#010; CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62]&#010; StopStream&#010; StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@1b91c495,Map(),null)&#010; AddKafkaData(topics = Set(stress1, stress5), data = Range 62 until 65, message = )&#010; CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65]&#010; StopStream&#010; AddKafkaData(topics = Set(stress1, stress5), data = Range 65 until 67, message = )&#010; StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@1a10e18d,Map(),null)&#010; AddKafkaData(topics = Set(stress1, stress5), data = Range 67 until 74, message = Add partition)&#010; AddKafkaData(topics = Set(stress1), data = Range 74 until 77, message = Delete topic stress5)&#010; AddKafkaData(topics = Set(stress1), data = Range 77 until 81, message = Add partition)&#010; AddKafkaData(topics = Set(stress1), data = Range 81 until 88, message = Delete topic stress1)&#010; AddKafkaData(topics = Set(stress1), data = Range 88 until 91, message = Add partition)&#010; AddKafkaData(topics = Set(stress1), data = empty Range 91 until 91, message = )&#010;=> CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91]&#010; AddKafkaData(topics = Set(stress1), data = Range 91 until 93, message = )&#010; AddKafkaData(topics = Set(stress1), data = empty Range 93 until 93, message = )&#010; CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93]&#010; StopStream&#010; StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@3cda6991,Map(),null)&#010; AddKafkaData(topics = Set(stress1), data = Range 93 until 94, message = Delete topic stress1)&#010; AddKafkaData(topics = Set(stress1), data = Range 94 until 103, message = )&#010; AddKafkaData(topics = Set(stress1), data = Range 103 until 106, message = Add partition)&#010; AddKafkaData(topics = Set(stress1), data = empty Range 106 until 106, message = Delete topic stress1)&#010; AddKafkaData(topics = Set(stress1), data = Range 106 until 107, message = )&#010; CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107]&#010; CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107]&#010; StopStream&#010; AddKafkaData(topics = Set(stress1), data = Range 107 until 115, message = Add partition)&#010; AddKafkaData(topics = Set(stress1, stress8), data = Range 115 until 121, message = Add topic stress9)&#010; StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@12b8f4c9,Map(),null)&#010; CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[111],[112],[113],[114],[115],[116],[117],[118],[119],[120],[121]&#010; AddKafkaData(topics = Set(stress1, stress8), data = empty Range 121 until 121, message = Add partition)&#010; CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[111],[112],[113],[114],[115],[116],[117],[118],[119],[120],[121]&#010; AddKafkaData(topics = Set(stress1, stress8), data = Range 121 until 130, message = Add partition)&#010; AddKafkaData(topics = Set(stress1, stress8), data = Range 130 until 134, message = )&#010; CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[111],[112],[113],[114],[115],[116],[117],[118],[119],[120],[121],[122],[123],[124],[125],[126],[127],[128],[129],[130],[131],[132],[133],[134]&#010; StopStream&#010; StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@25e331ff,Map(),null)&#010; CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[111],[112],[113],[114],[115],[116],[117],[118],[119],[120],[121],[122],[123],[124],[125],[126],[127],[128],[129],[130],[131],[132],[133],[134]&#010;&#010;== Stream ==&#010;Output Mode: Append&#010;Stream state: {KafkaV2[SubscribePattern[stress.*]]: {"stress1":{"17":0,"8":1,"11":1,"20":0,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"19":0,"18":0,"9":1,"21":0,"3":0,"12":2,"15":1,"6":1,"0":4}}}&#010;Thread state: alive&#010;Thread stack trace: java.base@11.0.1/java.lang.Thread.sleep(Native Method)&#010;app//org.apache.spark.sql.execution.streaming.MicroBatchExecution.$anonfun$runActivatedStream$1(MicroBatchExecution.scala:230)&#010;app//org.apache.spark.sql.execution.streaming.MicroBatchExecution$$Lambda$2342/0x0000000800f27840.apply$mcZ$sp(Unknown Source)&#010;app//org.apache.spark.sql.execution.streaming.ProcessingTimeExecutor.execute(TriggerExecutor.scala:56)&#010;app//org.apache.spark.sql.execution.streaming.MicroBatchExecution.runActivatedStream(MicroBatchExecution.scala:175)&#010;app//org.apache.spark.sql.execution.streaming.StreamExecution.org$apache$spark$sql$execution$streaming$StreamExecution$$runStream(StreamExecution.scala:332)&#010;app//org.apache.spark.sql.execution.streaming.StreamExecution$$anon$1.run(StreamExecution.scala:244)&#010;&#010;&#010;== Sink ==&#010;0: &#010;1: [3] [2] [1]&#010;2: [6] [5] [4]&#010;3: [13] [7] [10] [16] [15] [11] [17] [14] [9] [8] [12] [18]&#010;4: [20] [19] [21]&#010;5: [23] [22] [24] [25]&#010;6: [29] [27] [34] [31] [30] [32] [28] [26] [33]&#010;7: &#010;8: [40] [35] [38] [36] [39] [37]&#010;9: [42] [41]&#010;10: &#010;11: [43] [44] [45]&#010;12: [46] [47] [48] [49] [50] [51]&#010;13: [54] [58] [52] [56] [59] [55] [53] [57]&#010;14: &#010;15: [60]&#010;16: [61] [62]&#010;17: [64] [63] [65]&#010;18: [67] [66]&#010;19: [72] [74] [68] [73]&#010;20: &#010;21: [75] [76] [77]&#010;22: [78]&#010;23: [81] [80]&#010;24: [79]&#010;25: [85] [82] [86] [83] [84]&#010;26: [87] [88]&#010;27: [89] [90] [91]&#010;28: &#010;&#010;&#010;== Plan ==&#010;== Parsed Logical Plan ==&#010;WriteToDataSourceV2 org.apache.spark.sql.execution.streaming.sources.MicroBatchWrite@328e0064&#010;+- SerializeFromObject [input[0, int, false] AS value#14549]&#010; +- MapElements org.apache.spark.sql.kafka010.KafkaSourceStressSuite$$Lambda$5915/0x0000000801b42040@cc8e995, class scala.Tuple2, [StructField(_1,StringType,true), StructField(_2,StringType,true)], obj#14548: int&#010; +- DeserializeToObject newInstance(class scala.Tuple2), obj#14547: scala.Tuple2&#010; +- Project [cast(key#14523 as string) AS key#14537, cast(value#14524 as string) AS value#14538]&#010; +- StreamingDataSourceV2Relation [key#14523, value#14524, topic#14525, partition#14526, offset#14527L, timestamp#14528, timestampType#14529], org.apache.spark.sql.kafka010.KafkaSourceProvider$KafkaScan@51b4bdab, KafkaV2[SubscribePattern[stress.*]], {"stress1":{"8":1,"11":1,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"9":1,"3":0,"12":2,"15":1,"6":1,"0":4}}, {"stress1":{"17":0,"8":1,"11":1,"20":0,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"19":0,"18":0,"9":1,"21":0,"3":0,"12":2,"15":1,"6":1,"0":4}}&#010;&#010;== Analyzed Logical Plan ==&#010;&#010;WriteToDataSourceV2 org.apache.spark.sql.execution.streaming.sources.MicroBatchWrite@328e0064&#010;+- SerializeFromObject [input[0, int, false] AS value#14549]&#010; +- MapElements org.apache.spark.sql.kafka010.KafkaSourceStressSuite$$Lambda$5915/0x0000000801b42040@cc8e995, class scala.Tuple2, [StructField(_1,StringType,true), StructField(_2,StringType,true)], obj#14548: int&#010; +- DeserializeToObject newInstance(class scala.Tuple2), obj#14547: scala.Tuple2&#010; +- Project [cast(key#14523 as string) AS key#14537, cast(value#14524 as string) AS value#14538]&#010; +- StreamingDataSourceV2Relation [key#14523, value#14524, topic#14525, partition#14526, offset#14527L, timestamp#14528, timestampType#14529], org.apache.spark.sql.kafka010.KafkaSourceProvider$KafkaScan@51b4bdab, KafkaV2[SubscribePattern[stress.*]], {"stress1":{"8":1,"11":1,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"9":1,"3":0,"12":2,"15":1,"6":1,"0":4}}, {"stress1":{"17":0,"8":1,"11":1,"20":0,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"19":0,"18":0,"9":1,"21":0,"3":0,"12":2,"15":1,"6":1,"0":4}}&#010;&#010;== Optimized Logical Plan ==&#010;WriteToDataSourceV2 org.apache.spark.sql.execution.streaming.sources.MicroBatchWrite@328e0064&#010;+- SerializeFromObject [input[0, int, false] AS value#14549]&#010; +- MapElements org.apache.spark.sql.kafka010.KafkaSourceStressSuite$$Lambda$5915/0x0000000801b42040@cc8e995, class scala.Tuple2, [StructField(_1,StringType,true), StructField(_2,StringType,true)], obj#14548: int&#010; +- DeserializeToObject newInstance(class scala.Tuple2), obj#14547: scala.Tuple2&#010; +- Project [cast(key#14523 as string) AS key#14537, cast(value#14524 as string) AS value#14538]&#010; +- StreamingDataSourceV2Relation [key#14523, value#14524, topic#14525, partition#14526, offset#14527L, timestamp#14528, timestampType#14529], org.apache.spark.sql.kafka010.KafkaSourceProvider$KafkaScan@51b4bdab, KafkaV2[SubscribePattern[stress.*]], {"stress1":{"8":1,"11":1,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"9":1,"3":0,"12":2,"15":1,"6":1,"0":4}}, {"stress1":{"17":0,"8":1,"11":1,"20":0,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"19":0,"18":0,"9":1,"21":0,"3":0,"12":2,"15":1,"6":1,"0":4}}&#010;&#010;== Physical Plan ==&#010;WriteToDataSourceV2 org.apache.spark.sql.execution.streaming.sources.MicroBatchWrite@328e0064&#010;+- *(1) SerializeFromObject [input[0, int, false] AS value#14549]&#010; +- *(1) MapElements org.apache.spark.sql.kafka010.KafkaSourceStressSuite$$Lambda$5915/0x0000000801b42040@cc8e995, obj#14548: int&#010; +- *(1) DeserializeToObject newInstance(class scala.Tuple2), obj#14547: scala.Tuple2&#010; +- *(1) Project [cast(key#14523 as string) AS key#14537, cast(value#14524 as string) AS value#14538]&#010; +- *(1) Project [key#14523, value#14524, topic#14525, partition#14526, offset#14527L, timestamp#14528, timestampType#14529]&#010; +- *(1) MicroBatchScan[key#14523, value#14524, topic#14525, partition#14526, offset#14527L, timestamp#14528, timestampType#14529] class org.apache.spark.sql.kafka010.KafkaSourceProvider$KafkaScan&#010;&#010; &#010;


      org.scalatest.exceptions.TestFailedException: 

== Results ==
!== Correct Answer - 91 ==   == Spark Answer - 88 ==
 struct<value:int>           struct<value:int>
 [10]                        [10]
 [11]                        [11]
 [12]                        [12]
 [13]                        [13]
 [14]                        [14]
 [15]                        [15]
 [16]                        [16]
 [17]                        [17]
 [18]                        [18]
 [19]                        [19]
 [1]                         [1]
 [20]                        [20]
 [21]                        [21]
 [22]                        [22]
 [23]                        [23]
 [24]                        [24]
 [25]                        [25]
 [26]                        [26]
 [27]                        [27]
 [28]                        [28]
 [29]                        [29]
 [2]                         [2]
 [30]                        [30]
 [31]                        [31]
 [32]                        [32]
 [33]                        [33]
 [34]                        [34]
 [35]                        [35]
 [36]                        [36]
 [37]                        [37]
 [38]                        [38]
 [39]                        [39]
 [3]                         [3]
 [40]                        [40]
 [41]                        [41]
 [42]                        [42]
 [43]                        [43]
 [44]                        [44]
 [45]                        [45]
 [46]                        [46]
 [47]                        [47]
 [48]                        [48]
 [49]                        [49]
 [4]                         [4]
 [50]                        [50]
 [51]                        [51]
 [52]                        [52]
 [53]                        [53]
 [54]                        [54]
 [55]                        [55]
 [56]                        [56]
 [57]                        [57]
 [58]                        [58]
 [59]                        [59]
 [5]                         [5]
 [60]                        [60]
 [61]                        [61]
 [62]                        [62]
 [63]                        [63]
 [64]                        [64]
 [65]                        [65]
 [66]                        [66]
 [67]                        [67]
 [68]                        [68]
![69]                        [6]
![6]                         [72]
![70]                        [73]
![71]                        [74]
![72]                        [75]
![73]                        [76]
![74]                        [77]
![75]                        [78]
![76]                        [79]
![77]                        [7]
![78]                        [80]
![79]                        [81]
![7]                         [82]
![80]                        [83]
![81]                        [84]
![82]                        [85]
![83]                        [86]
![84]                        [87]
![85]                        [88]
![86]                        [89]
![87]                        [8]
![88]                        [90]
![89]                        [91]
![8]                         [9]
![90]                        
![91]                        
![9]                         
    

== Progress ==
   AssertOnQuery(<condition>, )
   AddKafkaData(topics = Set(stress4, stress2, stress1, stress5, stress3), data = Range 0 until 6, message = )
   CheckAnswer: [1],[2],[3],[4],[5],[6]
   StopStream
   AddKafkaData(topics = Set(stress4, stress2, stress1, stress5, stress3), data = Range 6 until 9, message = )
   AddKafkaData(topics = Set(stress4, stress2, stress1, stress5, stress3), data = Range 9 until 18, message = )
   AddKafkaData(topics = Set(stress4, stress2, stress1, stress5, stress3), data = empty Range 18 until 18, message = Add partition)
   StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@4a40ef1,Map(),null)
   AddKafkaData(topics = Set(stress1, stress3, stress4, stress5), data = Range 18 until 21, message = Delete topic stress2)
   AddKafkaData(topics = Set(stress1, stress3, stress4, stress5), data = Range 21 until 25, message = )
   AddKafkaData(topics = Set(stress1, stress4, stress5), data = Range 25 until 34, message = Delete topic stress3)
   AddKafkaData(topics = Set(stress1, stress4, stress5), data = Range 34 until 40, message = Add partition)
   AddKafkaData(topics = Set(stress1, stress4, stress5, stress6), data = Range 40 until 42, message = Add topic stress7)
   AddKafkaData(topics = Set(stress1, stress4, stress5, stress6), data = empty Range 42 until 42, message = )
   AddKafkaData(topics = Set(stress1, stress4, stress5, stress6), data = Range 42 until 51, message = )
   AddKafkaData(topics = Set(stress1, stress4, stress5), data = Range 51 until 59, message = Delete topic stress6)
   AddKafkaData(topics = Set(stress1, stress5), data = empty Range 59 until 59, message = Delete topic stress4)
   AddKafkaData(topics = Set(stress1, stress5), data = Range 59 until 62, message = Delete topic stress1)
   CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62]
   StopStream
   StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@1b91c495,Map(),null)
   AddKafkaData(topics = Set(stress1, stress5), data = Range 62 until 65, message = )
   CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65]
   StopStream
   AddKafkaData(topics = Set(stress1, stress5), data = Range 65 until 67, message = )
   StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@1a10e18d,Map(),null)
   AddKafkaData(topics = Set(stress1, stress5), data = Range 67 until 74, message = Add partition)
   AddKafkaData(topics = Set(stress1), data = Range 74 until 77, message = Delete topic stress5)
   AddKafkaData(topics = Set(stress1), data = Range 77 until 81, message = Add partition)
   AddKafkaData(topics = Set(stress1), data = Range 81 until 88, message = Delete topic stress1)
   AddKafkaData(topics = Set(stress1), data = Range 88 until 91, message = Add partition)
   AddKafkaData(topics = Set(stress1), data = empty Range 91 until 91, message = )
=> CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91]
   AddKafkaData(topics = Set(stress1), data = Range 91 until 93, message = )
   AddKafkaData(topics = Set(stress1), data = empty Range 93 until 93, message = )
   CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93]
   StopStream
   StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@3cda6991,Map(),null)
   AddKafkaData(topics = Set(stress1), data = Range 93 until 94, message = Delete topic stress1)
   AddKafkaData(topics = Set(stress1), data = Range 94 until 103, message = )
   AddKafkaData(topics = Set(stress1), data = Range 103 until 106, message = Add partition)
   AddKafkaData(topics = Set(stress1), data = empty Range 106 until 106, message = Delete topic stress1)
   AddKafkaData(topics = Set(stress1), data = Range 106 until 107, message = )
   CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107]
   CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107]
   StopStream
   AddKafkaData(topics = Set(stress1), data = Range 107 until 115, message = Add partition)
   AddKafkaData(topics = Set(stress1, stress8), data = Range 115 until 121, message = Add topic stress9)
   StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@12b8f4c9,Map(),null)
   CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[111],[112],[113],[114],[115],[116],[117],[118],[119],[120],[121]
   AddKafkaData(topics = Set(stress1, stress8), data = empty Range 121 until 121, message = Add partition)
   CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[111],[112],[113],[114],[115],[116],[117],[118],[119],[120],[121]
   AddKafkaData(topics = Set(stress1, stress8), data = Range 121 until 130, message = Add partition)
   AddKafkaData(topics = Set(stress1, stress8), data = Range 130 until 134, message = )
   CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[111],[112],[113],[114],[115],[116],[117],[118],[119],[120],[121],[122],[123],[124],[125],[126],[127],[128],[129],[130],[131],[132],[133],[134]
   StopStream
   StartStream(ProcessingTime(0),org.apache.spark.util.SystemClock@25e331ff,Map(),null)
   CheckAnswer: [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[111],[112],[113],[114],[115],[116],[117],[118],[119],[120],[121],[122],[123],[124],[125],[126],[127],[128],[129],[130],[131],[132],[133],[134]

== Stream ==
Output Mode: Append
Stream state: {KafkaV2[SubscribePattern[stress.*]]: {"stress1":{"17":0,"8":1,"11":1,"20":0,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"19":0,"18":0,"9":1,"21":0,"3":0,"12":2,"15":1,"6":1,"0":4}}}
Thread state: alive
Thread stack trace: java.base@11.0.1/java.lang.Thread.sleep(Native Method)
app//org.apache.spark.sql.execution.streaming.MicroBatchExecution.$anonfun$runActivatedStream$1(MicroBatchExecution.scala:230)
app//org.apache.spark.sql.execution.streaming.MicroBatchExecution$$Lambda$2342/0x0000000800f27840.apply$mcZ$sp(Unknown Source)
app//org.apache.spark.sql.execution.streaming.ProcessingTimeExecutor.execute(TriggerExecutor.scala:56)
app//org.apache.spark.sql.execution.streaming.MicroBatchExecution.runActivatedStream(MicroBatchExecution.scala:175)
app//org.apache.spark.sql.execution.streaming.StreamExecution.org$apache$spark$sql$execution$streaming$StreamExecution$$runStream(StreamExecution.scala:332)
app//org.apache.spark.sql.execution.streaming.StreamExecution$$anon$1.run(StreamExecution.scala:244)


== Sink ==
0: 
1: [3] [2] [1]
2: [6] [5] [4]
3: [13] [7] [10] [16] [15] [11] [17] [14] [9] [8] [12] [18]
4: [20] [19] [21]
5: [23] [22] [24] [25]
6: [29] [27] [34] [31] [30] [32] [28] [26] [33]
7: 
8: [40] [35] [38] [36] [39] [37]
9: [42] [41]
10: 
11: [43] [44] [45]
12: [46] [47] [48] [49] [50] [51]
13: [54] [58] [52] [56] [59] [55] [53] [57]
14: 
15: [60]
16: [61] [62]
17: [64] [63] [65]
18: [67] [66]
19: [72] [74] [68] [73]
20: 
21: [75] [76] [77]
22: [78]
23: [81] [80]
24: [79]
25: [85] [82] [86] [83] [84]
26: [87] [88]
27: [89] [90] [91]
28: 


== Plan ==
== Parsed Logical Plan ==
WriteToDataSourceV2 org.apache.spark.sql.execution.streaming.sources.MicroBatchWrite@328e0064
+- SerializeFromObject [input[0, int, false] AS value#14549]
   +- MapElements org.apache.spark.sql.kafka010.KafkaSourceStressSuite$$Lambda$5915/0x0000000801b42040@cc8e995, class scala.Tuple2, [StructField(_1,StringType,true), StructField(_2,StringType,true)], obj#14548: int
      +- DeserializeToObject newInstance(class scala.Tuple2), obj#14547: scala.Tuple2
         +- Project [cast(key#14523 as string) AS key#14537, cast(value#14524 as string) AS value#14538]
            +- StreamingDataSourceV2Relation [key#14523, value#14524, topic#14525, partition#14526, offset#14527L, timestamp#14528, timestampType#14529], org.apache.spark.sql.kafka010.KafkaSourceProvider$KafkaScan@51b4bdab, KafkaV2[SubscribePattern[stress.*]], {"stress1":{"8":1,"11":1,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"9":1,"3":0,"12":2,"15":1,"6":1,"0":4}}, {"stress1":{"17":0,"8":1,"11":1,"20":0,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"19":0,"18":0,"9":1,"21":0,"3":0,"12":2,"15":1,"6":1,"0":4}}

== Analyzed Logical Plan ==

WriteToDataSourceV2 org.apache.spark.sql.execution.streaming.sources.MicroBatchWrite@328e0064
+- SerializeFromObject [input[0, int, false] AS value#14549]
   +- MapElements org.apache.spark.sql.kafka010.KafkaSourceStressSuite$$Lambda$5915/0x0000000801b42040@cc8e995, class scala.Tuple2, [StructField(_1,StringType,true), StructField(_2,StringType,true)], obj#14548: int
      +- DeserializeToObject newInstance(class scala.Tuple2), obj#14547: scala.Tuple2
         +- Project [cast(key#14523 as string) AS key#14537, cast(value#14524 as string) AS value#14538]
            +- StreamingDataSourceV2Relation [key#14523, value#14524, topic#14525, partition#14526, offset#14527L, timestamp#14528, timestampType#14529], org.apache.spark.sql.kafka010.KafkaSourceProvider$KafkaScan@51b4bdab, KafkaV2[SubscribePattern[stress.*]], {"stress1":{"8":1,"11":1,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"9":1,"3":0,"12":2,"15":1,"6":1,"0":4}}, {"stress1":{"17":0,"8":1,"11":1,"20":0,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"19":0,"18":0,"9":1,"21":0,"3":0,"12":2,"15":1,"6":1,"0":4}}

== Optimized Logical Plan ==
WriteToDataSourceV2 org.apache.spark.sql.execution.streaming.sources.MicroBatchWrite@328e0064
+- SerializeFromObject [input[0, int, false] AS value#14549]
   +- MapElements org.apache.spark.sql.kafka010.KafkaSourceStressSuite$$Lambda$5915/0x0000000801b42040@cc8e995, class scala.Tuple2, [StructField(_1,StringType,true), StructField(_2,StringType,true)], obj#14548: int
      +- DeserializeToObject newInstance(class scala.Tuple2), obj#14547: scala.Tuple2
         +- Project [cast(key#14523 as string) AS key#14537, cast(value#14524 as string) AS value#14538]
            +- StreamingDataSourceV2Relation [key#14523, value#14524, topic#14525, partition#14526, offset#14527L, timestamp#14528, timestampType#14529], org.apache.spark.sql.kafka010.KafkaSourceProvider$KafkaScan@51b4bdab, KafkaV2[SubscribePattern[stress.*]], {"stress1":{"8":1,"11":1,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"9":1,"3":0,"12":2,"15":1,"6":1,"0":4}}, {"stress1":{"17":0,"8":1,"11":1,"20":0,"2":4,"5":1,"14":2,"13":2,"4":1,"16":0,"7":2,"1":4,"10":1,"19":0,"18":0,"9":1,"21":0,"3":0,"12":2,"15":1,"6":1,"0":4}}

== Physical Plan ==
WriteToDataSourceV2 org.apache.spark.sql.execution.streaming.sources.MicroBatchWrite@328e0064
+- *(1) SerializeFromObject [input[0, int, false] AS value#14549]
   +- *(1) MapElements org.apache.spark.sql.kafka010.KafkaSourceStressSuite$$Lambda$5915/0x0000000801b42040@cc8e995, obj#14548: int
      +- *(1) DeserializeToObject newInstance(class scala.Tuple2), obj#14547: scala.Tuple2
         +- *(1) Project [cast(key#14523 as string) AS key#14537, cast(value#14524 as string) AS value#14538]
            +- *(1) Project [key#14523, value#14524, topic#14525, partition#14526, offset#14527L, timestamp#14528, timestampType#14529]
               +- *(1) MicroBatchScan[key#14523, value#14524, topic#14525, partition#14526, offset#14527L, timestamp#14528, timestampType#14529] class org.apache.spark.sql.kafka010.KafkaSourceProvider$KafkaScan

         
         
      at org.scalatest.Assertions.newAssertionFailedException(Assertions.scala:528)
      at org.scalatest.Assertions.newAssertionFailedException$(Assertions.scala:527)
      at org.scalatest.FunSuite.newAssertionFailedException(FunSuite.scala:1560)
      at org.scalatest.Assertions.fail(Assertions.scala:1089)
      at org.scalatest.Assertions.fail$(Assertions.scala:1085)
      at org.scalatest.FunSuite.fail(FunSuite.scala:1560)
      at org.apache.spark.sql.streaming.StreamTest.failTest$1(StreamTest.scala:444)
      at org.apache.spark.sql.streaming.StreamTest.$anonfun$testStream$53(StreamTest.scala:725)
      at scala.Option.foreach(Option.scala:274)
      at org.apache.spark.sql.streaming.StreamTest.executeAction$1(StreamTest.scala:725)
      at org.apache.spark.sql.streaming.StreamTest.$anonfun$testStream$56(StreamTest.scala:770)
      at org.apache.spark.sql.streaming.StreamTest.$anonfun$testStream$56$adapted(StreamTest.scala:757)
      at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62)
      at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55)
      at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49)
      at org.apache.spark.sql.streaming.StreamTest.liftedTree1$1(StreamTest.scala:757)
      at org.apache.spark.sql.streaming.StreamTest.testStream(StreamTest.scala:756)
      at org.apache.spark.sql.streaming.StreamTest.testStream$(StreamTest.scala:326)
      at org.apache.spark.sql.kafka010.KafkaSourceTest.testStream(KafkaMicroBatchSourceSuite.scala:50)
      at org.apache.spark.sql.streaming.StreamTest.runStressTest(StreamTest.scala:868)
      at org.apache.spark.sql.streaming.StreamTest.runStressTest$(StreamTest.scala:820)
      at org.apache.spark.sql.kafka010.KafkaSourceTest.runStressTest(KafkaMicroBatchSourceSuite.scala:50)
      at org.apache.spark.sql.kafka010.KafkaSourceStressSuite.$anonfun$new$137(KafkaMicroBatchSourceSuite.scala:1652)
      at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
      at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
      at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
      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:149)
      at org.scalatest.FunSuiteLike.invokeWithFixture$1(FunSuiteLike.scala:184)
      at org.scalatest.FunSuiteLike.$anonfun$runTest$1(FunSuiteLike.scala:196)
      at org.scalatest.SuperEngine.runTestImpl(Engine.scala:289)
      at org.scalatest.FunSuiteLike.runTest(FunSuiteLike.scala:196)
      at org.scalatest.FunSuiteLike.runTest$(FunSuiteLike.scala:178)
      at org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterEach$$super$runTest(SparkFunSuite.scala:56)
      at org.scalatest.BeforeAndAfterEach.runTest(BeforeAndAfterEach.scala:221)
      at org.scalatest.BeforeAndAfterEach.runTest$(BeforeAndAfterEach.scala:214)
      at org.apache.spark.SparkFunSuite.runTest(SparkFunSuite.scala:56)
      at org.scalatest.FunSuiteLike.$anonfun$runTests$1(FunSuiteLike.scala:229)
      at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:396)
      at scala.collection.immutable.List.foreach(List.scala:392)
      at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384)
      at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:379)
      at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:461)
      at org.scalatest.FunSuiteLike.runTests(FunSuiteLike.scala:229)
      at org.scalatest.FunSuiteLike.runTests$(FunSuiteLike.scala:228)
      at org.scalatest.FunSuite.runTests(FunSuite.scala:1560)
      at org.scalatest.Suite.run(Suite.scala:1147)
      at org.scalatest.Suite.run$(Suite.scala:1129)
      at org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560)
      at org.scalatest.FunSuiteLike.$anonfun$run$1(FunSuiteLike.scala:233)
      at org.scalatest.SuperEngine.runImpl(Engine.scala:521)
      at org.scalatest.FunSuiteLike.run(FunSuiteLike.scala:233)
      at org.scalatest.FunSuiteLike.run$(FunSuiteLike.scala:232)
      at org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterAll$$super$run(SparkFunSuite.scala:56)
      at org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
      at org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
      at org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
      at org.apache.spark.SparkFunSuite.run(SparkFunSuite.scala:56)
      at org.scalatest.Suite.callExecuteOnSuite$1(Suite.scala:1210)
      at org.scalatest.Suite.$anonfun$runNestedSuites$1(Suite.scala:1257)
      at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
      at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
      at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:198)
      at org.scalatest.Suite.runNestedSuites(Suite.scala:1255)
      at org.scalatest.Suite.runNestedSuites$(Suite.scala:1189)
      at org.scalatest.tools.DiscoverySuite.runNestedSuites(DiscoverySuite.scala:30)
      at org.scalatest.Suite.run(Suite.scala:1144)
      at org.scalatest.Suite.run$(Suite.scala:1129)
      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$13(Runner.scala:1346)
      at org.scalatest.tools.Runner$.$anonfun$doRunRunRunDaDoRunRun$13$adapted(Runner.scala:1340)
      at scala.collection.immutable.List.foreach(List.scala:392)
      at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1340)
      at org.scalatest.tools.Runner$.$anonfun$runOptionallyWithPassFailReporter$24(Runner.scala:1031)
      at org.scalatest.tools.Runner$.$anonfun$runOptionallyWithPassFailReporter$24$adapted(Runner.scala:1010)
      at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1506)
      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)