mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Merge branch 'main' into mbtools/multi-transport
This commit is contained in:
commit
8cd68b37d1
|
@ -23,14 +23,14 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@abaplint/cli": "^2.113.105",
|
"@abaplint/cli": "^2.113.108",
|
||||||
"@abaplint/database-sqlite": "^2.10.24",
|
"@abaplint/database-sqlite": "^2.10.24",
|
||||||
"@abaplint/runtime": "^2.10.26",
|
"@abaplint/runtime": "^2.10.33",
|
||||||
"express": "^4.21.2",
|
"express": "^4.21.2",
|
||||||
"@abaplint/transpiler-cli": "^2.10.26",
|
"@abaplint/transpiler-cli": "^2.10.33",
|
||||||
"globals": "^16.0.0",
|
"globals": "^16.0.0",
|
||||||
"abapmerge": "^0.16.6",
|
"abapmerge": "^0.16.6",
|
||||||
"c8": "^10.1.3",
|
"c8": "^10.1.3",
|
||||||
"eslint": "^9.22.0"
|
"eslint": "^9.23.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,6 +128,12 @@ CLASS zcl_abapgit_serialize DEFINITION
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_result) TYPE abap_bool.
|
VALUE(rv_result) TYPE abap_bool.
|
||||||
|
|
||||||
|
METHODS is_no_parallel
|
||||||
|
IMPORTING
|
||||||
|
!iv_object_type TYPE tadir-object
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_result) TYPE abap_bool.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -312,6 +318,21 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
ASSERT rv_processes >= 1.
|
ASSERT rv_processes >= 1.
|
||||||
|
|
||||||
|
" Avoid going over the maximum available user sessions
|
||||||
|
IF sy-batch IS INITIAL.
|
||||||
|
lv_available_sessions = zcl_abapgit_factory=>get_environment( )->get_available_user_sessions( ).
|
||||||
|
|
||||||
|
IF lv_available_sessions = 0.
|
||||||
|
" No available session -> disable parallel processing
|
||||||
|
rv_processes = 1.
|
||||||
|
ELSEIF rv_processes > lv_available_sessions.
|
||||||
|
rv_processes = lv_available_sessions.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ASSERT rv_processes >= 1.
|
||||||
|
|
||||||
|
" Exit setting has highest priority to change maximum sessions
|
||||||
li_exit = zcl_abapgit_exit=>get_instance( ).
|
li_exit = zcl_abapgit_exit=>get_instance( ).
|
||||||
li_exit->change_max_parallel_processes(
|
li_exit->change_max_parallel_processes(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
@ -319,17 +340,6 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
CHANGING
|
CHANGING
|
||||||
cv_max_processes = rv_processes ).
|
cv_max_processes = rv_processes ).
|
||||||
|
|
||||||
ASSERT rv_processes >= 1. " check exit above
|
|
||||||
|
|
||||||
" Avoid going over the maximum available user sessions
|
|
||||||
IF sy-batch IS INITIAL.
|
|
||||||
lv_available_sessions = zcl_abapgit_factory=>get_environment( )->get_available_user_sessions( ).
|
|
||||||
|
|
||||||
IF rv_processes > lv_available_sessions AND lv_available_sessions <> 0.
|
|
||||||
rv_processes = lv_available_sessions.
|
|
||||||
ENDIF.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ASSERT rv_processes >= 1.
|
ASSERT rv_processes >= 1.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -515,6 +525,18 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_no_parallel.
|
||||||
|
|
||||||
|
" Currently know object types that do not support parallel processing:
|
||||||
|
" ECTC/ECTD - ECATT Test Config/Data (see #7148)
|
||||||
|
" Should this list become longer, it should become a flag of the object type serializer
|
||||||
|
IF iv_object_type = 'ECTC' OR iv_object_type = 'ECTD'.
|
||||||
|
rv_result = abap_true.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD is_parallelization_possible.
|
METHOD is_parallelization_possible.
|
||||||
|
|
||||||
rv_result = boolc( zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false
|
rv_result = boolc( zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false
|
||||||
|
@ -684,7 +706,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
iv_count = lv_count )->start( ).
|
iv_count = lv_count )->start( ).
|
||||||
|
|
||||||
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
|
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
|
||||||
IF lv_max = 1.
|
IF lv_max = 1 OR is_no_parallel( <ls_tadir>-object ) = abap_true.
|
||||||
li_progress->show(
|
li_progress->show(
|
||||||
iv_current = sy-tabix
|
iv_current = sy-tabix
|
||||||
iv_text = |Serialize { <ls_tadir>-obj_name }, { lv_max } thread| ).
|
iv_text = |Serialize { <ls_tadir>-obj_name }, { lv_max } thread| ).
|
||||||
|
|
|
@ -84,7 +84,7 @@ CLASS ltd_environment DEFINITION FINAL FOR TESTING
|
||||||
DATA:
|
DATA:
|
||||||
mv_group TYPE rzlli_apcl,
|
mv_group TYPE rzlli_apcl,
|
||||||
mv_is_merged TYPE abap_bool,
|
mv_is_merged TYPE abap_bool,
|
||||||
mv_available_sessions TYPE i,
|
mv_available_sessions TYPE i VALUE 6, " system default
|
||||||
mv_free_work_processes TYPE i.
|
mv_free_work_processes TYPE i.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -395,10 +395,12 @@ CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LE
|
||||||
|
|
||||||
determine_max_processes_free FOR TESTING RAISING zcx_abapgit_exception,
|
determine_max_processes_free FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
det_max_processes_not_free FOR TESTING RAISING zcx_abapgit_exception,
|
det_max_processes_not_free FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
|
det_max_proc_none_available FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
det_max_proc_amdahls_law FOR TESTING RAISING zcx_abapgit_exception,
|
det_max_proc_amdahls_law FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
determine_max_processes_no_pp FOR TESTING RAISING zcx_abapgit_exception,
|
determine_max_processes_no_pp FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
determine_max_processes_merged FOR TESTING RAISING zcx_abapgit_exception,
|
determine_max_processes_merged FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
determine_max_processes_exit FOR TESTING RAISING zcx_abapgit_exception,
|
determine_max_proc_exit_lower FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
|
determine_max_proc_exit_higher FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
determine_max_processes_capped FOR TESTING RAISING zcx_abapgit_exception,
|
determine_max_processes_capped FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
force FOR TESTING RAISING zcx_abapgit_exception,
|
force FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
|
|
||||||
|
@ -460,19 +462,18 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD teardown.
|
METHOD teardown.
|
||||||
|
|
||||||
CLEAR: mo_cut->gv_max_processes.
|
CLEAR: mo_cut->gv_max_processes.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD determine_max_processes_free.
|
METHOD determine_max_processes_free.
|
||||||
|
|
||||||
given_parallel_proc_disabled( abap_false ).
|
given_parallel_proc_disabled( abap_false ).
|
||||||
given_is_merged( abap_false ).
|
given_is_merged( abap_false ).
|
||||||
given_free_work_processes( 10 ).
|
given_free_work_processes( 10 ).
|
||||||
|
given_available_sessions( 10 ).
|
||||||
|
|
||||||
when_determine_max_processes( ).
|
when_determine_max_processes( ).
|
||||||
|
|
||||||
|
@ -480,7 +481,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD det_max_processes_not_free.
|
METHOD det_max_processes_not_free.
|
||||||
|
|
||||||
given_parallel_proc_disabled( abap_false ).
|
given_parallel_proc_disabled( abap_false ).
|
||||||
|
@ -493,12 +493,25 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD det_max_proc_none_available.
|
||||||
|
|
||||||
|
given_parallel_proc_disabled( abap_false ).
|
||||||
|
given_is_merged( abap_false ).
|
||||||
|
given_free_work_processes( 10 ).
|
||||||
|
given_available_sessions( 0 ).
|
||||||
|
|
||||||
|
when_determine_max_processes( ).
|
||||||
|
|
||||||
|
then_we_shd_have_n_processes( 1 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD det_max_proc_amdahls_law.
|
METHOD det_max_proc_amdahls_law.
|
||||||
|
|
||||||
given_parallel_proc_disabled( abap_false ).
|
given_parallel_proc_disabled( abap_false ).
|
||||||
given_is_merged( abap_false ).
|
given_is_merged( abap_false ).
|
||||||
given_free_work_processes( 50 ).
|
given_free_work_processes( 50 ).
|
||||||
|
given_available_sessions( 50 ).
|
||||||
|
|
||||||
when_determine_max_processes( ).
|
when_determine_max_processes( ).
|
||||||
|
|
||||||
|
@ -506,7 +519,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD determine_max_processes_no_pp.
|
METHOD determine_max_processes_no_pp.
|
||||||
|
|
||||||
given_parallel_proc_disabled( abap_true ).
|
given_parallel_proc_disabled( abap_true ).
|
||||||
|
@ -518,7 +530,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD determine_max_processes_merged.
|
METHOD determine_max_processes_merged.
|
||||||
|
|
||||||
given_parallel_proc_disabled( abap_false ).
|
given_parallel_proc_disabled( abap_false ).
|
||||||
|
@ -530,8 +541,10 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD determine_max_proc_exit_lower.
|
||||||
|
|
||||||
METHOD determine_max_processes_exit.
|
given_free_work_processes( 26 ).
|
||||||
|
given_available_sessions( 11 ).
|
||||||
|
|
||||||
given_exit_chg_max_processes( 7 ).
|
given_exit_chg_max_processes( 7 ).
|
||||||
when_determine_max_processes( ).
|
when_determine_max_processes( ).
|
||||||
|
@ -539,6 +552,17 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD determine_max_proc_exit_higher.
|
||||||
|
|
||||||
|
given_free_work_processes( 20 ).
|
||||||
|
given_available_sessions( 15 ).
|
||||||
|
|
||||||
|
given_exit_chg_max_processes( 30 ).
|
||||||
|
when_determine_max_processes( ).
|
||||||
|
then_we_shd_have_n_processes( 30 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD determine_max_processes_capped.
|
METHOD determine_max_processes_capped.
|
||||||
|
|
||||||
given_parallel_proc_disabled( abap_false ).
|
given_parallel_proc_disabled( abap_false ).
|
||||||
|
@ -552,7 +576,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD force.
|
METHOD force.
|
||||||
|
|
||||||
when_determine_max_processes( abap_true ).
|
when_determine_max_processes( abap_true ).
|
||||||
|
@ -561,14 +584,12 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD given_parallel_proc_disabled.
|
METHOD given_parallel_proc_disabled.
|
||||||
|
|
||||||
mo_settings_double->set_parallel_proc_disabled( iv_parallel_proc_disabled ).
|
mo_settings_double->set_parallel_proc_disabled( iv_parallel_proc_disabled ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD given_is_merged.
|
METHOD given_is_merged.
|
||||||
|
|
||||||
mo_environment_double->set_is_merged( iv_is_merged ).
|
mo_environment_double->set_is_merged( iv_is_merged ).
|
||||||
|
@ -581,14 +602,12 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD given_free_work_processes.
|
METHOD given_free_work_processes.
|
||||||
|
|
||||||
mo_environment_double->set_free_work_processes( iv_free_work_processes ).
|
mo_environment_double->set_free_work_processes( iv_free_work_processes ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD when_determine_max_processes.
|
METHOD when_determine_max_processes.
|
||||||
|
|
||||||
mv_act_processes = mo_cut->determine_max_processes(
|
mv_act_processes = mo_cut->determine_max_processes(
|
||||||
|
@ -597,7 +616,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD then_we_shd_have_n_processes.
|
METHOD then_we_shd_have_n_processes.
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
@ -606,7 +624,6 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD given_exit_chg_max_processes.
|
METHOD given_exit_chg_max_processes.
|
||||||
|
|
||||||
mo_exit->set_max_parallel_processes( iv_max_processes ).
|
mo_exit->set_max_parallel_processes( iv_max_processes ).
|
||||||
|
@ -686,7 +703,6 @@ CLASS ltcl_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF lt_tadir.
|
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF lt_tadir.
|
||||||
|
|
||||||
|
|
||||||
APPEND INITIAL LINE TO lt_tadir ASSIGNING <ls_tadir>.
|
APPEND INITIAL LINE TO lt_tadir ASSIGNING <ls_tadir>.
|
||||||
<ls_tadir>-object = 'ABCD'.
|
<ls_tadir>-object = 'ABCD'.
|
||||||
<ls_tadir>-obj_name = 'OBJECT'.
|
<ls_tadir>-obj_name = 'OBJECT'.
|
||||||
|
@ -794,7 +810,6 @@ CLASS ltcl_i18n DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
||||||
setup,
|
setup,
|
||||||
test FOR TESTING RAISING zcx_abapgit_exception.
|
test FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -871,4 +886,5 @@ CLASS ltcl_i18n IMPLEMENTATION.
|
||||||
cl_abap_unit_assert=>assert_subrc( ).
|
cl_abap_unit_assert=>assert_subrc( ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user