Pipeline controller: plan 2 (hard +, error +50 %), backlog throttle, 2 trajectory workers, stop rules, summaries every 50; budget reserve

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 13:35:54 +02:00
parent 1c4667a0fc
commit 13360292dd
781 changed files with 50211 additions and 22 deletions

View File

@@ -0,0 +1,143 @@
CLASS {{p}}t02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
TYPES ty_reason TYPE c LENGTH 10.
DATA mo_cut TYPE REF TO {{p}}return_checker.
DATA mo_env TYPE REF TO if_osql_test_environment.
METHODS setup.
METHODS teardown.
METHODS valid_return
RETURNING VALUE(rs_return) TYPE {{p}}return_checker=>ty_return_data.
METHODS expect_reason
IMPORTING is_data TYPE {{p}}return_checker=>ty_return_data
iv_reason TYPE ty_reason.
METHODS ok_return FOR TESTING.
METHODS rejects_no_data FOR TESTING.
METHODS rejects_empty_date FOR TESTING.
METHODS rejects_date_order FOR TESTING.
METHODS rejects_mileage FOR TESTING.
METHODS rejects_fuel FOR TESTING.
METHODS rejects_damage FOR TESTING.
METHODS rejects_unknown FOR TESTING.
METHODS rejects_too_long FOR TESTING.
METHODS accepts_max_duration FOR TESTING.
METHODS checks_data_before_master FOR TESTING.
ENDCLASS.
CLASS {{p}}t02_hidden IMPLEMENTATION.
METHOD setup.
mo_env = cl_osql_test_environment=>create( VALUE #( ( '{{P}}VEHICLE' ) ) ).
DATA lt_vehicle TYPE STANDARD TABLE OF {{p}}vehicle WITH EMPTY KEY.
lt_vehicle = VALUE #( ( mandt = sy-mandt
vehicle_id = 'V-1001'
max_days = 5 )
( mandt = sy-mandt
vehicle_id = 'V-1002'
max_days = 30 ) ).
mo_env->insert_test_data( lt_vehicle ).
mo_cut = NEW {{p}}return_checker( ).
ENDMETHOD.
METHOD teardown.
mo_env->destroy( ).
ENDMETHOD.
METHOD valid_return.
rs_return = VALUE #( rental_id = 'R-4711'
vehicle_id = 'V-1001'
start_date = '20240101'
return_date = '20240103'
start_mileage = 10000
end_mileage = 10250
fuel_percent = 80
damage_code = ''
is_damaged = abap_false ).
ENDMETHOD.
METHOD expect_reason.
TRY.
mo_cut->check( is_data ).
cl_abap_unit_assert=>fail( msg = |no exception, expected { iv_reason }| ).
CATCH {{p}}cx_return_error INTO DATA(lo_error).
cl_abap_unit_assert=>assert_equals( exp = iv_reason act = lo_error->mv_reason ).
ENDTRY.
ENDMETHOD.
METHOD ok_return.
TRY.
mo_cut->check( valid_return( ) ).
CATCH {{p}}cx_return_error INTO DATA(lo_error).
cl_abap_unit_assert=>fail( msg = |unexpected reason { lo_error->mv_reason }| ).
ENDTRY.
ENDMETHOD.
METHOD rejects_no_data.
DATA(ls_return) = valid_return( ).
CLEAR ls_return-rental_id.
expect_reason( is_data = ls_return iv_reason = 'NO_DATA' ).
ENDMETHOD.
METHOD rejects_empty_date.
DATA(ls_return) = valid_return( ).
CLEAR ls_return-start_date.
expect_reason( is_data = ls_return iv_reason = 'NO_DATA' ).
ENDMETHOD.
METHOD rejects_date_order.
DATA(ls_return) = valid_return( ).
ls_return-return_date = '20231231'.
expect_reason( is_data = ls_return iv_reason = 'DATE_ORDER' ).
ENDMETHOD.
METHOD rejects_mileage.
DATA(ls_return) = valid_return( ).
ls_return-end_mileage = ls_return-start_mileage - 1.
expect_reason( is_data = ls_return iv_reason = 'MILEAGE' ).
ENDMETHOD.
METHOD rejects_fuel.
DATA(ls_return) = valid_return( ).
ls_return-fuel_percent = 101.
expect_reason( is_data = ls_return iv_reason = 'FUEL' ).
ENDMETHOD.
METHOD rejects_damage.
DATA(ls_return) = valid_return( ).
ls_return-is_damaged = abap_true.
CLEAR ls_return-damage_code.
expect_reason( is_data = ls_return iv_reason = 'DAMAGE' ).
ENDMETHOD.
METHOD rejects_unknown.
DATA(ls_return) = valid_return( ).
ls_return-vehicle_id = 'V-9999'.
expect_reason( is_data = ls_return iv_reason = 'UNKNOWN' ).
ENDMETHOD.
METHOD rejects_too_long.
DATA(ls_return) = valid_return( ).
ls_return-return_date = '20240110'.
expect_reason( is_data = ls_return iv_reason = 'TOO_LONG' ).
ENDMETHOD.
METHOD accepts_max_duration.
DATA(ls_return) = valid_return( ).
ls_return-return_date = '20240105'.
TRY.
mo_cut->check( ls_return ).
CATCH {{p}}cx_return_error INTO DATA(lo_error).
cl_abap_unit_assert=>fail( msg = |unexpected reason { lo_error->mv_reason }| ).
ENDTRY.
ENDMETHOD.
METHOD checks_data_before_master.
DATA(ls_return) = valid_return( ).
ls_return-vehicle_id = 'V-9999'.
ls_return-fuel_percent = 150.
expect_reason( is_data = ls_return iv_reason = 'FUEL' ).
ENDMETHOD.
ENDCLASS.