@@ -71,7 +71,12 @@ groups() ->
7171
7272 {roundtrip , [], [
7373 export_import_round_trip_case1 ,
74- export_import_round_trip_case2
74+ export_import_round_trip_case2 ,
75+ export_import_round_trip_operator_policy ,
76+ export_import_round_trip_vhost_limits ,
77+ export_import_round_trip_operator_policy_all_keys ,
78+ export_import_round_trip_multiple_operator_policies ,
79+ export_import_round_trip_mixed_parameters
7580 ]},
7681
7782 {skip_if_unchanged , [], [
@@ -358,6 +363,105 @@ export_import_round_trip_case2(Config) ->
358363 {skip , " Should not run in mixed version environments" }
359364 end .
360365
366+ run_if_not_mixed_versions (Fun ) ->
367+ case rabbit_ct_helpers :is_mixed_versions () of
368+ false -> Fun ();
369+ _ -> {skip , " Should not run in mixed version environments" }
370+ end .
371+
372+ export_import_round_trip_operator_policy (Config ) ->
373+ run_if_not_mixed_versions (fun () ->
374+ import_file_case (Config , " case23" ),
375+ Defs = export (Config ),
376+ Parameters = maps :get (parameters , Defs , []),
377+ [OpPol ] = [P || P <- Parameters ,
378+ maps :get (<<" component" >>, P ) =:= <<" operator_policy" >>,
379+ maps :get (<<" name" >>, P ) =:= <<" transient-queue-ttl" >>],
380+ Value = maps :get (<<" value" >>, OpPol ),
381+ Definition = maps :get (<<" definition" >>, Value ),
382+ ? assert (is_map (Definition )),
383+ ? assertEqual (1800000 , maps :get (<<" expires" >>, Definition )),
384+ ? assertEqual (60000 , maps :get (<<" message-ttl" >>, Definition )),
385+ ? assertEqual (1000 , maps :get (<<" max-length" >>, Definition )),
386+ import_parsed (Config , Defs )
387+ end ).
388+
389+ export_import_round_trip_vhost_limits (Config ) ->
390+ run_if_not_mixed_versions (fun () ->
391+ import_file_case (Config , " case6" ),
392+ Defs = export (Config ),
393+ Parameters = maps :get (parameters , Defs , []),
394+ VHostLimits = lists :filter (
395+ fun (P ) ->
396+ maps :get (<<" component" >>, P , undefined ) =:= <<" vhost-limits" >>
397+ end ,
398+ Parameters
399+ ),
400+ ? assertEqual (1 , length (VHostLimits )),
401+ [Limits ] = VHostLimits ,
402+ Value = maps :get (<<" value" >>, Limits ),
403+ ? assert (is_map (Value )),
404+ ? assertEqual (456 , maps :get (<<" max-queues" >>, Value )),
405+ ? assertEqual (123 , maps :get (<<" max-connections" >>, Value )),
406+ import_parsed (Config , Defs )
407+ end ).
408+
409+ export_import_round_trip_operator_policy_all_keys (Config ) ->
410+ run_if_not_mixed_versions (fun () ->
411+ import_file_case (Config , " case24" ),
412+ Defs = export (Config ),
413+ Parameters = maps :get (parameters , Defs , []),
414+ [OpPol ] = [P || P <- Parameters ,
415+ maps :get (<<" component" >>, P ) =:= <<" operator_policy" >>,
416+ maps :get (<<" name" >>, P ) =:= <<" regulated-queues" >>],
417+ Value = maps :get (<<" value" >>, OpPol ),
418+ Definition = maps :get (<<" definition" >>, Value ),
419+ ? assert (is_map (Definition )),
420+ ? assertEqual (4 , maps :size (Definition )),
421+ ? assertEqual (3600000 , maps :get (<<" expires" >>, Definition )),
422+ ? assertEqual (300000 , maps :get (<<" message-ttl" >>, Definition )),
423+ ? assertEqual (10000 , maps :get (<<" max-length" >>, Definition )),
424+ ? assertEqual (104857600 , maps :get (<<" max-length-bytes" >>, Definition )),
425+ import_parsed (Config , Defs )
426+ end ).
427+
428+ export_import_round_trip_multiple_operator_policies (Config ) ->
429+ run_if_not_mixed_versions (fun () ->
430+ import_file_case (Config , " case25" ),
431+ Defs = export (Config ),
432+ Parameters = maps :get (parameters , Defs , []),
433+ ExpectedPolicies = [<<" transient-queues" >>, <<" limited-queues" >>, <<" archive-queues" >>],
434+ lists :foreach (fun (PolicyName ) ->
435+ [OpPol ] = [P || P <- Parameters ,
436+ maps :get (<<" component" >>, P ) =:= <<" operator_policy" >>,
437+ maps :get (<<" name" >>, P ) =:= PolicyName ],
438+ Value = maps :get (<<" value" >>, OpPol ),
439+ Definition = maps :get (<<" definition" >>, Value ),
440+ ? assert (is_map (Definition )),
441+ ? assert (maps :size (Definition ) >= 2 )
442+ end , ExpectedPolicies ),
443+ import_parsed (Config , Defs )
444+ end ).
445+
446+ export_import_round_trip_mixed_parameters (Config ) ->
447+ run_if_not_mixed_versions (fun () ->
448+ import_file_case (Config , " case26" ),
449+ Defs = export (Config ),
450+ Parameters = maps :get (parameters , Defs , []),
451+ [Limits ] = [P || P <- Parameters ,
452+ maps :get (<<" component" >>, P ) =:= <<" vhost-limits" >>,
453+ maps :get (<<" name" >>, P ) =:= <<" limits" >>],
454+ LimitsValue = maps :get (<<" value" >>, Limits ),
455+ ? assert (is_map (LimitsValue )),
456+ [OpPol ] = [P || P <- Parameters ,
457+ maps :get (<<" component" >>, P ) =:= <<" operator_policy" >>,
458+ maps :get (<<" name" >>, P ) =:= <<" temp-queues" >>],
459+ OpPolValue = maps :get (<<" value" >>, OpPol ),
460+ OpPolDefinition = maps :get (<<" definition" >>, OpPolValue ),
461+ ? assert (is_map (OpPolDefinition )),
462+ import_parsed (Config , Defs )
463+ end ).
464+
361465import_on_a_booting_node_using_classic_local_source (Config ) ->
362466 % % see case5.json
363467 VHost = <<" vhost2" >>,
0 commit comments