@@ -27,6 +27,7 @@ import Testing
27
27
struct SparkSessionTests {
28
28
@Test
29
29
func sparkContext( ) async throws {
30
+ await SparkSession . builder. clear ( )
30
31
let spark = try await SparkSession . builder. getOrCreate ( )
31
32
await #expect( throws: SparkConnectError . UnsupportedOperationException) {
32
33
try await spark. sparkContext
@@ -36,12 +37,14 @@ struct SparkSessionTests {
36
37
37
38
@Test
38
39
func stop( ) async throws {
40
+ await SparkSession . builder. clear ( )
39
41
let spark = try await SparkSession . builder. getOrCreate ( )
40
42
await spark. stop ( )
41
43
}
42
44
43
45
@Test
44
46
func newSession( ) async throws {
47
+ await SparkSession . builder. clear ( )
45
48
let spark = try await SparkSession . builder. getOrCreate ( )
46
49
await spark. stop ( )
47
50
let newSpark = try await spark. newSession ( )
@@ -52,16 +55,31 @@ struct SparkSessionTests {
52
55
53
56
@Test
54
57
func sessionID( ) async throws {
58
+ await SparkSession . builder. clear ( )
55
59
let spark1 = try await SparkSession . builder. getOrCreate ( )
56
- await spark1. stop ( )
57
60
let remote = ProcessInfo . processInfo. environment [ " SPARK_REMOTE " ] ?? " sc://localhost "
58
61
let spark2 = try await SparkSession . builder. remote ( " \( remote) /;session_id= \( spark1. sessionID) " ) . getOrCreate ( )
59
62
await spark2. stop ( )
60
63
#expect( spark1. sessionID == spark2. sessionID)
61
64
#expect( spark1 == spark2)
62
65
}
63
66
67
+ @Test
68
+ func closedSessionID( ) async throws {
69
+ await SparkSession . builder. clear ( )
70
+ let spark1 = try await SparkSession . builder. getOrCreate ( )
71
+ if await spark1. version >= " 4.0.0 " {
72
+ let sessionID = spark1. sessionID
73
+ await spark1. stop ( )
74
+ let remote = ProcessInfo . processInfo. environment [ " SPARK_REMOTE " ] ?? " sc://localhost "
75
+ try await #require( throws: Error . self) {
76
+ try await SparkSession . builder. remote ( " \( remote) /;session_id= \( sessionID) " ) . getOrCreate ( )
77
+ }
78
+ }
79
+ }
80
+
64
81
@Test func userContext( ) async throws {
82
+ await SparkSession . builder. clear ( )
65
83
let spark = try await SparkSession . builder. getOrCreate ( )
66
84
#if os(macOS) || os(Linux)
67
85
let defaultUserContext = ProcessInfo . processInfo. userName. toUserContext
@@ -74,6 +92,7 @@ struct SparkSessionTests {
74
92
75
93
@Test
76
94
func version( ) async throws {
95
+ await SparkSession . builder. clear ( )
77
96
let spark = try await SparkSession . builder. getOrCreate ( )
78
97
let version = await spark. version
79
98
#expect( version. starts ( with: " 4.0.0 " ) || version. starts ( with: " 3.5. " ) )
@@ -82,6 +101,7 @@ struct SparkSessionTests {
82
101
83
102
@Test
84
103
func conf( ) async throws {
104
+ await SparkSession . builder. clear ( )
85
105
let spark = try await SparkSession . builder. getOrCreate ( )
86
106
try await spark. conf. set ( " spark.x " , " y " )
87
107
#expect( try await spark. conf. get ( " spark.x " ) == " y " )
@@ -91,6 +111,7 @@ struct SparkSessionTests {
91
111
92
112
@Test
93
113
func emptyDataFrame( ) async throws {
114
+ await SparkSession . builder. clear ( )
94
115
let spark = try await SparkSession . builder. getOrCreate ( )
95
116
#expect( try await spark. emptyDataFrame. count ( ) == 0 )
96
117
#expect( try await spark. emptyDataFrame. dtypes. isEmpty)
@@ -100,6 +121,7 @@ struct SparkSessionTests {
100
121
101
122
@Test
102
123
func range( ) async throws {
124
+ await SparkSession . builder. clear ( )
103
125
let spark = try await SparkSession . builder. getOrCreate ( )
104
126
#expect( try await spark. range ( 10 ) . count ( ) == 10 )
105
127
#expect( try await spark. range ( 0 , 100 ) . count ( ) == 100 )
@@ -110,6 +132,7 @@ struct SparkSessionTests {
110
132
#if !os(Linux)
111
133
@Test
112
134
func sql( ) async throws {
135
+ await SparkSession . builder. clear ( )
113
136
let spark = try await SparkSession . builder. getOrCreate ( )
114
137
let expected = [ Row ( true , 1 , " a " ) ]
115
138
if await spark. version. starts ( with: " 4. " ) {
@@ -122,6 +145,7 @@ struct SparkSessionTests {
122
145
123
146
@Test
124
147
func table( ) async throws {
148
+ await SparkSession . builder. clear ( )
125
149
let tableName = " TABLE_ " + UUID( ) . uuidString. replacingOccurrences ( of: " - " , with: " " )
126
150
let spark = try await SparkSession . builder. getOrCreate ( )
127
151
try await SQLHelper . withTable ( spark, tableName) ( {
@@ -133,6 +157,7 @@ struct SparkSessionTests {
133
157
134
158
@Test
135
159
func time( ) async throws {
160
+ await SparkSession . builder. clear ( )
136
161
let spark = try await SparkSession . builder. getOrCreate ( )
137
162
#expect( try await spark. time ( spark. range ( 1000 ) . count) == 1000 )
138
163
#if !os(Linux)
@@ -144,6 +169,7 @@ struct SparkSessionTests {
144
169
145
170
@Test
146
171
func tag( ) async throws {
172
+ await SparkSession . builder. clear ( )
147
173
let spark = try await SparkSession . builder. getOrCreate ( )
148
174
try await spark. addTag ( " tag1 " )
149
175
#expect( await spark. getTags ( ) == Set ( [ " tag1 " ] ) )
@@ -158,6 +184,7 @@ struct SparkSessionTests {
158
184
159
185
@Test
160
186
func invalidTags( ) async throws {
187
+ await SparkSession . builder. clear ( )
161
188
let spark = try await SparkSession . builder. getOrCreate ( )
162
189
await #expect( throws: SparkConnectError . InvalidArgumentException) {
163
190
try await spark. addTag ( " " )
@@ -170,20 +197,23 @@ struct SparkSessionTests {
170
197
171
198
@Test
172
199
func interruptAll( ) async throws {
200
+ await SparkSession . builder. clear ( )
173
201
let spark = try await SparkSession . builder. getOrCreate ( )
174
202
#expect( try await spark. interruptAll ( ) == [ ] )
175
203
await spark. stop ( )
176
204
}
177
205
178
206
@Test
179
207
func interruptTag( ) async throws {
208
+ await SparkSession . builder. clear ( )
180
209
let spark = try await SparkSession . builder. getOrCreate ( )
181
210
#expect( try await spark. interruptTag ( " etl " ) == [ ] )
182
211
await spark. stop ( )
183
212
}
184
213
185
214
@Test
186
215
func interruptOperation( ) async throws {
216
+ await SparkSession . builder. clear ( )
187
217
let spark = try await SparkSession . builder. getOrCreate ( )
188
218
#expect( try await spark. interruptOperation ( " id " ) == [ ] )
189
219
await spark. stop ( )
0 commit comments