@@ -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,119 @@ export_import_round_trip_case2(Config) ->
358363 {skip , " Should not run in mixed version environments" }
359364 end .
360365
366+ export_import_round_trip_operator_policy (Config ) ->
367+ case rabbit_ct_helpers :is_mixed_versions () of
368+ false ->
369+ import_file_case (Config , " case23" ),
370+ Defs = export (Config ),
371+ Parameters = maps :get (parameters , Defs , []),
372+ OperatorPolicy = lists :filter (
373+ fun (P ) ->
374+ maps :get (<<" component" >>, P , undefined ) =:= <<" operator_policy" >>
375+ end ,
376+ Parameters
377+ ),
378+ ? assertEqual (1 , length (OperatorPolicy )),
379+ [OpPol ] = OperatorPolicy ,
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+ _ ->
388+ {skip , " Should not run in mixed version environments" }
389+ end .
390+
391+ export_import_round_trip_vhost_limits (Config ) ->
392+ case rabbit_ct_helpers :is_mixed_versions () of
393+ false ->
394+ import_file_case (Config , " case6" ),
395+ Defs = export (Config ),
396+ Parameters = maps :get (parameters , Defs , []),
397+ VHostLimits = lists :filter (
398+ fun (P ) ->
399+ maps :get (<<" component" >>, P , undefined ) =:= <<" vhost-limits" >>
400+ end ,
401+ Parameters
402+ ),
403+ ? assertEqual (1 , length (VHostLimits )),
404+ [Limits ] = VHostLimits ,
405+ Value = maps :get (<<" value" >>, Limits ),
406+ ? assert (is_map (Value )),
407+ ? assertEqual (456 , maps :get (<<" max-queues" >>, Value )),
408+ ? assertEqual (123 , maps :get (<<" max-connections" >>, Value )),
409+ import_parsed (Config , Defs );
410+ _ ->
411+ {skip , " Should not run in mixed version environments" }
412+ end .
413+
414+ export_import_round_trip_operator_policy_all_keys (Config ) ->
415+ case rabbit_ct_helpers :is_mixed_versions () of
416+ false ->
417+ import_file_case (Config , " case24" ),
418+ Defs = export (Config ),
419+ Parameters = maps :get (parameters , Defs , []),
420+ [OpPol ] = [P || P <- Parameters ,
421+ maps :get (<<" component" >>, P ) =:= <<" operator_policy" >>,
422+ maps :get (<<" name" >>, P ) =:= <<" regulated-queues" >>],
423+ Value = maps :get (<<" value" >>, OpPol ),
424+ Definition = maps :get (<<" definition" >>, Value ),
425+ ? assert (is_map (Definition )),
426+ ? assertEqual (4 , maps :size (Definition )),
427+ ? assertEqual (3600000 , maps :get (<<" expires" >>, Definition )),
428+ ? assertEqual (300000 , maps :get (<<" message-ttl" >>, Definition )),
429+ ? assertEqual (10000 , maps :get (<<" max-length" >>, Definition )),
430+ ? assertEqual (104857600 , maps :get (<<" max-length-bytes" >>, Definition )),
431+ import_parsed (Config , Defs );
432+ _ ->
433+ {skip , " Should not run in mixed version environments" }
434+ end .
435+
436+ export_import_round_trip_multiple_operator_policies (Config ) ->
437+ case rabbit_ct_helpers :is_mixed_versions () of
438+ false ->
439+ import_file_case (Config , " case25" ),
440+ Defs = export (Config ),
441+ Parameters = maps :get (parameters , Defs , []),
442+ ExpectedPolicies = [<<" transient-queues" >>, <<" limited-queues" >>, <<" archive-queues" >>],
443+ lists :foreach (fun (PolicyName ) ->
444+ [OpPol ] = [P || P <- Parameters ,
445+ maps :get (<<" component" >>, P ) =:= <<" operator_policy" >>,
446+ maps :get (<<" name" >>, P ) =:= PolicyName ],
447+ Value = maps :get (<<" value" >>, OpPol ),
448+ Definition = maps :get (<<" definition" >>, Value ),
449+ ? assert (is_map (Definition )),
450+ ? assert (maps :size (Definition ) >= 2 )
451+ end , ExpectedPolicies ),
452+ import_parsed (Config , Defs );
453+ _ ->
454+ {skip , " Should not run in mixed version environments" }
455+ end .
456+
457+ export_import_round_trip_mixed_parameters (Config ) ->
458+ case rabbit_ct_helpers :is_mixed_versions () of
459+ false ->
460+ import_file_case (Config , " case26" ),
461+ Defs = export (Config ),
462+ Parameters = maps :get (parameters , Defs , []),
463+ [Limits ] = [P || P <- Parameters ,
464+ maps :get (<<" component" >>, P ) =:= <<" vhost-limits" >>,
465+ maps :get (<<" name" >>, P ) =:= <<" limits" >>],
466+ LimitsValue = maps :get (<<" value" >>, Limits ),
467+ ? assert (is_map (LimitsValue )),
468+ [OpPol ] = [P || P <- Parameters ,
469+ maps :get (<<" component" >>, P ) =:= <<" operator_policy" >>,
470+ maps :get (<<" name" >>, P ) =:= <<" temp-queues" >>],
471+ OpPolValue = maps :get (<<" value" >>, OpPol ),
472+ OpPolDefinition = maps :get (<<" definition" >>, OpPolValue ),
473+ ? assert (is_map (OpPolDefinition )),
474+ import_parsed (Config , Defs );
475+ _ ->
476+ {skip , " Should not run in mixed version environments" }
477+ end .
478+
361479import_on_a_booting_node_using_classic_local_source (Config ) ->
362480 % % see case5.json
363481 VHost = <<" vhost2" >>,
0 commit comments