@@ -292,6 +292,7 @@ pub fn error_policy(_error: &Error, _ctx: Context<Ctx>) -> Action {
292
292
#[ cfg( test) ]
293
293
mod tests {
294
294
use crate :: spark_k8s_controller:: pod_template_config_map;
295
+ use crate :: spark_k8s_controller:: spark_job;
295
296
use crate :: SparkApplication ;
296
297
297
298
#[ test]
@@ -305,7 +306,7 @@ kind: SparkApplication
305
306
metadata:
306
307
name: spark-examples-s3
307
308
namespace: default
308
- uid: b4952dc3-d670-11e5-8cd0-68f728db1985
309
+ uid: " b4952dc3-d670-11e5-8cd0-68f728db1985"
309
310
spec:
310
311
version: "1.0"
311
312
sparkImage: docker.stackable.tech/stackable/spark-k8s:3.2.1-hadoop3.2-python39-aws1.11.375-stackable0.3.0
@@ -329,7 +330,6 @@ spec:
329
330
let spark_image = spark_application. spec . spark_image . as_ref ( ) . unwrap ( ) ;
330
331
let pod_template_config_map =
331
332
pod_template_config_map ( & spark_application, & spark_image) . unwrap ( ) ;
332
- println ! ( "{:#?}" , & pod_template_config_map) ;
333
333
334
334
assert ! ( & pod_template_config_map. binary_data. is_none( ) ) ;
335
335
assert_eq ! (
@@ -345,4 +345,64 @@ spec:
345
345
. map( |r| r[ 0 ] . uid. to_string( ) )
346
346
) ;
347
347
}
348
+
349
+ #[ test]
350
+ fn test_job ( ) {
351
+ // N.B. uid provided explicitly as in previous test
352
+ let spark_application = serde_yaml:: from_str :: < SparkApplication > (
353
+ r#"
354
+ ---
355
+ apiVersion: spark.stackable.tech/v1alpha1
356
+ kind: SparkApplication
357
+ metadata:
358
+ name: spark-examples-s3
359
+ namespace: default
360
+ uid: "b4952dc3-d670-11e5-8cd0-68f728db1985"
361
+ spec:
362
+ version: "1.0"
363
+ sparkImage: docker.stackable.tech/stackable/spark-k8s:3.2.1-hadoop3.2-python39-aws1.11.375-stackable0.3.0
364
+ mode: cluster
365
+ mainClass: org.apache.spark.examples.SparkPi
366
+ mainApplicationFile: s3a://stackable-spark-k8s-jars/jobs/spark-examples_2.12-3.2.1.jar
367
+ sparkConf:
368
+ "spark.hadoop.fs.s3a.aws.credentials.provider": "org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider"
369
+ driver:
370
+ cores: 1
371
+ coreLimit: "1200m"
372
+ memory: "512m"
373
+ executor:
374
+ cores: 1
375
+ instances: 3
376
+ memory: "512m"
377
+ "# ) . unwrap ( ) ;
378
+
379
+ let spark_image = spark_application. spec . spark_image . as_ref ( ) . unwrap ( ) ;
380
+ let job = spark_job ( & spark_application, spark_image) . unwrap ( ) ;
381
+ let job_containers = & job
382
+ . clone ( )
383
+ . spec
384
+ . expect ( "no job spec found!" )
385
+ . template
386
+ . spec
387
+ . expect ( "no template spec found!" )
388
+ . containers ;
389
+ assert_eq ! ( 1 , job_containers. len( ) ) ;
390
+
391
+ let job_args = & job_containers[ 0 ] . args . clone ( ) . expect ( "no job args found!" ) ;
392
+ assert_eq ! ( 3 , job_args. len( ) ) ;
393
+ let spark_submit_cmd = & job_args[ 2 ] ;
394
+
395
+ assert_eq ! (
396
+ Some ( "s3a://stackable-spark-k8s-jars/jobs/spark-examples_2.12-3.2.1.jar" ) ,
397
+ spark_submit_cmd. split_whitespace( ) . rev( ) . next( )
398
+ ) ;
399
+
400
+ assert_eq ! (
401
+ Some ( "b4952dc3-d670-11e5-8cd0-68f728db1985" . to_string( ) ) ,
402
+ job. clone( )
403
+ . metadata
404
+ . owner_references
405
+ . map( |r| r[ 0 ] . uid. to_string( ) )
406
+ ) ;
407
+ }
348
408
}
0 commit comments