@@ -60,6 +60,8 @@ pub struct FuzzerGenTaskParams {
60
60
pub timeout_secs : u64 ,
61
61
/// Requires downloading multiversion binaries.
62
62
pub require_multiversion_setup : bool ,
63
+ /// Should multiversion generate tasks exist for this.
64
+ pub require_multiversion_generate_tasks : bool ,
63
65
/// Location of generated task configuration.
64
66
pub config_location : String ,
65
67
/// List of tasks generated sub-tasks should depend on.
@@ -224,7 +226,7 @@ impl GenFuzzerService for GenFuzzerServiceImpl {
224
226
) -> Result < Box < dyn GeneratedSuite > > {
225
227
let task_name = & params. task_name ;
226
228
let mut sub_tasks: Vec < EvgTask > = vec ! [ ] ;
227
- if params. is_multiversion ( ) {
229
+ if params. require_multiversion_generate_tasks {
228
230
event ! (
229
231
Level :: INFO ,
230
232
task_name = task_name. as_str( ) ,
@@ -519,33 +521,82 @@ mod tests {
519
521
}
520
522
521
523
#[ test]
522
- fn test_build_multiversion_fuzzer_sub_task ( ) {
523
- let display_name = "my_task" ;
524
- let sub_task_index = 42 ;
524
+ fn test_build_multiversion_fuzzer_sub_tasks ( ) {
525
+ let num_tasks = 10 ;
526
+ let multiversion_generate_tasks = Some ( vec ! [
527
+ MultiversionGenerateTaskConfig {
528
+ suite_name: "suite1_last_lts" . to_string( ) ,
529
+ old_version: "last-lts" . to_string( ) ,
530
+ bazel_target: None ,
531
+ } ,
532
+ MultiversionGenerateTaskConfig {
533
+ suite_name: "suite1_last_continuous" . to_string( ) ,
534
+ old_version: "last-continuous" . to_string( ) ,
535
+ bazel_target: None ,
536
+ } ,
537
+ ] ) ;
525
538
let params = FuzzerGenTaskParams {
526
- task_name : "some task " . to_string ( ) ,
539
+ task_name : "some_task " . to_string ( ) ,
527
540
require_multiversion_setup : true ,
528
541
dependencies : vec ! [ "archive_dist_test_debug" . to_string( ) ] ,
542
+ multiversion_generate_tasks,
543
+ require_multiversion_generate_tasks : true ,
544
+ num_tasks,
529
545
..Default :: default ( )
530
546
} ;
531
547
532
- let sub_task = build_fuzzer_sub_task ( display_name, sub_task_index, & params, None , None ) ;
548
+ let gen_fuzzer_service = GenFuzzerServiceImpl :: new ( ) ;
549
+ let suite = gen_fuzzer_service. generate_fuzzer_task ( & params) . unwrap ( ) ;
533
550
534
- assert_eq ! ( sub_task. name, "my_task_42" ) ;
535
- assert ! ( sub_task. commands. is_some( ) ) ;
536
- let commands = sub_task. commands . unwrap ( ) ;
551
+ assert_eq ! ( suite. display_name( ) , "some_task" . to_string( ) ) ;
537
552
assert_eq ! (
538
- get_evg_fn_name ( & commands [ 0 ] ) ,
539
- Some ( "git get project no modules" )
553
+ suite . sub_tasks ( ) . len ( ) ,
554
+ 20 // 2 multiversion configs * 10 sub-tasks each
540
555
) ;
541
- assert_eq ! ( get_evg_fn_name( & commands[ 2 ] ) , Some ( "do setup" ) ) ;
542
- assert_eq ! ( get_evg_fn_name( & commands[ 4 ] ) , Some ( "do multiversion setup" ) ) ;
543
- assert_eq ! ( get_evg_fn_name( & commands[ 6 ] ) , Some ( "run jstestfuzz" ) ) ;
544
- assert_eq ! ( get_evg_fn_name( & commands[ 7 ] ) , Some ( "run generated tests" ) ) ;
545
- assert_eq ! (
546
- sub_task. depends_on. unwrap( ) [ 0 ] . name,
547
- "archive_dist_test_debug"
548
- )
556
+ for sub_task in suite. sub_tasks ( ) {
557
+ assert ! ( sub_task. evg_task. commands. is_some( ) ) ;
558
+ let commands = sub_task. evg_task . commands . unwrap ( ) ;
559
+ assert_eq ! (
560
+ get_evg_fn_name( & commands[ 0 ] ) ,
561
+ Some ( "git get project no modules" )
562
+ ) ;
563
+ assert_eq ! ( get_evg_fn_name( & commands[ 2 ] ) , Some ( "do setup" ) ) ;
564
+ assert_eq ! ( get_evg_fn_name( & commands[ 4 ] ) , Some ( "do multiversion setup" ) ) ;
565
+ assert_eq ! ( get_evg_fn_name( & commands[ 6 ] ) , Some ( "run jstestfuzz" ) ) ;
566
+ assert_eq ! ( get_evg_fn_name( & commands[ 7 ] ) , Some ( "run generated tests" ) ) ;
567
+ }
568
+ }
569
+
570
+ #[ test]
571
+ fn test_build_multiversion_no_generate_fuzzer_sub_task ( ) {
572
+ let num_tasks = 10 ;
573
+
574
+ let params = FuzzerGenTaskParams {
575
+ task_name : "some_task" . to_string ( ) ,
576
+ require_multiversion_setup : true ,
577
+ dependencies : vec ! [ "archive_dist_test_debug" . to_string( ) ] ,
578
+ require_multiversion_generate_tasks : false ,
579
+ num_tasks,
580
+ ..Default :: default ( )
581
+ } ;
582
+
583
+ let gen_fuzzer_service = GenFuzzerServiceImpl :: new ( ) ;
584
+ let suite = gen_fuzzer_service. generate_fuzzer_task ( & params) . unwrap ( ) ;
585
+
586
+ assert_eq ! ( suite. display_name( ) , "some_task" . to_string( ) ) ;
587
+ assert_eq ! ( suite. sub_tasks( ) . len( ) , num_tasks as usize ) ;
588
+ for sub_task in suite. sub_tasks ( ) {
589
+ assert ! ( sub_task. evg_task. commands. is_some( ) ) ;
590
+ let commands = sub_task. evg_task . commands . unwrap ( ) ;
591
+ assert_eq ! (
592
+ get_evg_fn_name( & commands[ 0 ] ) ,
593
+ Some ( "git get project no modules" )
594
+ ) ;
595
+ assert_eq ! ( get_evg_fn_name( & commands[ 2 ] ) , Some ( "do setup" ) ) ;
596
+ assert_eq ! ( get_evg_fn_name( & commands[ 4 ] ) , Some ( "do multiversion setup" ) ) ;
597
+ assert_eq ! ( get_evg_fn_name( & commands[ 6 ] ) , Some ( "run jstestfuzz" ) ) ;
598
+ assert_eq ! ( get_evg_fn_name( & commands[ 7 ] ) , Some ( "run generated tests" ) ) ;
599
+ }
549
600
}
550
601
551
602
#[ test]
0 commit comments