@@ -60,6 +60,8 @@ pub struct FuzzerGenTaskParams {
6060 pub timeout_secs : u64 ,
6161 /// Requires downloading multiversion binaries.
6262 pub require_multiversion_setup : bool ,
63+ /// Should multiversion generate tasks exist for this.
64+ pub require_multiversion_generate_tasks : bool ,
6365 /// Location of generated task configuration.
6466 pub config_location : String ,
6567 /// List of tasks generated sub-tasks should depend on.
@@ -224,7 +226,7 @@ impl GenFuzzerService for GenFuzzerServiceImpl {
224226 ) -> Result < Box < dyn GeneratedSuite > > {
225227 let task_name = & params. task_name ;
226228 let mut sub_tasks: Vec < EvgTask > = vec ! [ ] ;
227- if params. is_multiversion ( ) {
229+ if params. require_multiversion_generate_tasks {
228230 event ! (
229231 Level :: INFO ,
230232 task_name = task_name. as_str( ) ,
@@ -519,33 +521,82 @@ mod tests {
519521 }
520522
521523 #[ 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+ ] ) ;
525538 let params = FuzzerGenTaskParams {
526- task_name : "some task " . to_string ( ) ,
539+ task_name : "some_task " . to_string ( ) ,
527540 require_multiversion_setup : true ,
528541 dependencies : vec ! [ "archive_dist_test_debug" . to_string( ) ] ,
542+ multiversion_generate_tasks,
543+ require_multiversion_generate_tasks : true ,
544+ num_tasks,
529545 ..Default :: default ( )
530546 } ;
531547
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 ( ) ;
533550
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( ) ) ;
537552 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
540555 ) ;
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+ }
549600 }
550601
551602 #[ test]
0 commit comments